Api 从Zend rest控制器获取参数,处理参数并将数据返回给控制器

Api 从Zend rest控制器获取参数,处理参数并将数据返回给控制器,api,zend-framework,rest,frameworks,controllers,Api,Zend Framework,Rest,Frameworks,Controllers,我正在开发一个restful zend API框架。问题是,当发布请求时,我不知道如何将来自控制器的数据放入单独的类中进行处理,并将处理后的输出返回给控制器。 i、 e实现以下putAction功能的最佳方法 public function putAction() { $resource = $this->_getParam('resource'); $this->view->resource = $resource;

我正在开发一个restful zend API框架。问题是,当发布请求时,我不知道如何将来自控制器的数据放入单独的类中进行处理,并将处理后的输出返回给控制器。 i、 e实现以下putAction功能的最佳方法

public function putAction()
    {     
        $resource = $this->_getParam('resource');
        $this->view->resource = $resource;
        //$requests = $this->getRequest();

        switch (true) {
            case (strstr($resource, 'account')):
               $response = $this -> do_post_request($requests);
               $resource = "You are accessing account";
                break;
            case (strstr($resource, 'property')):
                           $response = $this -> do_post_request($requests);
               $resource = "You are accessing  property";
                break;
        case (strstr($resource, 'autos')):
                           $response = $this -> do_post_request($requests);
               $resource = "You are accessing  autos";
                break;
            default:
                 $resource = "The specified resource is not available please check the api manual for available resources";
                break;
        }
        $this->view->message = $response;
        $this->_response->ok(); 
    }
其中,响应在被其他类中的其他函数处理后收集。 如果我使用:$response=$this->do\u post\u request($requests);
其他类的结构如何处理请求并生成响应?标准做法是为每个资源配备一个单独的控制器。假设您有一个名为api的模块,其名称空间为“api”,您已在application.ini文件中设置,如下所示:

autoloadernamespaces = "Api_"
然后,在api模块文件夹中应该有3个控制器,如下所示:

class Api_AccountController extends Zend_Rest_Controller {
    public function init()
    {
    }
    public function getAction()
    {
    }
    public function postAction()
    {
    }
    public function putAction()
    {
    }
    public function deleteAction()
    {
    }
}
其他的显然是Api_自动控制器、Api_属性控制器。然后,您必须告诉Zend用于Rest请求的模块。在application.ini文件中:

routes.api.type = Zend_Rest_Route
routes.api.defaults.module = api
routes.api.defaults.controller = api
routes.api.api = auto,account,property
Zend现在将自动响应GET等请求 其中:id是汽车的唯一标识符。这不是Rails,因此您当然要负责在Api_AutoContoller的getAction()方法中编写代码,以查询数据库并返回有关id:id的auto的信息,等等。如果您需要向其中一个路由传递其他参数,您可以执行以下操作之一:

(1) 使id参数显式: [ApplicationURL]/auto/id/123/color/blue (2) 在请求正文中包含其他参数,或附加到URL: [ApplicationURL]/auto/123?颜色=蓝色

注意:你不必把所有这些都塞进一个单独的模块中。如果您的应用程序小而简单,那么为Api使用单独的模块可能没有意义。但这是我在工作项目中成功使用的设置