HTTP中GET,POST和PUT的區別

2022-05-02 04:48:11 字數 1048 閱讀 5561

面試中經常考到 http中get,post和put的區別,記錄一下

put和post都有更改指定uri的語義.但put被定義為idempotent的方法,post則不是.idempotent的方法:如果乙個方法重複執行

多次,產生的效果是一樣的,那就是idempotent的。也就是說:

put請求:如果兩個請求相同,後乙個請求會把第乙個請求覆蓋掉。(所以put用來改資源)

post請求:後乙個請求不會把第乙個請求覆蓋掉。(所以post用來增資源)

舉個例子,註冊時用的是post,修改個人資訊的時候使用put

1、get引數通過url傳遞,post放在request body中。

2、get請求會被瀏覽器主動cache,而post不會,除非手動設定。

3、get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。

4、get 請求中有非 ascii 字元,會在請求之前進行轉碼,post不用,因為post在request body中,通過 mime,也就可以傳輸非 ascii 字元。

6、http的底層是tcp/ip。http只是個行為準則,而tcp才是get和post怎麼實現的基本。get/post都是tcp鏈結。get和post能做的事情是一樣一樣的。但是請求的資料量太大對瀏覽器和伺服器都是很大負擔。所以業界有了不成文規定,(大多數)瀏覽器通常都會限制url長度在2k個位元組,而(大多數)伺服器最多處理64k大小的url。

7、get產生乙個tcp資料報;post產生兩個tcp資料報。對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。

8、在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。但並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。

簡單來說,在工作中,獲取資料使用get,提交資料使用pust,修改資料使用put,刪除資料使用delete

HTTP中GET,POST和PUT的區別

一 http中定義了以下幾種請求方法 1 get 2 post 3 put 4 delete 5 head 6 trace 7 options 二 各個方法介紹 1 get方法 對這個資源的查操作。2 delete方法 對這個資源的刪操作。但要注意 客戶端無法保證刪除操作一定會被執行,因為http規...

HTTP中GET,POST和PUT的區別

一 http中定義了以下幾種請求方法 1 get 2 post 3 put 4 delete 5 head 6 trace 7 options 二 各個方法介紹 1 get方法 對這個資源的查操作。2 delete方法 對這個資源的刪操作。但要注意 客戶端無法保證刪除操作一定會被執行,因為http規...

HTTP中GET,POST和PUT的區別

一 http中定義了以下幾種請求方法 1 get 2 post 3 put 4 delete 5 head 6 trace 7 options 二 各個方法介紹 1 get方法 對這個資源的查操作。2 delete方法 對這個資源的刪操作。但要注意 客戶端無法保證刪除操作一定會被執行,因為http規...