AngularJS$resource对象不';是否提供幂等更新方法?
我真的在尽可能多地考虑这件事,但我很难做到这一点。也许我错过了显而易见的事情 给定一个典型的RESTAPI(具有幂等更新方法和创建方法): 如果使用以下URL创建标准资源:AngularJS$resource对象不';是否提供幂等更新方法?,angularjs,angular-resource,Angularjs,Angular Resource,我真的在尽可能多地考虑这件事,但我很难做到这一点。也许我错过了显而易见的事情 给定一个典型的RESTAPI(具有幂等更新方法和创建方法): 如果使用以下URL创建标准资源: Client = $resource("http://www.domain.com/api/clients/:id") 然后我自动获取(其中Client是$resource,Client是返回的实体): 我遇到的问题是默认情况下没有要保存的PUT方法(通常用于标识幂等更新) 我是否误解了什么,或者这是Angular API
Client = $resource("http://www.domain.com/api/clients/:id")
然后我自动获取(其中Client是$resource,Client是返回的实体):
我遇到的问题是默认情况下没有要保存的PUT
方法(通常用于标识幂等更新)
我是否误解了什么,或者这是Angular API中的一个缺陷?我希望$save()
使用PUT
而不是POST
。按照当前的结构,我必须创建自己的$update()
方法定义,然后依靠开发人员不要意外地使用$save()
方法
我的API结构是否有误?REST API是否应采用不同的结构?您只需在资源中指定方法,如:
app.factory('someFactory', ['$resource', function($resource) {
return $resource('/api/:id', {
id: '@id'
}, {
update: {
method: 'PUT'
},
get: {
method: 'GET'
}
});
}]);
但我完全同意$save是create而不是update的一个奇怪动词。看起来他通过扩展对象并检查id实现了双重保存功能。是的,我完全知道这一点。然而,这意味着我需要为遵循此模式的每个资源执行此操作。这还意味着我有一个无效的
$save()
方法(但我无法消除)。所以我忍不住想知道AngularJS是否/为什么默认情况下还没有这样做。由于AngularJS应该与最佳实践一起工作,等等,这让我进一步怀疑我的REST设计是否应该重新检查以使其更灵活/兼容/etc。谢谢-我也在想同样的事情,但非常惊讶的是,默认情况下它还不是Angular的一部分。你能编辑你的答案并添加你的评论给将来看这个的人吗?
Client.get()
Client.query()
Client.save()
client.$save()
client.$remove/delete()
app.factory('someFactory', ['$resource', function($resource) {
return $resource('/api/:id', {
id: '@id'
}, {
update: {
method: 'PUT'
},
get: {
method: 'GET'
}
});
}]);