第六篇 常用請求協議之post put patch 總結


[轉]https://blog.csdn.net/sshfl_csdn     感謝願意總結分享的人,thanks

idempotent 冪等的

如果一個方法重復執行多次,產生的效果是一樣的,那就是idempotent的;
idempotent的意思是如果相同的操作再執行第二遍第三遍,產生結果還是一樣的。

POST 方法

用來創建一個子資源,如 /api/users,會在users下面創建一個user,如users/1;
POST方法不是冪等的,多次執行,將導致多條相同的用戶被創建(users/1,users/2 ...
而這些用戶除了自增長id外有着相同的數據,除非你的系統實現了額外的數據唯一性檢查)

PUT 方法

PUT比較正確的定義是 Replace (Create or Update),
例如 PUT /items/1 的意思是替換 /items/1 ,如果已經存在就替換,沒有就新增;
因此,PUT方法一般會用來更新一個已知資源,除非在創建前,你完全知道自己要創建的對象的URI

Post 與 Put 區別

在HTTP中,PUT被定義為idempotent的方法;
POST則不是,這是一個很重要的區別

舉例說明:
POST /api/articles
PUT /gists/id/stars
如果產生兩個“資源”,就說明這個服務不是idempotent(冪等的),因為多次使用產生了副作用---應該使用POST方法;
如果后一個請求把第一個請求**覆蓋**掉了,那這個服務就是idempotent的 ---應該使用PUT方法。

PATCH 方法

PATCH方法是新引入的,是對PUT方法的補充,用來對已知資源進行"局部更新"

需要注意的地方

"語義" 而非 風格;是語義的問題,換句話說:
也就是這取決於這個REST服務的行為是否是idempotent(冪等的)

// 但是這個只是在語義上,同時不要太苛求語義
DELETE: 刪除,無論如何 資源 最后都將不復存在
PUT:    替換(新增或完整更新)
PATCH:  部分更新

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM