我是Zend Frameworks和MVC类型编程的新手(虽然不是PHP),我正在尝试使用Zend Framework为我的服务器上的数据提供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
问题:
默认文件位于\ api \ application \ controllers \ VersionController.php,可以处理类型为http://www.example.com/api/version的网址。我应该创建位于以下位置的单独文件:\ api \ application \ controllers \ GeteventdetailsController.php,它处理类型(b)的请求(以及每种请求类型的请求)?如果没有,我应该在哪里放置我的代码来处理这些多种请求类型?
如何获取(b)至(d)中传递的参数?
要执行请求(b)到(d),我需要从服务器的数据库中获取信息。我应该在哪里放置执行MySQL查询的代码?
答案 0 :(得分:0)
我在ZF中使用了很多路线,但是没有使用Rest实现,已经查阅了文档和你链接的教程 - 我会尽力帮助你......
可能值得查看Rest router的文档(约为页面的1/3) - 它解释了它会根据请求的方法自动为您创建路径;所以不应该需要 createevent , geteventdetails 等的命名格式。
问题1。
而不是创建文件
\ API \应用\控制器\ GeteventdetailsController.php
我要创建文件
\ API \应用\控制器\ EventsController.php
这将是一个控制器来处理所有事件操作,包括获取,发布,推送等。您的建议对于控制器来说太具体了,因为get,put等将在操作级别处理。
问题2。
文档中描述的路径向您显示最终参数(:id)将分配给名为id
的控制器中的参数。
因此,使用 GET 访问网址 / events / 会调用indexAction()
文件中的EventsController.php
使用 GET 访问网址 / events / 99 / 将调用getAction()
文件中的EventsController.php
。您可以像这样
$id = $this->getRequest()->getParam("id");
OR
$id = $this->getRequest()->id;
然后,您应该编写代码来查询数据库以查找事件列表或特定ID。这让我们很满意......
问题3。
您应该为数据库表和行创建模型,而不是将用于查询事件数据库的代码放入控制器。我建议使用ZF中的现有设置Zend_Db_Row和Zend_Tb_Table来执行此操作。这将确保您的应用程序/网站是MVC。
将代码置于控制器内部可能会妨碍以后的开发,例如,当您在以后的另一个控制器中为事件编写注册表单时。创建事件的逻辑将被复制,一次在新控制器中,一次在Rest控制器中。您最好将此逻辑集中到用于操作和查询事件的模型中。
我希望有所帮助!
答案 1 :(得分:0)