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

问题描述 投票:0回答:1

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

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

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

rest etag
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.