我希望有人告诉我他们是如何使用REST资源的自定义成员或集合操作来解决问题的,例如: PUT /users/:id/confirm
或PUT /kittens/pet_all
这显然是一项复杂的任务。要正确实现它将是困难的,因为在资源丰富的路由之外,没有假定的服务器的请求/响应类型或结构的合同。尽管如此,假设所有我想做的事情都是pet_all
我的小猫,无论结果如何,都必须采取行动,并且必须通过黑客攻击ajax请求。
请想一想小猫......
答案 0 :(得分:-1)
我过去做过这种方法的一种方法是覆盖适配器中的findQuery
方法并将哈希值传递给find
方法。这将完全跳过buildURL
方法。
例如,如果要获取嵌套在用户资源中的确认集合:
App.UserRoute = Em.Route.extend({
afterModel: function(model) {
promise = this.get('store').find('confirmation', userId: model.get('id'))
this.controllerFor('confirmations').set('model', promise)
}
});
App.ConfirmationAdapter = DS.RESTAdapter.extend({
findQuery: function(store, type, query) {
confirmationsUrl = this.host + '/users/' + query.userId + '/confirmations'
delete query.userId
return this.ajax(confirmationsUrl, 'GET', { data: query });
}
})
这应该让你开始弄清楚如何处理更新。