示例用例:用户使用实际的产品列表(资源LP /资源列表P)修改烹饪食谱(资源C)。其他用户可以同时更改资源C和LP。列表(P)中的任何产品也可能会更改。如果这些资源中的任何一个已更改,则客户端应具有相应的错误以响应修改PUT。
问题:什么是确保用户更改配方时使用不变数据的最佳实践?我们可以使用ETag(RFC 7232)方法来强制执行并发访问规则吗?如果不是,我们如何修改API结构或使用其他方法来实现它?我的问题是如何使用多个资源中的ETag来实施RFC。
我知道,在这种特殊情况下,我们可以使用POST逐个添加产品等。但是在现实生活中,情况可能很复杂,例如,请考虑来自多个集合或资源的构建器。 / p>
答案 0 :(得分:0)
是的,请这样做!您需要将在请求中传递的ETag(在If-Match
标头中)与服务器当前表示形式的ETag进行比较。如果它们匹配,请继续更新该值。如果没有,则返回412 Precondition Failed
。