私のAPIの一部は次のように設定されています:
/v1/place/:place_uuid
- 場所を取得する
/v1/place/:place_uuid/cart
- その場所に関連付けられたショッピング カート オブジェクトを取得する
ルートは正しく設定されていますが (以下を参照)、Ember によって行われた API リクエストが自分のものと一致しません。
App.Router.map(function() {
this.resource('place', { path: '/:place_uuid' }, function() {
this.resource('category', { path: '/:category_uuid' }, function() {
this.resource('product', { path: '/:product_uuid' });
});
this.resource('cart', { path: '/cart' });
});
});
ブラウザーに読み込むと、正しい/:place_uuid
API 要求が表示されます。/v1/place/:place_uuid
返されたオブジェクトでルートがレンダリングされます。
ブラウザに読み込む/:place_uuid/cart
と、上記と同じだけでなく、 への 2 番目の API リクエストも表示され/v1/carts
ます。/v1/carts
これは、 URLを除いてすべて問題ありません。私はそれが必要です/v1/place/:place_uuid/cart
Cart モデル用のカスタム アダプターで buildURL を使用しようとしましたが、うまくいきませんでした。以下の place_uuid にアクセスできないため、挿入できません。
cartAdapter = App.Adapter.extend({
buildURL: function(record, suffix) {
console.log(record); // just a string.
var url = [this.url];
url.push('places');
url.push(place_uuid); // if only I had access to place_uuid I could inject it here
url.push('cart');
return url.join("/");
}
});
App.Store.registerAdapter('App.Cart', cartAdapter);
元の API エンドポイントを使用できれば素晴らしいと思います。エンドポイントを変更する別のオプションがあると思います/v1/carts?place_uuid=:place_uuid
(Ember はこれを好むようですが、バックエンドで作業していないので少し注意が必要です)。
アドバイスをいただければ幸いです。