0

これについて役立つものは何も見つかりません。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 設計に関するその他の提案も大歓迎です! :)

4

2 に答える 2

4

こんなことができるらしい

Router::mapResources('recipes', array('prefix'=>'api'));

これにより、期待される URL が得られます。@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'));
于 2013-07-19T14:02:32.710 に答える
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

良いものを持っている。

于 2013-07-19T08:15:44.747 に答える