如何实现在REST粗粒乐观锁?(How do you implement a coarse-grai

2019-07-19 05:27发布

我已经实现乐观锁定为具有由回传这是在找回通过对PUT调用一个版本号1对1映射到数据库表我的REST资源。 如果版本号在数据库中的时间之间改变,我做了GET和PUT,然后发生了乐观锁定异常。 很简单的设计。

现在,我怎么做同样映射到多个数据库表的复合REST资源呢? 我想不必传回多个版本字段(一个用于涉及所述复合资源的每个数据表)。 复合资源的简单的例子是/ FooBar的其中/ Foo和/酒吧是非复合资源。

基本上,我在寻找福勒的粗粒锁定模式的REST implemetation的例子: http://martinfowler.com/eaaCatalog/coarseGrainedLock.html

Answer 1:

这就是ETag头是专为。 实现它一个非常常见的方式是制作你的响应有效载荷,使得它的哈希值(它不必是安全的,只是低碰撞),然后使用该哈希值作为ETag的价值。 注意,这种方法是无知的多少资源参与产生的响应。

然后,客户端将接收到的ETag靠背在如果-匹配标头,所述服务器可用于检查该请求的新鲜度。



文章来源: How do you implement a coarse-grained optimistic lock in REST?