我構建了一個API,其中客戶端將使服務器更新某個實體。什麼HTTP響應代碼適用於陳舊對象?
例如,客戶端會告訴服務器「更新」建築物的名稱。
爲了處理多個用戶試圖更改相同的實體,每個用戶(客戶端)應該隨其更新請求一起發送實體的版本,因爲它從服務器獲取它。
這樣,如果客戶端1已經在客戶端2之前更新了建築物,則服務器將能夠告訴客戶端2他的更新請求失敗,因爲他嘗試更新的建築物不是最新的。
我的問題是,在這種情況下服務器應該給出的正確響應代碼是什麼?
我構建了一個API,其中客戶端將使服務器更新某個實體。什麼HTTP響應代碼適用於陳舊對象?
例如,客戶端會告訴服務器「更新」建築物的名稱。
爲了處理多個用戶試圖更改相同的實體,每個用戶(客戶端)應該隨其更新請求一起發送實體的版本,因爲它從服務器獲取它。
這樣,如果客戶端1已經在客戶端2之前更新了建築物,則服務器將能夠告訴客戶端2他的更新請求失敗,因爲他嘗試更新的建築物不是最新的。
我的問題是,在這種情況下服務器應該給出的正確響應代碼是什麼?
在這種情況下,服務器應回覆412 Precondition Failed
狀態碼。
它通常適用於以下標頭(與請求一起發送):
服務器檢查上面提到的標頭的值,如果與匹配,則允許客戶端修改資源,否則412
應該是回。
所以A
想編輯C
與ETag
等於10
。服務器接受該請求,編輯C
計算新的ETag
例如11
併發回資源。現在,如果B
想要編輯C
而ETag
等於10
它將接收412. B
應該同步資源C
並嘗試再次編輯它。
是409選項嗎?當然是喜歡它。 –
我的答案能解決問題嗎? – Opal