2016-09-30 179 views

回答

3

我不認爲創建/更新區別是決定PUT和POST之間的最佳方式。這由rest cook book備份:

HTTP方法POST和PUT不是CRUD創建和更新的HTTP等效項。

我建議您閱讀那篇文章,但由於有些評論曾表示他們不明白,我會嘗試以另一種方式解釋。

  1. 問問自己,如果您在PUT或POST請求後直接向同一URL發出GET請求,會發生什麼情況。如果你找回了你剛剛PUT或POST的相同數據,那麼它可能應該是一個PUT請求。如果你必須去一個不同的URL來查看數據,那麼它可能應該是一個POST(並且你可以使用響應中的Location標題告訴客戶端可以通過GET請求查看POST數據的位置)。
  2. 冪等性比創建/更新或確實是否可以向同一個URL發出GET請求更重要。 PUT請求是冪等的(多次重複相同的請求與創建一次的效果相同)而POST請求不是(多次執行相同的請求與執行一次不同)。如果您的請求每次都有附加副作用,那麼您必須使用POST。

這聽起來像您的請求是冪等的,並且您知道資源將在前面生活的確切URL,所以我認爲您應該使用PUT。

正如其餘的烹飪書籍文章中所表達的,在資源創建和更新中使用PUT是完全正確的。

如果您可以使用PUT,那麼您應該這樣做,因爲它可以爲客戶端提供有關該服務的更多信息。例如,對於PUT請求,容錯,彈性和分配要容易得多,因爲您不關心相同的請求是否多次發生。構建POST請求的容錯應用程序可能會有點棘手,因爲您必須確保請求只發生一次。執行重試邏輯也比PUT更容易,因爲你不關心請求失敗的地方,你可以重新嘗試,因爲冪等性。

對POST執行重試有點困難,因爲客戶端不確定請求是否成功,並且必須假定發出多個POST請求可能會造成損壞。

0

使用PUT api調用。 POST主要用於創建數據。

+0

但是,數據也可以創建,或者是「確定」使用PUT來創建和更新嗎? – user2636197

+0

如果是這種情況,那麼你可以使用POST。 –

相關問題