HTTP PUT方法和POST方法的區別


POST 方法用來傳輸實體的主體,PUT方法用來傳輸文件,自身不帶驗證機制。

 

這兩個方法看起來都是講一個資源附加到服務器端的請求,但其實是不一樣的。一些狹窄的意見認為,POST方法用來創建資源,而PUT方法則用來更新資源。這個說法本身沒有問題,但是並沒有從根本上解釋了二者的區別。事實上,它們最根本的區別就是:POST方法不是冪等的,而PUT方法則有冪等性。那這又衍生出一個問題,什么是冪等?

冪等(idempotent、idempotence)是一個抽象代數的概念。在計算機中,可以這么理解,一個冪等操作的特點就是其任意多次執行所產生的影響均與依次一次執行的影響相同。

POST在請求的時候,服務器會每次都創建一個文件,但是在PUT方法的時候只是簡單地更新,而不是去重新創建。因此PUT是冪等的。

舉一個簡單的例子,假如有一個博客系統提供一個Web API,模式是這樣http://superblogging/blogs/post/{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方法。

 

 

Refer:HTTP PUT方法和POST方法的區別


免責聲明!

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



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