1

我是 Zend 框架和 MVC 类型编程的新手(虽然不是 PHP),我正在尝试使用 Zend 框架为我的服务器上的数据提供 API 访问。

我使用 Chris Danielson 的文章 ( http://www.chrisdanielson.com/2009/09/02/creating-a-php-rest-api-using-the-zend-framework/ ) 作为基础。

我想提供对以下格式的数据的访问:

(a) http://www.example.com/api/createevent      
    Data will be POSTed here, success will return an id, otherwise an 
    error message/code

(b) http://www.example.com/api/geteventdetails/1234     
    GET request will return data

(c) http://www.example.com/api/getregistrationdetails/1234  
    GET request will return data

(d) http://www.example.com/api/getregistrationdetails/1234/567  
    GET request will return data

问题:

  1. 有一个默认文件位于 \api\application\controllers\VersionController.php ,它可以处理以下类型的 URL:http://www.example.com/api/version。我是否应该在以下位置创建一个单独的文件:\api\application\controllers\GeteventdetailsController.php 来处理类型 (b) 的请求(并且每个类型的请求都有一个)?如果没有,我应该在哪里放置我的代码来处理这些多种请求类型?

  2. 如何获取 (b) 到 (d) 中传递的参数?

  3. 要执行 (b) 到 (d) 的请求,我需要从服务器的数据库中获取信息。我应该将执行实际 MySQL 查询的代码放在哪里?

4

1 回答 1

0

我在 ZF 中使用了很多路由,但没有在 Rest 实现中使用过,在您链接到的文档和教程中都使用了 - 我会尽力帮助您...

可能值得查看Rest 路由器的文档(大约在页面下方的 1/3) - 它解释说它将根据请求的方法自动为您创建路由;所以你的createeventgeteventdetails等命名格式不应该是必需的。

问题 1。

而不是创建文件

\api\application\controllers\GeteventdetailsController.php

我会创建文件

\api\application\controllers\EventsController.php

这将是一个控制器来处理所有事件操作,例如获取、发布、放置等。您的建议对于控制器来说太具体了,因为获取、放置等将在操作级别处理。

问题2。

文档中描述的路由向您展示了最终参数 (:id) 将分配给控制器中名为id.

因此,使用GET访问 URL /events/将在您的文件中调用indexAction()EventsController.php

使用GET访问 URL /events/99/将调用文件中的。您可以像这样从控制器访问此 IDgetAction()EventsController.php

$id = $this->getRequest()->getParam("id");

或者

$id = $this->getRequest()->id;

然后,您应该编写代码来查询数据库以获取事件列表或特定 ID。这让我们很好地...

问题 3。

与其将查询数据库事件的代码放入控制器,不如为数据库表和行创建模型。我建议使用 ZF 中现有的Zend_Db_RowZend_Tb_Table设置来执行此操作。这将确保您的应用程序/网站是 MVC。

将代码放在控制器中可能会阻碍以后的开发,例如当您稍后在另一个控制器中为事件编写注册表时。创建事件的逻辑将被复​​制,一次在新控制器中,一次在 Rest 控制器中。您最好将此逻辑集中到一个用于操作和查询事件的模型中。

我希望这会有所帮助!

于 2011-03-16T22:31:25.063 回答