[轉]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: 部分更新