我的 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
时,我看到与上面相同的内容,但还有第二个 API 请求/v1/carts
。除了/v1/carts
URL 之外,这一切都很好。我需要它/v1/place/:place_uuid/cart
我尝试将 buildURL 与 Cart 模型的自定义适配器一起使用。但没有运气。我无法在下面的任何地方访问 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 似乎更喜欢,但有点棘手,因为我不在后端工作)。
任何建议表示赞赏。