原理:
post和get都是與伺服器互動的方法,還有put和delete。
從http標準看來get,post,put,delete對應的就是對這個資源的查,改,增,刪四個操作,因此我們可以理解為get一般是用來獲取/查詢伺服器資源資訊,post一般是用於更新伺服器資源資訊。即get是向伺服器傳送取資料的一種請求,而post是向伺服器提交資料的一種請求,在form(表單)中,method預設為"get",實質上,get和post只是傳送機制不同,並不是乙個取乙個發!
我們再來解釋一下什麼是http?http是基於tcp/ip的關於資料如何在全球資訊網中如何通訊的協議。
http的底層是tcp/ip。所以get和post的底層也是tcp/ip,也就是說,get/post都是tcp鏈結。get和post能做的事情是一樣一樣的。你要給get加上request body,給post帶上url引數,技術上是完全行的通的。
這到底是都是什麼?
總結:
我參考別人的部落格,自己做了些總結,如下:
運輸需要車輛,而tcp就像行駛的許多車輛,如果車輛全部按自己的想法走,交通就會癱瘓,所以作為交通規則的http誕生了。http規定了tcp(運輸車)行駛的方式:get、post、head、options、put等。當執行get請求時,車上貼get標籤(method=「get」),貨物放在上層運輸。如果是post請求,車上貼post標籤,貨物放在下層運輸。當然,get方式也可以把貨物偷偷放在下層,但是這樣是算get還是post呢?讓人覺得傻乎乎的。所以,http只是個行為準則,而tcp才是get和post怎麼實現的基本。
那麼問題來了!區別到底是什麼?
其實作為程式小白我也不清楚,我扒了一段別人寫的解釋。感覺比較直觀。
get和post還有乙個重大區別。
簡單的說:
get產生乙個tcp資料報;post產生兩個tcp資料報。
長的說:
對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);
而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。
也就是說,get只需要汽車跑一趟就把貨送到了,而post得跑兩趟,第一趟,先去和伺服器打個招呼「嗨,我等下要送一批貨來,你們開啟門迎接我」,然後再回頭把貨送過去。
因為post需要兩步,時間上消耗的要多一點,看起來get比post更有效。因此yahoo團隊有推薦用get替換post來優化**效能。但這是乙個坑!跳入需謹慎。為什麼?
get與post都有自己的語義,不能隨便混用。
據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。
並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。
flask中的get與post請求
main.pyfrom flask import flask,render template,request def index print type request.query string return render template frame.html def post if request...
flask 獲取GET和POST請求引數(全)
近日,在使用flask框架獲取前端的請求時獲取引數時,遇到了幾個問題 之前的專案也有使用這部分,當時程式沒有問題就沒再深究,直到遇到了問題。果然,遇到問題才會成長!因此,對get和post兩種請求方式的引數獲取方式進行梳理。request物件是從客戶端向伺服器發出請求,包括使用者提交的資訊以及客戶端...
Ajax中Get和Post的區別
談ajax的get 和post 的區別 get 方式 用get 方式可傳送簡單資料,但大小一般限制在1kb下,資料追加到url中傳送 http的header傳送 也就是說,瀏覽器將 各個表單字段元素及其資料按照url引數的格式附加在請求行中的資源路徑後面。另外最重要的一點是,它會被客戶端的瀏 覽器快...