[英]CakePHP restful routes
我找不到關於此的任何有用信息。 我正在嘗試創建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設計的任何其他建議也將不勝感激! :)
看起來你可以做到
Router::mapResources('recipes', array('prefix'=>'api'));
這將為您提供預期的網址。 您還必須定義前綴,就像@johhniedoe指出的那樣。
這是我從中讀取的api文檔(適用於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'));
對我來說,在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
祝你有個好的一天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.