我的API的一部分處理API端點的設置如下:灰燼JS嵌套資源URL
/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
時,我看到了與上面相同的內容,但也有第二個API請求/v1/carts
。除了/v1/carts
URL之外,這一切都很好。我需要它/v1/place/:place_uuid/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似乎更喜歡,但有點棘手,因爲我不在後臺工作)。
任何意見表示讚賞。
這似乎是一個問題依然。我很樂意忽視這個世界,假裝這些API不存在 - 但它們確實存在。那麼,我唯一的解決方案是切換框架,還是有推薦的黑客來規避行爲? – shredding 2014-09-13 06:37:49