2016-03-02 172 views
0

我正在構建Web服務應用程序,並且正在尋找關於如何更新資源的建議。PUT或POST更新資源

user API

我有一個用戶終端,它允許創建,修改和數據庫中刪除用戶的能力。 我的問題涉及到用戶的更新。在表格中,我寫了一個關於API如何工作的模式以及我讀過的每個端點的描述。

existingEmailId的PUT和POST似乎做同樣的事情,因爲emailId是資源的實際ID。因此,對於這個端點是否適合創建一個端點,還是應該同時使用這兩個端點?

任何意見,將不勝感激。

回答

-1

POST應該用於插入新數據,而PUT應該用於更新。

http://www.restapitutorial.com/lessons/httpmethods.html

+0

我一直在談這個在SO上的其他答案:它說的是相反的。 http://stackoverflow.com/questions/630453/put-vs-post-in-rest – SJC

+0

似乎是對這個問題的分歧意見。 相比** **發送到/ email/some-email-id,即* *發送到/ email(例如)而不知道有問題的資源, *具有關於所討論的資源的知識,是最爲辛酸的。 –

0

PUT用於更新資源,PUT應該是冪等的。

1

POST和PUT方法之間的根本區別是 由封閉表示的不同意圖強調。 POST請求中的目標資源旨在根據資源本身的語義 處理 封閉表示,而PUT請求中的封閉表示被定義爲 ,以替換目標資源的狀態。因此,PUT 的意圖對於中間人來說是冪等的和可見的,儘管確切的 效果只能由原始服務器知道。

- RFC 7231

如果你能夠訪問所有以創建一個新用戶,包括任何相關的唯一ID所需的信息,那麼你應該更喜歡把完整的表示到服務器。我不會同時支持PUT和POST - 爲什麼有兩種方法可以做同樣的事情?如果您以後需要POST進行其他操作,該怎麼辦?

如果PUT導致新資源,則返回201 Created,如果PUT更新現有資源,則返回200 OK