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方法。

 

也就是說,如果是更新,並不會產生新的數據,新的數據會覆蓋老的數據,用put,如果是創建,會產生新的數據,則用post。

轉載於:https://blog.csdn.net/qq_33223761/article/details/83511628


免責聲明!

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



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