http中的get和post的區別是什麼呢?
被大佬糾正了,RFC規範允許任何請求都帶body,不過不常用,以至於Mozilla直說了get不帶主體(
https://
developer。mozilla。org/z
h-CN/docs/Web/HTTP/Methods/GET
)
原答案:
最大的區別在於get請求沒有body部分而post有,也就是說請求能帶的資訊量不同。
最大的區別: get請求的網址你用post請求不到
post請求的網址 你用get請求不到
get:一般攜帶的資料都是直接在拼接url上的。
post:一般攜帶的資料都是包裝在body上的。
post跟get攜帶的資料很多網站都是隻有幾個值有用
我覺得目前所有的回答都是表相,而沒有答到本質。
最本質的區別是:
GET用於獲取指定的資源(冪等)
POST用於建立/更新某個資源 (非冪等)
說GET不可以用Body的看這裡:
Hypertext Transfer Protocol (HTTP/1。1): Message Syntax and Routing
RFC明確說明:
Request message framing is independent of method semantics, even if the method does not define any use for a message body。
補充一點: @德川家康薛定諤 的說法存在錯誤。
對於Restful來說,GET帶有Body是很普遍的事情,用GET是因為語義限制,帶Body是因為URL長度有限,不是所有網路基礎設施都允許超長URL的。
隨便找個例子給你看,比如挺火的一個搜尋工具ES:
Request Body Search | Elasticsearch Reference [7。1] | Elastic
文件裡就明確指明瞭GET可以攜帶Body。
GET 和 POST屬於 Request Methods。
HTTP 的設計 是 Semantic,即語義的。
GET:Transfer a current representation of the target resource。
傳輸
目標資源的當前表示。
POST: Perform resource-specific processing on the request payload。
根據 payload對特定資源進行
處理
。
其中payload 包括了
metadata
(比如Content-Type Last-Modified等)和
body
兩塊。
總結
:
如果你要獲取資源,使用
GET
如果你要對資源進行處理,使用
POST
問題:
1.
GET 能不能帶 payload 呢?
A payload within a GET request message has no defined semantics;
GET沒有對 payload 的語義定義,所以這個 payload 要不要用,要怎麼用取決於開發者的設計。
一、根據HTTP規範,GET用於資訊獲取,而且應該是安全的和冪等的。
所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,GET 請求一般不應產生副作用。就是說,它僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改,增加資料,不會影響資源的狀態。
二、根據HTTP規範,POST表示可能修改變伺服器上的資源的請求。
還是新聞以網站為例,讀者對新聞發表自己的評論應該透過POST實現,因為在評論提交後站點的資源已經不同了,或者說資源被修改了。
區別:
1)GET請求只是簡單的獲取資料,不修改請求的資源;而POST請求會修改請求的資源。導致的後果是相同的GET請求能獲取相同的資源,而POST不能保證獲取相同的資源。
2)GET請求的引數在HTTP中是透過url傳遞的,POST請求的資料是透過requestbody體傳遞的
3)GET請求資源再伺服器上能夠快取,而POST就不能夠了
4)GET請示的引數的資料長度是有限制的,而POST請求的資料長度沒有限制
5)GET請求無法傳遞二進位制資料到伺服器,而POST可以,