乐观锁定:使用其他资源修改资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乐观锁定:使用其他资源修改资源相关的知识,希望对你有一定的参考价值。

样本用例:用户使用实际的产品列表(资源LP /资源列表P)修改烹饪配方(资源C)。资源C和LP都可以由其他用户同时更改。列表(P)中的任何产品也可以更改。如果这些资源中的任何一个已被更改,则客户端应具有相应的错误以响应修改PUT。

问题:确保用户在更改配方时使用未更改的数据的最佳做法是什么?我们可以使用ETag(RFC 7232)方法来实施并发访问规则吗?如果没有,我们如何修改API结构或使用其他方法来实现它?我的问题是如何使用来自多个资源的ETag来强制执行RFC。

我理解在这种特殊情况下我们可以使用POST逐个添加产品等。但在现实生活中,它可能是复杂的情况,例如,考虑来自多个集合或资源的构建器。

答案

是的,请这样做!您需要将作为请求的一部分(在If-Match标头中)传递的ETag与服务器当前表示的ETag进行比较。如果匹配,请继续并更新该值。如果他们不这样做,返回412 Precondition Failed

以上是关于乐观锁定:使用其他资源修改资源的主要内容,如果未能解决你的问题,请参考以下文章

悲观锁和乐观锁,啥情况

java中悲观锁和乐观锁的区别

悲观锁和乐观锁

redis用的是悲观锁还是乐观锁?

线程基础四 使用Monitor类锁定资源

共享锁,排他锁,乐观锁,悲观锁