我找不到任何有用的东西。我正在尝试创建RESTful路由。这就是我希望我的路线看起来像:
`GET` routes to `RecipesController::api_index() //instead of RecipesController::index()`
`POST` routes to `RecipesController::api_add() //instead of RecipesController::add()`
`PUT` routes to `RecipesController::api_edit($id) //instead of RecipesController:edit($id)`
`DELETE` routes to `RecipesController::api_delete($id) //instead of RecipesController:delete($id)`
我不知道该怎么做,这是我到目前为止所做的:
Router::resourceMap(array(
array('prefix'=>'api', 'action' => 'index', 'method' => 'GET', 'id' => false),
array('prefix'=>'api', 'action' => 'view', 'method' => 'GET', 'id' => true),
array('prefix'=>'api', 'action' => 'add', 'method' => 'POST', 'id' => false),
array('prefix'=>'api', 'action' => 'edit', 'method' => 'PUT', 'id' => true),
array('prefix'=>'api', 'action' => 'delete', 'method' => 'DELETE', 'id' => true),
array('prefix'=>'api', 'action' => 'update', 'method' => 'POST', 'id' => true)
));
Router::mapResources('recipes', array('prefix'=>'api'));
在我core.php
我有以下内容:
Configure::write('Routing.prefixes', array('api'));
Cake返回:
404缺少Recepies :: api_1()
以下是我用的CakePHP文档
此外,非常感谢有关正确的RESTful API设计的任何其他建议! :)
答案 0 :(得分:4)
看起来你可以这样做
Router::mapResources('recipes', array('prefix'=>'api'));
这将为您提供预期的网址。您还必须定义前缀,例如@johhniedoe指出。
This是api doc,我从那里读取(它是v2.0,但是从v1.3开始工作),也许它会有所帮助。重要的部分是它所说的
'prefix' - 用于生成的路由的URL前缀。默认为 “/'.
选项。因此,如果您激活前缀并将其添加到mapResources
,则无需执行任何操作即可获得所需内容。如果您想要的路由是默认路由,则无需使用resourcesMap
或您定义的其他路由,mapResources
应自行处理所有路由。
修改强>
如果默认值需要覆盖
Router::resourceMap(array(
array('prefix'=>'api', 'action' => 'index', 'method' => 'GET', 'id' => false),
array('prefix'=>'api', 'action' => 'view', 'method' => 'GET', 'id' => true),
array('prefix'=>'api', 'action' => 'add', 'method' => 'POST', 'id' => false),
array('prefix'=>'api', 'action' => 'edit', 'method' => 'PUT', 'id' => true),
array('prefix'=>'api', 'action' => 'delete', 'method' => 'DELETE', 'id' => true),
array('prefix'=>'api', 'action' => 'update', 'method' => 'POST', 'id' => true)
));
Router::mapResources('recipes', array('prefix'=>'api'));
答案 1 :(得分:0)
在Config / core.php中:对我来说124(取决于你的版本)有前缀的定义,你可以实现你想要的。
Configure::write('Routing.prefixes', array('api'));
您可能还会发现此链接很有用:http://book.cakephp.org/2.0/en/development/routing.html#using-additional-conditions-when-matching-routes
有一个好的。