[英]asp.net mvc and web api which is better Http POST or PUT
我有一個類型為asp.net mvc和web api的應用程序。 我對http post和http put有點困惑。 什么時候使用什么,各有利弊。 我已經瀏覽了很多博客,但沒有充分理由為什么設計。
使用POST
,您必須從頭開始創建全新的記錄。 使用PUT
,您必須更新數據庫中的現有記錄
這是PUT和POST之間的差異
`POST is Not idempotent`-->
一次又一次地運行POST操作意味着每次運行時都會創建新實例。
`PUT is Idempotent`-->
PUT是一次又一次地調用PUT的冪等操作將導致相同的結果。
所以POST不是冪等的,而PUT是冪等的。
`There is also PATCH` -->
當您只需要更新模型的少數屬性時使用補丁。換句話說,部分更新。
簡單地說(沒有雙關語):
POST
通常用於創建新對象。
PUT
通常用於更新現有對象
使用正確的HTTP謂詞允許您發布更清晰的API,並且無需在端點(url)中編碼意圖。 例如,比較:
使用正確的動詞:
GET api/user/12345
POST api/user/12345
PUT api/user/12345
DELETE api/user/12345
黑客端點:
GET api/user/12345
POST api/user/12345/create
POST api/user/12345/update
POST api/user/12345/delete
我認為使用PUT
等唯一的缺點是並非所有開發人員都熟悉它們,而且某些第三方軟件可能不支持它們,或者至少它可能不像使用更熟悉的動詞如GET
和POST
那么容易。
例如,幾周前我遇到一個問題,就是在它出現之前將代理放在API前面並且代理不支持HTTP PUT
動詞(可能是配置問題 - 但我們沒有有權訪問代理來修復它)所以我們不得不調整API並在最后一刻將其更改為POST
(這也意味着我們必須更改正在使用它的客戶端(移動應用程序))。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.