假设我想要实现一种乐观锁定策略,并使用ETags指示最新的资源状态。这意味着当客户端进行更新时,客户端将使用
根据HTTP规范,如果提供给
然而,从语义上讲,
在未能匹配
If-Match
标头进行PUT
请求。根据HTTP规范,如果提供给
If-Match
标头的ETag与资源当前状态不匹配,则服务器必须返回412 Precondition failed
。然而,从语义上讲,
409 Conflict
似乎更接近我想要表达的含义,尤其是它提供了响应中要包含什么信息的指导。在未能匹配
If-Match
标头中提供的ETag时,返回409
是否非常错误?
200
的结果。实际上,客户端强制执行 PUT 并覆盖服务器上的资源状态甚至可能是一个有效的情况。 - Oliver Drotbohm