使用Zend框架,我正在为以下模式组织的资源构建REST api的路由:
> http://example.org/users/
> http://example.org/users/234
> http://example.org/users/234/items
> http://example.org/users/234/items/34
如何使用Zend_Rest_Route设置?
以下是我在bootstrap.PHP文件中为用户资源(users /:id)设置路由的方法:
$this->bootstrap('frontController'); $frontController = Zend_Controller_Front::getInstance(); $restRoute = new Zend_Rest_Route($frontController); $frontController->getRouter()->addRoute('default',$restRoute);
[据我所知,这是捕获所有路由,所以用户/ 324 / items / 34将导致参数设置为id = 324和items = 34,并且所有内容都将映射到Users(前端模块)模型.从那里我想我可以只是测试项目参数,并在获取请求上检索用户#324的项目#34.]< ===我刚刚检查它,似乎没有这样工作: 处理/用户/ 234 / items / 43和
var_dump($this->_getAllParams());
array(4) { ["controller"]=> string(5) "users" ["action"]=> string(3) "get" [2]=> string(5) "items" ["module"]=> string(7) "default"] }
不知怎的,两个ids都丢了
任何人?
AFAIK,Zend_Rest_Route中没有功能,可以让你做这样的事情.有一个建议,但不确定何时实施.您可以在Bootstrap中添加此设置来设置此自定义路由.
$front = $this->getResource('FrontController'); $testRoute = new Zend_Controller_Router_Route( 'users/:user_id/items/:item_id',array( 'controller' => 'users','action' => 'item','module' => 'default' ) ); $front->getRouter()->addRoute('test',$testRoute);
user_id或item_id在UsersController中的itemAction中可用作参数:
$user_id = $this->_request->getParam('user_id');