2017-08-03 72 views
0

我知道PUT是冪等的,但我怎樣才能以編程方式確保它?我必須滿足哪些條件來創建完全冪等端點?如何創建冪等端點

+0

你真的是指_idempotent_還是你的意思是_safe_(無副作用)?冪等僅僅意味着如果您在資源上調用_PUT_,則會得到相同的結果。您只需用新內容替換資源的內容,則結果應始終爲(例如)HTTP狀態碼200(只要資源存在)。 – andih

回答

1

從RESTful服務的角度來看,對於一個操作(或服務調用) 爲冪等,客戶端可以使相同呼叫反覆而產生 相同的結果。換句話說,製作多個相同的 請求與製作單個請求具有相同的效果。注意 雖然冪等操作在服務器上產生相同的結果(沒有 副作用),但響應本身可能並不相同(例如, 資源的狀態可能在請求之間改變)。

A PUT應該用請求主體中收到的新值更新資源。因此,無論是發送一次還是多次,服務器上的結果都不應該改變(例如,不同於POST,例如,更多請求會導致衝突錯誤或創建多個資源)。

+0

您必須注意_idempotent_和_safe_之間的區別。 _Idempotent_表示您可以根據需要經常調用相同的方法,您將得到相同的結果,但這並不意味着資源不會被修改。最好的例子是_delete_方法/ http動詞。 _POST_和_PATHCH_既不是_idempotent_也不是_safe_,而_PUT_和_DELETE_是_idempotent_,但* not * _safe_。 – andih