冪等 : 如果一個方法重復執行多次,產生的效果是一樣的,那就是idempotent(冪等)的。
PUT是冪等的 。
POST不是冪等的 。
PUT 的方法就是其字面表意,將client的資源放在請求URI上。對於服務器到底是創建還是更新,由服務器返回的HTTP Code來區別。
我們商品批量上架的時候我們用put ,傳入一個數組 。
有的地方說put是更新操作 ,但是我們更新商品的時候用的post ,。
POST是用來提交數據的。提交的數據放在HTTP請求的正文里,目的在於提交數據並用於服務器端的存儲,而不允許用戶過多的更改相應數據
(主要是相對於在url 修改要麻煩很多)。
PUT操作是冪等的。所謂冪等是指不管進行多少次操作,結果都一樣。比如我用PUT修改一篇文章,然后在做同樣的操作,每次操作后的結果並沒有不同
POST操作既不是安全的,也不是冪等的,比如常見的POST重復加載問題:當我們多次發出同樣的POST請求后,其結果是創建出了若干的資源。
安全和冪等的意義在於:當操作沒有達到預期的目標時,我們可以不停的重試,而不會對資源產生副作用。從這個意義上說,POST操作往往是有害的,但很多時候我們還是不得不使用它。
還有一點需要注意的就是,創建操作可以使用POST,也可以使用PUT,區別在於POST 是作用在一個集合資源之上的(/articles),而PUT操作是作用在一個具體資源之上的(/articles/123),再通俗點說,如果URL可以在客戶端確定,那么就使用PUT,如果是在服務端確定,那么就使用POST,比如說很多資源使用數據庫自增主鍵作為標識信息,而創建的資源的標識信息到底是什么只能由服務端提供,這個時候就必須使用POST。