面試官問的這個面試題你回答對了嗎?

這是一個接口測試&HTTP協(xié)議的基礎(chǔ)知識,也是面試的時候面試官經(jīng)常問的一個面試題


咋一看,哇哦,這個我會啊。

第一點:get把傳參放入url中,post把傳參放到body中

第二點:get的參數(shù)有限制長度的,post沒有

第三點:get只有url編碼,post有多種編碼

第四點:get請求會被cache,post不會

第五點:get參數(shù)會在url顯示,所以post安全

第六點:瀏覽器回退的時候post會多次提交

第七點:get只接受ASCII字符

第八點:get請求參數(shù)會被保存在瀏覽記錄,post不會

????????第九點:get產(chǎn)生的url地址會被BOOKMARK

????????感覺是不是很全面,這個回答會叫面試官刮目相看的。


????????可是面試官聽完心里一想,也是個半罐子。

那么到底什么是正確的答案呢?叫我們來撕掉post和get的外衣來看看

我們先了解一下http協(xié)議,http是tcp/ip之上的應(yīng)用通信協(xié)議,而get和post是http的兩個請求方法,所以這倆貨的底層也是tcp/ip。所以他倆做的事情完全一樣,在技術(shù)上給post加上url參數(shù),給get加上body一樣沒有問題。

? ? ? ? 下面我就用一個場景來形容一下,TCP就像貨車一樣,TCP不像UDP,他從來不會發(fā)生丟包的少件的情況,HTTP就像交通規(guī)則,HTTP給汽車運輸規(guī)定了各種規(guī)則,比如就產(chǎn)生了get,post,put,delete。HTTP就要求get汽車要把數(shù)據(jù)放在車頂上既是url里,post要把貨物放在車廂里面。當然現(xiàn)實中可能get怕貨物太多放不下會在車廂里藏一點,post也可以往車頂放上一丟丟。而這里看到TCP才是運輸數(shù)據(jù)的,HTTP是個行為準則,TCP是get和post的實現(xiàn)依據(jù)。但是,我沒看到了在get和post中確實存在一些差異,比如貨物的運輸量上有規(guī)定,這個時候,瀏覽器就出來了,瀏覽器就像不同的運輸公司,他們要求各種大小車裝載都有一定的風險控制,所以每個運輸公司規(guī)定也不同,有些運輸公司就可以默認get能夠帶一點貨在車廂里,有的運輸公司就不同意,就不幫你卸貨。

????????這下終于知道原理了,都是基于TCP的,并無差別,但是由于HTTP和瀏覽器的約束導致。

哈哈,以為就這樣結(jié)束了嗎?




?這里還有個get和post重大區(qū)別:

GET請求,瀏覽器把header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回數(shù)據(jù));

????????對于POST,瀏覽器先發(fā)header,服務(wù)器響應(yīng)100 continue,再發(fā)送data,服務(wù)器響應(yīng)200 ok(返回數(shù)據(jù))。

?所以說get產(chǎn)生一個TCP數(shù)據(jù)包,post會有2個。所以說post在運輸過程中會跑兩趟,先把header放下,在回來裝body在卸貨。貌似效率上get高很多哦,但是這個效率在網(wǎng)絡(luò)好的環(huán)境下差別基本可忽略,并且兩次tcp在數(shù)據(jù)完整性上也有很大優(yōu)勢,并且在請求的語義上最好也別混用。

??????????好了,這樣回答你的offer是不是就要到手了!


公主耗:shenjitest回復(fù)666領(lǐng)取最新一線大廠面試資料,面試題。以及整理最前沿的測試技術(shù)人員發(fā)展路線圖和技能路線。

關(guān)注公主耗獲取更多干貨

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容