這兩個方法看起來都是講乙個資源附加到伺服器端的請求,但其實是不一樣的。一些狹窄的意見認為,post方法用來建立資源,而put方法則用來更新資源。這個說法本身沒有問題,但是並沒有從根本上解釋了二者的區別。事實上,它們最根本的區別就是:post方法不是冪等的,而put方法則有冪等性。那這又衍生出乙個問題,什麼是冪等?
冪等(idempotent、idempotence)是乙個抽象代數的概念。在計算機中,可以這麼理解,乙個冪等操作的特點就是其任意多次執行所產生的影響均與依次一次執行的影響相同。
post在請求的時候,伺服器會每次都建立乙個檔案,但是在put方法的時候只是簡單地更新,而不是去重新建立。因此put是冪等的。
舉乙個簡單的例子,假如有乙個部落格系統提供乙個web api,模式是這樣http://superblogging/blogs/post/,很簡單,將替換為我們的blog名字,往這個uri傳送乙個http put或者post請求,http的body部分就是博文,這是乙個很簡單的rest api例子。我們應該用put方法還是post方法?取決於這個rest服務的行為是否是idempotent的,假如我們傳送兩個http://superblogging/blogs/post/sample請求,伺服器端是什麼樣的行為?如果產生了兩個部落格帖子,那就說明這個服務不是idempotent的,因為多次使用產生了***了嘛;如果後乙個請求把第乙個請求覆蓋掉了,那這個服務就是idempotent的。前一種情況,應該使用post方法,後一種情況,應該使用put方法。
HTTP PUT方法和POST方法的區別
這兩個方法看起來都是講乙個資源附加到伺服器端的請求,但其實是不一樣的。一些狹窄的意見認為,post方法用來建立資源,而put方法則用來更新資源。這個說法本身沒有問題,但是並沒有從根本上解釋了二者的區別。事實上,它們最根本的區別就是 post方法不是冪等的,而put方法則有冪等性。那這又衍生出乙個問題...
HttpClient的Post和Get方法
1.不帶引數的get請求 不帶引數的get請求 public static void dogetwithoutparameter throws exception 2.帶引數的get請求 代引數的get請求 public static void dogetwithparameter throws e...
HTTP get和post方法總結
目錄 http 超文字傳輸協議 http 能幹啥 http常用兩種請求方法 get post get1 get方法特性 2 有關get請求的其他注釋 3 注意 post 1 有關post請求的一些其他注釋 2 注意 區別 其他http方法 web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作...