A PUT
請求可以有很多結果,我想知道哪個狀態代碼對每個請求都是最好的。PUT的HTTP狀態代碼
說我想創建一個新的資源,所以我做這樣的事情:
PUT http://example.com/resources/resource-1
而且由於新的資源已創建我會得到一個HTTP 201
。
現在我想更新這個資源,所以我做了同樣的要求,以新的內容:
PUT http://example.com/resources/resource-1
我也得到HTTP 200
或HTTP 204
,因爲資源已被更新。但是如果我再次發送相同內容的請求,該怎麼辦?即使沒有更新,服務器是否應該返回HTTP 200
或HTTP 204
?
我知道,HTTP 200
和HTTP 204
都只是表示請求已成功處理,即使數據不改變請求仍然可以(和應該)仍然可以成功處理。但是有沒有辦法告訴客戶端請求已經成功處理,但服務器端沒有任何改變?如果有,是否應該用於PUT
請求? PUT
是冪等性的,根據服務器端的實際處理情況是否應該返回不同的狀態(只要在這個處理過程中沒有錯誤發生)?
如果資源在第一個PUT請求中返回201,但在後續請求中返回200或204,那麼它是否會違反冪等性(對於PUT是必需的)? – Ray
@ Ray no,因爲idempotence是關於server_上的結果,或者更具體地說是由請求URL標識的資源的字節內容,而不是關於響應消息的內容。服務器上的結果在相同資源的連續PUT上不會更改。 :)請看例如:[_「請注意,雖然冪等操作在服務器上產生相同的結果(無副作用),但響應本身可能不一樣(例如資源狀態可能會在請求之間改變)」_](http ://www.restapitutorial.com/lessons/idempotency.html)。 – CodeCaster
呃......感謝您的澄清 - 完全有道理。 – Ray