簡體   English   中英

CakePHP寧靜的路線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM