不嚴(yán)謹(jǐn)?shù)膶?shí)現(xiàn),或者缺少并發(fā)控制的?PUT
?和?PATCH
?請(qǐng)求可能導(dǎo)致 “更新丟失”。這個(gè)時(shí)候可以使用Last-Modified
?和/或?ETag
?頭來(lái)實(shí)現(xiàn)條件請(qǐng)求,支持樂(lè)觀并發(fā)控制。
下文只考慮使用?PUT
?和?PATCH
?方法更新資源的情況。
If-Unmodified-Since
?或者?If-Match
?頭,那就返回狀態(tài)碼?403 Forbidden
?,在響應(yīng)正文中解釋為何返回該狀態(tài)碼If-Unmodified-Since
?或者?If-Match
?頭與服務(wù)器記錄的實(shí)際修改時(shí)間或?ETag
?值不匹配的時(shí)候,返回狀態(tài)碼?412 Precondition Failed
If-Unmodified-Since
?或者?If-Match
?頭與服務(wù)器記錄的實(shí)際修改時(shí)間或?ETag
?的歷史值匹配,但資源已經(jīng)被修改過(guò)的時(shí)候,返回狀態(tài)碼?409 Conflict
200 OK
?或者?204 No Content
?,并且包含更新過(guò)的?Last-Modified
?和/或?ETag
?頭,同時(shí)包含?Content-Location
?頭,其值為更新后的資源 URI相關(guān)資料:
更多建議: