我有一个REST-ful服务,它使用ETags和If-Match标头来控制更新。
如果客户端使用If-Match标头提交条件请求,并且ETag过时,我将返回412 Precondition Failed,这似乎是ETag不匹配的推荐方法。
但是如果客户端没有If- *标头提交怎么办?我对412的理解是它适用于客户端的前提条件。由于客户端未提交If-Match标头,因此没有客户端先决条件。但是如果我想要If-Match,我应该使用什么样的响应?
到目前为止,我的想法可能是400 Bad Request或409 Conflict。有没有最好的做法?
答案 0 :(得分:1)
我认为代码400
有点普遍但可以应用。在这种情况下,您需要在响应内容中提供有关问题的更多详细信息。
IMO,如果与资源的当前状态发生冲突,则应使用代码409
。我认为在您不使用标题ETag
和If-*
的情况下自行实施optimitic锁定的情况更多。
我看到代码428
(前置条件要求)似乎符合您的需求。
以下页面可为您提供更多详细信息:http://www.restapitutorial.com/httpstatuscodes.html。
希望它可以帮到你, 亨利