HTTP中POST和PUT的區別

1.什麼是冪等性

冪等性概念:冪等通俗來說是指不管進行多少次重複操作,都是實現相同的結果。

2.REST請求中哪些是冪等操作

GET,PUT,DELETE都是冪等操作,而POST不是,以下進行分析:

首先GET請求很好理解,對資源做查詢多次,此實現的結果都是一樣的。 
PUT請求的冪等性可以這樣理解,將A修改爲B,它第一次請求值變爲了B,再進行多次此操作,最終的結果還是B,與一次執行的結果是一樣的,所以PUT是冪等操作。 
同理可以理解DELETE操作,第一次將資源刪除後,後面多次進行此刪除請求,最終結果是一樣的,將資源刪除掉了。

POST不是冪等操作,因爲一次請求添加一份新資源,二次請求則添加了兩份新資源,多次請求會產生不同的結果,因此POST不是冪等操作。

3 根據冪等性區分POST與PUT的使用

瞭解REST後很長一段時間不能明確區分PUT和POST的區別,在使用時很容易混淆,完全可根據idempotent(冪等性)做區分。

舉一個簡單的例子,假如有一個博客系統提供一個Web API,模式是這樣http://superblogging/blogs/{blog-name},很簡單,將{blog-name}替換爲我們的blog名字,往這個URI發送一個HTTP PUT或者POST請求,HTTP的body部分就是博文,這是一個很簡單的REST API例子。

我們應該用PUT方法還是POST方法?

取決於這個REST服務的行爲是否是idempotent的,假如我們發送兩個http://superblogging/blogs/post/Sample請求,服務器端是什麼樣的行爲?如果產生了兩個博客帖子,那就說明這個服務不是idempotent的,因爲多次使用產生了副作用了嘛;如果後一個請求把第一個請求覆蓋掉了,那這個服務就是idempotent的。前一種情況,應該使用POST方法,後一種情況,應該使用PUT方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章