Api 从Zend rest控制器获取参数,处理参数并将数据返回给控制器
我正在开发一个restful zend API框架。问题是,当发布请求时,我不知道如何将来自控制器的数据放入单独的类中进行处理,并将处理后的输出返回给控制器。 i、 e实现以下putAction功能的最佳方法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;
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使用单独的模块可能没有意义。但这是我在工作项目中成功使用的设置