簡體   English   中英

我應該使用發布或放置來編輯數據庫中的人員,又應該使用哪個添加新人員?

[英]Should I use Post or Put to edit a person in a database and which should I use to add a new person?

所以這是現在的方法:

POST person/personId/edit
https://api.example.com/*key*/person/*personId*/edit?FName=Blah

我希望這可以將personId的人的名字更改為Blah。

如果我需要添加一個人,我會說:

PUT person/create
https://api.example.com/*key*/person/create

它將添加一個具有新personId的人員。

我對POST和PUT的解釋一直是:

POST-服務器將收到一個實體,該實體可用於執行操作或創建資源。 如果端點的意圖是創建資源,則POST將始終創建一個NEW資源。 在任何情況下,每個POST都將被處理而不考慮資源的狀態。 您只是將信息發布到服務器上以便對其進行操作。

例:

  • 想象一下將向用戶的手機發送消息的Web服務。 POST可以用於向服務器提供可能不適用於GET的必要信息。 請求有效負載將包含此信息。 沒有在服務器上創建任何資源,因此該操作返回200 OK,表明該操作已成功完成。 該響應還可以包括包含來自服務器操作的信息的主體。
  • 想象一下一個創建票證的Web服務,該票證發布在公告板上。 POST可能包含發布該帖子所需的信息。 該信息將保留在服務器上,並返回201 Created(創建201)(可能還包含一個包含用戶ID的響應正文,或者是由創建產生的更完整的對象)。 在所有情況下,將某些內容發布到此端點時,都會創建一個新票證。

PUT-服務器將收到一個旨在創建或替換資源的實體(例如,具有ID)。 如果資源已經存在,則將其替換為請求中的資源,否則將創建一個新資源。 在所有情況下,某些東西都會保留在服務器上。 必須提供一種唯一標識實體的方法。 換句話說,客戶端是創建ID的客戶端,因為如果需要創建實體,則將使用該ID。 我認識的大多數人都為這個現實而掙扎。

例:

  • Web服務從客戶端接收包含用戶信息的有效負載。 期望用戶將被保存。 服務器將檢查該用戶是否存在。 如果是這樣,它將通過請求提供的新資源替換用戶(全部)來更新該用戶,並返回200 OK或204 No Content。 如果不存在,它將創建它並返回201 Created。

一般約定通常為:

GET    => READ
POST   => CREATE
DELETE => DELETE
PUT    => UPDATE

我可以看到的區別是您還使用了不同的URI,最常用的是單個資源URI。 但是,無論如何這值得商de,這取決於您的喜好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM