我真的想尽可能地绕过这个,但是这样做非常困难。也许我错过了显而易见的事情。
给定典型的REST API(具有幂等更新方法和创建方法):
http://www.domain.com/api/clients GET // returns all clients
http://www.domain.com/api/clients POST // create a new client
http://www.domain.com/api/clients/:id GET // returns single client
http://www.domain.com/api/clients/:id PUT // updates a single client - idempotent
http://www.domain.com/api/clients/:id DELETE // delete single client
如果我使用以下网址创建标准资源:
Client = $resource("http://www.domain.com/api/clients/:id")
然后我自动获取(客户端是$资源,客户端是返回的实体):
Client.get()
Client.query()
Client.save()
client.$save()
client.$remove/delete()
我遇到的问题是默认情况下没有PUT
方法可以保存(通常用于识别幂等更新)。
我是否误解了某些内容,或者这是Angular API的缺陷?我希望$save()
使用PUT
而不是POST
。它当前的结构方式,我必须创建自己的$update()
方法定义,然后依赖开发人员不要意外使用$save()
方法。
我是否错误地构建了我的API? REST API的结构应该不同吗?
答案 0 :(得分:2)
您可以在资源中指定方法,如:
app.factory('someFactory', ['$resource', function($resource) {
return $resource('/api/:id', {
id: '@id'
}, {
update: {
method: 'PUT'
},
get: {
method: 'GET'
}
});
}]);
但我完全同意$ save是一个奇怪的动词,而不是更新。 This guy也是如此,看起来他通过简单地扩展对象并检查id来实现双重目的。