HTTP中GET,POST和PUT的區別



一、HTTP中定義了以下幾種請求方法:

1、GET;2、POST;3、PUT;4、DELETE;
5、HEAD;6、TRACE;7、OPTIONS;

二、各個方法介紹:

1、GET方法:對這個資源的查操作。

2、DELETE方法:對這個資源的刪操作。但要注意:客戶端無法保證刪除操作一定會被執行,因為HTTP規范允許服務器在不通知客

戶端的情況下撤銷請求。

3、HEAD方法:與GET方法的行為很類似,但服務器在響應中只返回實體的主體部分。這就允許客戶端在未獲取實際資源的情

況下,對資源的首部進行檢查,使用HEAD,我們可以更高效的完成以下工作:

在不獲取資源的情況下,了解資源的一些信息,比如資源類型;

通過查看響應中的狀態碼,可以確定資源是否存在;

通過查看首部,測試資源是否被修改;

4、TRACE方法:會在目的服務器端發起一個“回環”診斷,我們都知道,客戶端在發起一個請求時,這個請求可能要穿過防火牆、代理、網關、或者其它的一些應用程序。這中間的每個節點都可能會修改原始的HTTP請求,TRACE方法允許客戶端在最終將請求發送服務器時,它變成了什么樣子。由於有一個“回環”診斷,在請求最終到達服務器時,服務器會彈回一條TRACE響應,並在響應主體中攜帶它收到的原始請求報文的最終模樣。這樣客戶端就可以查看HTTP請求報文在發送的途中,是否被修改過了。

5、OPTIONS方法:用於獲取當前URL所支持的方法。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭,值是所支持的方法,如“GET, POST”。

二、方發之間的區別:

1、PUT和POST

PUT和POS都有更改指定URI的語義.但PUT被定義為idempotent的方法,POST則不是.idempotent的方法:如果一個方法重復執行

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

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

Post請求:后一個請求不會把第一個請求覆蓋掉。(所以Post用來增資源)

2、get和post

1、GET參數通過URL傳遞,POST放在Request body中。

2、GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。

3、GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留。

4、Get 請求中有非 ASCII 字符,會在請求之前進行轉碼,POST不用,因為POST在Request body中,通過 MIME,也就可以傳輸非 ASCII 字符。

5、 一般我們在瀏覽器輸入一個網址訪問網站都是GET請求

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就只發送一次。

 

內容整理來源如下:

http://www.cnblogs.com/logsharing/p/8448446.html

http://www.cnblogs.com/shanyou/archive/2011/10/17/2215930.html

http://www.jellythink.com/archives/806


原文鏈接:https://blog.csdn.net/qq_36183935/article/details/80570062


免責聲明!

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



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