Restangular中的RESTful乐观锁定

时间:2015-06-16 14:10:52

标签: javascript rest restangular etag optimistic-locking

我有一个restful api,客户端首先从资源

加载一组实体
GET http://wherever/api/tasks

然后想要从该集合中删除特定任务

DELETE http://wherever/api/tasks/42

为了防止意外删除并发更新,只有在实体未加载后才进行修改,才能成功删除。我们想用乐观锁定来解决这个问题。

如何通过REST API传递当前/预期的版本?

Apparently,RESTful最佳实践是通过ETag传递版本(可能是为了利用与HTTP缓存的协同作用),但是如果实体从不同的URL加载而不是将被删除,我该怎么做呢?从? (我想避免为每个单独的任务发布GET,因为找到任务集合与查找其状态一样昂贵)

我们在客户端使用Restangular,在服务器端使用Jersey。

1 个答案:

答案 0 :(得分:1)

根据this issue,您的API必须将eTag作为收集中返回对象的属性发送,并在收到响应时将其附加到元素的restangularEtag属性。