Php 使用Zend_REST_控制器提供REST API访问时正确的代码结构

Php 使用Zend_REST_控制器提供REST API访问时正确的代码结构,php,web-services,zend-framework,zend-rest,Php,Web Services,Zend Framework,Zend Rest,我不熟悉Zend框架和MVC类型的编程(但不是PHP),我正在尝试使用Zend框架提供对服务器上数据的API访问 我以Chris Danielson的文章()为基础 我希望提供以下格式的数据访问: (a) http://www.example.com/api/createevent Data will be POSTed here, success will return an id, otherwise an error message/code (b) htt

我不熟悉Zend框架和MVC类型的编程(但不是PHP),我正在尝试使用Zend框架提供对服务器上数据的API访问

我以Chris Danielson的文章()为基础

我希望提供以下格式的数据访问:

(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,用于处理类型为的URL。我是否应该在:\api\application\controllers\geteventdetailscocontroller.php创建一个单独的文件来处理(b)类型的请求(每种请求一个)?如果不是,我应该将代码放在哪里来处理这些多个请求类型

  • 如何获得(b)到(d)中传递的参数

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


  • 我在ZF中使用了很多routes,但在Rest实现中没有使用,在文档和您链接到的教程中,我会尽全力帮助您

    这可能是值得一看的文件为(约1/3页下来)-它解释说,它将自动为您创建路由的基础上的方法的要求;因此,不需要createevent、geteventdetails等的命名格式

    问题1.

    而不是创建文件

    \api\application\Controller\GeteventdetailsController.php

    我会创建这个文件

    \api\application\Controller\EventsController.php

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

    问题2.

    文档中描述的路线显示,最终参数(:id)将分配给控制器中名为
    id
    的参数

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

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

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

    然后,您应该编写代码来查询数据库中的事件列表或特定id

    问题3.

    您应该为数据库表和行创建模型,而不是将查询数据库事件的代码放入控制器中。我建议使用ZF中的现有设置来实现这一点。这将确保您的应用程序/网站是MVC

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


    我希望这有帮助

    谢谢大家!!这确实澄清了很多事情。我仍然对如何在一个控制器内处理不同的请求,以便同时处理诸如和之类的请求感到困惑。。。我已经选择使用不同的控制器暂时,并将复古适合他们以后如有必要。
    $id = $this->getRequest()->id;