這個問題看上去特別初級,但實際上卻涉及到方方面面,也是面試官特別喜歡考的緣由之一。既然如此,那就讓咱們來一塊兒完全理清楚他們的區別。php
首先,咱們先科普一些知識點。web
HTTP
超文本傳輸協議,是一個簡單的請求-響應協議,它一般運行在 TCP
之上。它指定了客戶端可能發送給服務器什麼樣的消息以及獲得什麼樣的響應。面試
序號 | 方法 | 描述 |
---|---|---|
01 | HEAD | 請求指定的頁面信息,並返回實體主體。 |
02 | GET | 相似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭。 |
03 | POST | 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會致使新的資源的創建或已有資源的修改。 |
04 | PUT | 從客戶端向服務器傳送的數據取代指定的文檔的內容。 |
05 | DELETE | 請求服務器刪除指定的頁面。 |
06 | CONNECT | HTTP/1.1 協議中預留給可以將鏈接改成管道方式的代理服務器。 |
07 | OPTIONS | 容許客戶端查看服務器的性能。 |
08 | TRACE | 回顯服務器收到的請求,主要用於測試或診斷。 |
09 | PATCH | 是對 PUT 方法的補充,用來對已知資源進行局部更新。 |
知識已經科普的差很少了,接下來,讓咱們一塊兒分析 GET
請求把。瀏覽器
HTTP
常見的請求類型,最多見於向服務器查詢某些信息。URL
末尾,以便將信息發送給服務器。encodeURIComponent
進行編碼,才能放到URL
末尾,必須用&
符號隔開。例如:baidu.com/index.php?name=111&id=222HTTP
常見的請求類型,最多見於向服務器發送應該被保存的信息或者查詢某些信息。POST
請求產生2個數據包,在火狐瀏覽器中,產生一個數據包。GET
請求的請求參數是添加到 head
中,能夠在 url
中能夠看到;POST
請求的請求參數是添加到BODY
中,在url
中不可見。GET
請求參數須要使用 encodeURIComponent
進行編碼,必須用 &
符號隔開。url
有長度限制,這個限制由瀏覽器和 web
服務器決定和設置的。例如IE瀏覽器對 URL
的最大限制爲2083個字符,若是超過這個數字,提交按鈕沒有任何反應。由於GET
請求的參數是添加到URL
中,因此GET
請求的URL
的長度限制須要將請求參數長度也考慮進去。而POST
請求不用考慮請求參數的長度。GET
請求產生一個數據包; POST
請求產生2個數據包,在火狐瀏覽器中,產生一個數據包。這個區別點在於瀏覽器的請求機制,先發送請求頭,再發送請求體。由於GET
沒有請求體,因此就發送一個數據包,而POST
包含請求體,因此發送兩次數據包,可是因爲火狐機制不一樣,因此發送一個數據包。GET
請求的參數是在url
中,因此能夠直接在瀏覽器中打開若是想要查詢的更快,可使用GET
請求。 其餘的,並沒有差異。服務器
因爲有些小夥伴給我留言,說部份內容存在差別,這邊統一說明下。
併發
解答:
1.GET
請求,默認是不支持BODY
傳遞請求參數的。
2.你能夠經過其餘方式讓其支持BODY
傳遞請求參數, 可是官方並不建議這樣作。
3.畢竟這不是一個規範,也會存在未知的兼容性問題。因此我並未強調這一點,畢竟存在兼容性問題,並且還須要大量力氣去開發,若是隻是爲BODY
傳遞請求參數,爲何不直接用POST
請求呢,POST
請求它不香嗎?性能
解答:
1.GET
請求和POST
請求均可以被設置爲書籤的,當存在請求參數時,POST
請求沒法在書籤中體現請求參數後的結果。由於POST
的請求參數在BODY
中。
2.在實際項目開發中,大部分接口都是須要驗證身份信息的。這個時候添加書籤的意義就不是很大。由於信息都會獲取不到。
3.博主認爲這並非一個很大的區別點,理由如上,因此並未涉及。測試