私は Cakephp JSON REST API に取り組んでいます -
http://book.cakephp.org/2.0/en/development/rest.htmlの REST チュートリアルに従い、Chrome 拡張機能「Advanced REST Client」を使用してすべてをテストしています。
期待どおりに機能させることができる唯一のルートは、GET リクエストを介した index() です。これにより、テスト データの配列が返されます (期待どおり)。
新しいレコードを作成しようとして POST すると、404 が返されます。同様に、ID (36 文字の UUID フィールド) でレシピの GET リクエストを試行するために、いくつかのテスト データを DB に追加し、リクエストはインデックスにルーティングされます。 () 関数。
単純な get 要求以外を実行しようとすると、次の応答が返されます。
{
code: 404
url: "/users/d8d9701e-2f6e-11e3-af16-2513f388d17e"
name: "Action UsersController::d8d9701e-2f6e-11e3-af16-2513f388d17e() could not be found."
}
ここでのリクエストは users/d8d9701e-2f6e-11e3-af16-2513f388d17e への GET です。
私のroutes.phpファイルでは:
Router::resourceMap(array(
array('action' => 'index', 'method' => 'GET', 'id' => false),
array('action' => 'view', 'method' => 'GET', 'id' => true),
array('action' => 'add', 'method' => 'POST', 'id' => false),
array('action' => 'edit', 'method' => 'PUT', 'id' => true),
array('action' => 'delete', 'method' => 'DELETE', 'id' => true),
array('action' => 'update', 'method' => 'POST', 'id' => true)
));
Router::mapResources('users');
Router::parseExtensions('json');
私のUsersController.phpは次のようになります: http://pastebin.com/bDxRLbTP
注: コメントされたアクセス コントロール ルールは、私の問題には何の影響もないようです。制御ルールを使用して、または使用せずに試してみましたが、100% 確実ではありませんが、いずれにせよ適切な場所に存在します。しかし、CORSの問題が原因でPOSTが機能していないと思いました。ただし、特定のレコードを見つけようとするときの GET の問題については説明しません。
チュートリアルによると、私は Router::resoureMap 関数を実際に必要としないように感じますが、念のためにそれを投げました。また、 Router::mapResources 呼び出しの下に配置しようとしましたが、チュートリアルでは次のように述べています。
「デフォルトのリソース マップを上書きすることにより、今後 mapResources() を呼び出すと、新しい値が使用されます。」
したがって、 mapResources() を呼び出す前に呼び出す必要があると確信しています
ありがとう!