接口測(cè)試基礎(chǔ)-了解http請(qǐng)求

大家一直都在說(shuō)接口自動(dòng)化唆缴,但對(duì)于接口測(cè)試的基礎(chǔ)HTTP協(xié)議,你了解多少呢黍翎?

HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型面徽。客戶(hù)端按照一定的規(guī)則請(qǐng)求,服務(wù)端響應(yīng)對(duì)應(yīng)的請(qǐng)求趟紊。HTTP協(xié)議的全名叫超文本傳輸協(xié)議氮双,為英文HyperText Transfer Protocol,的縮寫(xiě)霎匈,是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議戴差。

我作為APP測(cè)試人員,經(jīng)常用fiddler抓包铛嘱,比較好奇這些抓到的包暖释,每項(xiàng)是什么含義,具體代表什么墨吓,那么我們就從一個(gè)fiddler應(yīng)用每次打開(kāi)默認(rèn)的一個(gè)請(qǐng)求來(lái)學(xué)習(xí)下一個(gè)完整的HTTP請(qǐng)求包和響應(yīng)包:

一饭入、http請(qǐng)求包

請(qǐng)求行

第一行分別包含:請(qǐng)求方法、請(qǐng)求地址肛真、請(qǐng)求協(xié)議谐丢;我們來(lái)一一了解。

1蚓让、請(qǐng)求方法

“GET”是請(qǐng)求方法里面的一種乾忱。根據(jù)HTTP標(biāo)準(zhǔn),HTTP請(qǐng)求可以使用多種請(qǐng)求方法历极。

我們可以這樣認(rèn)為:一個(gè)URL地址窄瘟,它用于描述一個(gè)網(wǎng)絡(luò)上的資源,而HTTP中的GET趟卸,POST蹄葱,PUT,DELETE就對(duì)應(yīng)著對(duì)這個(gè)資源的查锄列,改图云,增,刪4個(gè)操作邻邮。

我其實(shí)測(cè)試過(guò)程中見(jiàn)得最多的就是GET和POST竣况,GET一般用于獲取/查詢(xún)資源信息,而POST一般用于更新資源信息筒严。


請(qǐng)求方法 ? ? ? ? ? ? ? ?備注


GET ? ?請(qǐng)求指定的頁(yè)面信息丹泉,請(qǐng)求不包含實(shí)體,并返回實(shí)體主體鸭蛙。

HEAD ? ?類(lèi)似于get請(qǐng)求摹恨,只不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭

POST ? ?向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)娶视,數(shù)據(jù)被包含在請(qǐng)求體中晒哄,POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。

PUT ? ?從客戶(hù)端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容

DELETE ? ?請(qǐng)求服務(wù)器刪除指定的頁(yè)面

CONNECT ? ?HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。

OPTIONS ? ?允許客戶(hù)端查看服務(wù)器的性能

TRACE ? ?回顯服務(wù)器收到的請(qǐng)求揩晴,主要用于測(cè)試或診斷

2勋陪、請(qǐng)求地址

https://www.fiddler2.com/UpdateCheck.aspx?isBeta=False”贪磺,其實(shí)就是URL硫兰。

基本URL包含模式(或稱(chēng)協(xié)議)、服務(wù)器名稱(chēng)(或IP地址)寒锚、路徑和文件名劫映,如“協(xié)議://授權(quán)/路徑?查詢(xún)”。完整的刹前、帶有授權(quán)部分的普通統(tǒng)一資源標(biāo)志符語(yǔ)法看上去如下:協(xié)議://用戶(hù)名:密碼@子域名.域名.頂級(jí)域名:端口號(hào)/目錄/文件名.文件后綴?參數(shù)=值#標(biāo)志

1)模式/協(xié)議(scheme):它告訴瀏覽器如何處理將要打開(kāi)的文件泳赋。最常用的模式是超文本傳輸協(xié)議(Hypertext Transfer Protocol,縮寫(xiě)為HTTP)喇喉,這個(gè)協(xié)議可以用來(lái)訪問(wèn)網(wǎng)絡(luò)祖今。如“http://”表示超文本傳輸協(xié)議資源,“https://”表示用安全套接字層傳送的超文本傳輸協(xié)議拣技,“ftp://”表示文件傳輸協(xié)議……

2)文件所在的服務(wù)器的名稱(chēng)或IP地址千诬,后面是到達(dá)這個(gè)文件的路徑和文件本身的名稱(chēng)。服務(wù)器的名稱(chēng)或IP地址后面有時(shí)還跟一個(gè)冒號(hào)和一個(gè)端口號(hào)膏斤。它也可以包含接觸服務(wù)器必須的用戶(hù)名稱(chēng)和密碼徐绑。路徑部分包含等級(jí)結(jié)構(gòu)的路徑定義,一般來(lái)說(shuō)不同部分之間以斜線(/)分隔莫辨“燎眩“?”詢(xún)問(wèn)部分一般用來(lái)傳送對(duì)服務(wù)器上的數(shù)據(jù)庫(kù)進(jìn)行動(dòng)態(tài)詢(xún)問(wèn)時(shí)所需要的參數(shù)。

3沮榜、請(qǐng)求協(xié)議

“HTTP/1.1”盘榨,指的是請(qǐng)求協(xié)議。下面簡(jiǎn)單介紹三種版本的請(qǐng)求協(xié)議蟆融,目前無(wú)2.0版本较曼,正在開(kāi)發(fā)中。

HTTP/0.9?:只接受GET一種請(qǐng)求方法振愿,沒(méi)有在通信中指定版本號(hào)捷犹,且不支持請(qǐng)求頭。由于該版本不支持POST方法冕末,因此客戶(hù)端無(wú)法向服務(wù)器傳遞太多信息萍歉。

HTTP/1.0?:第一個(gè)在通信中指定的版本號(hào),至今被廣泛采用档桃,特別是在代理服務(wù)器中枪孩。支持上面說(shuō)到的,三種請(qǐng)求方法: GET, POST 和 HEAD方法

HTTP/1.1?:當(dāng)前版本號(hào),持久連接被默認(rèn)采用蔑舞,并能很好地配合代理服務(wù)器工作拒担。還支持以管道方式在同時(shí)發(fā)送多個(gè)請(qǐng)求,以便降低線路負(fù)載攻询,提高傳輸速度从撼。相對(duì)1.0版本,HTTP1.1新增了五種請(qǐng)求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法钧栖。

請(qǐng)求消息頭

第二行以后均表示消息頭低零,

User-Agent:中文名為用戶(hù)代理,簡(jiǎn)稱(chēng) UA拯杠,它是一個(gè)特殊字符串頭掏婶,使得服務(wù)器能夠識(shí)別客戶(hù)使用的操作系統(tǒng)及版本、CPU 類(lèi)型潭陪、瀏覽器及版本雄妥、瀏覽器渲染引擎、瀏覽器語(yǔ)言依溯、瀏覽器插件等老厌。一些網(wǎng)站常常通過(guò)判斷 UA 來(lái)給不同的操作系統(tǒng)、不同的瀏覽器發(fā)送不同的頁(yè)面誓沸,因此可能造成某些頁(yè)面無(wú)法在某個(gè)瀏覽器中正常顯示梅桩,但通過(guò)偽裝 UA 可以繞過(guò)檢測(cè)。

Pragma:是 HTTP/1.1 之前版本的歷史遺留字段拜隧∷薨伲“Pargma: no-cache”只能用在客戶(hù)端發(fā)送的請(qǐng)求中『樘恚客戶(hù)端會(huì)要求所有的中間服務(wù)器不返回緩存的資源垦页。 但要整體掌握全部中間服務(wù)器使用 HTTP 協(xié)議版本確實(shí)不現(xiàn)實(shí)的。因此干奢,發(fā)送的請(qǐng)求會(huì)同時(shí)含有?Cache-Control: no-cache和?Pragma: no-cache痊焊。

Host:訪問(wèn)的http服務(wù)器的域名/IP 地址和端口號(hào)。在http 1.1中不能缺失host字段,如果缺失, 服務(wù)器返回400 bad request忿峻,http1.1中不能缺失host字段薄啥,但host字段可以是空值;在http 1.0中可以缺失host字段逛尚。

Accept-Language: 表示瀏覽器or客戶(hù)端所支持的語(yǔ)言類(lèi)型垄惧;

Referer:Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候绰寞,一般會(huì)帶上Referer到逊,告訴服務(wù)器我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的铣口,服務(wù)器以此可以獲得一些信息用于處理。

Accept-Encoding: 瀏覽器支持的壓縮編碼觉壶。gzip脑题,GNU zip 的縮寫(xiě),它是一個(gè) GNU 自由軟件的文件壓縮程序铜靶,也經(jīng)常用來(lái)表示 gzip 這種文件格式叔遂。deflate是同時(shí)使用了 LZ77 算法與哈夫曼編碼(Huffman Coding)的一個(gè)無(wú)損數(shù)據(jù)壓縮算法。

Connection: 表示客戶(hù)端與服務(wù)連接類(lèi)型旷坦;?close表明當(dāng)前正在使用的tcp鏈接在請(qǐng)求處理完畢后會(huì)被斷掉掏熬。以后client再進(jìn)行新的請(qǐng)求時(shí)就必須創(chuàng)建新的tcp鏈接了

請(qǐng)求實(shí)體內(nèi)容

上圖中舉的例子佑稠,實(shí)體內(nèi)容為空行秒梅;原因是因?yàn)槔邮莋et請(qǐng)求,是沒(méi)有請(qǐng)求實(shí)體內(nèi)容的舌胶。如果是post請(qǐng)求捆蜀,實(shí)體內(nèi)容一般格式如下:

name1=value1&name2=value2&name3=value3

二、http響應(yīng)包

響應(yīng)狀態(tài)行

包含協(xié)議版本幔嫂、狀態(tài)碼辆它、原因短語(yǔ),因?yàn)榍懊嬉呀?jīng)介紹了協(xié)議版本履恩,在此不啰嗦锰茉,主要講下?tīng)顟B(tài)碼和原因短語(yǔ):

用以表示網(wǎng)頁(yè)服務(wù)器HTTP響應(yīng)狀態(tài)的3位數(shù)字代碼,主要分為5類(lèi):

消息1xx(100~199切心,目前已經(jīng)定義的有100~102):這一類(lèi)型的狀態(tài)碼飒筑,代表請(qǐng)求已被接受,需要繼續(xù)處理绽昏。這類(lèi)響應(yīng)是臨時(shí)響應(yīng)协屡,只包含狀態(tài)行和某些可選的響應(yīng)頭信息,并以空行結(jié)束全谤。

成功2xx(200~299肤晓,目前已經(jīng)定義的有200~207):代表請(qǐng)求已成功被服務(wù)器接收、理解认然、并接受补憾。最常見(jiàn)的如:200 OK 請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回卷员。

重定向3xx(300~399盈匾,目前已經(jīng)定義的有300~307):這類(lèi)狀態(tài)碼代表需要客戶(hù)端采取進(jìn)一步的操作才能完成請(qǐng)求。通常子刮,這些狀態(tài)碼用來(lái)重定向威酒,后續(xù)的請(qǐng)求地址(重定向目標(biāo))在本次響應(yīng)的 Location 域中指明窑睁。

請(qǐng)求錯(cuò)誤4xx(400~499,目前已經(jīng)定義的有400~449):代表了客戶(hù)端看起來(lái)可能發(fā)生了錯(cuò)誤葵孤,妨礙了服務(wù)器的處理担钮。除非響應(yīng)的是一個(gè) HEAD 請(qǐng)求,否則服務(wù)器就應(yīng)該返回一個(gè)解釋當(dāng)前錯(cuò)誤狀況的實(shí)體尤仍,以及這是臨時(shí)的還是永久性的狀況箫津。這些狀態(tài)碼適用于任何請(qǐng)求方法。瀏覽器應(yīng)當(dāng)向用戶(hù)顯示任何包含在此類(lèi)錯(cuò)誤響應(yīng)中的實(shí)體內(nèi)容宰啦。最常見(jiàn)的如:404 Not Found 請(qǐng)求失敗苏遥,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)。

服務(wù)器錯(cuò)誤5xx赡模、6xx:服務(wù)器在處理請(qǐng)求的過(guò)程中有錯(cuò)誤或者異常狀態(tài)發(fā)生田炭,也有可能是服務(wù)器意識(shí)到以當(dāng)前的軟硬件資源無(wú)法完成對(duì)請(qǐng)求的處理。最常見(jiàn)的如:500 Internal Server Error 服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況漓柑,導(dǎo)致了它無(wú)法完成對(duì)請(qǐng)求的處理教硫,一般來(lái)說(shuō),這個(gè)問(wèn)題都會(huì)在服務(wù)器端的源代碼出現(xiàn)錯(cuò)誤時(shí)出現(xiàn)辆布。

響應(yīng)消息頭

Cache-Control:指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制瞬矩。

Content-Type:定義網(wǎng)絡(luò)文件的類(lèi)型和網(wǎng)頁(yè)的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個(gè)文件

Vary:Vary頭域值指定了一些請(qǐng)求頭域锋玲,這些請(qǐng)求頭域用來(lái)決定當(dāng)緩存中存在一個(gè)響應(yīng)景用,并且該緩存沒(méi)有過(guò)期失效,是否被允許去利用此響應(yīng)去回復(fù)后續(xù)請(qǐng)求而不需要重驗(yàn)證(revalidation)

Server: 這個(gè)消息頭提供所使用的Web服務(wù)器軟件的相關(guān)信息惭蹂。

其他幾個(gè)字面意思能看懂伞插,就不介紹了。

響應(yīng)實(shí)體內(nèi)容

大部分測(cè)試的平臺(tái)剿干,響應(yīng)實(shí)體會(huì)以json格式返回蜂怎,給前端處理。


未經(jīng)授權(quán)置尔,請(qǐng)勿轉(zhuǎn)載杠步,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榜轿,一起剝皮案震驚了整個(gè)濱河市幽歼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谬盐,老刑警劉巖甸私,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異飞傀,居然都是意外死亡皇型,警方通過(guò)查閱死者的電腦和手機(jī)诬烹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弃鸦,“玉大人绞吁,你說(shuō)我怎么就攤上這事』8瘢” “怎么了家破?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)购岗。 經(jīng)常有香客問(wèn)我汰聋,道長(zhǎng),這世上最難降的妖魔是什么喊积? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任烹困,我火速辦了婚禮,結(jié)果婚禮上注服,老公的妹妹穿的比我還像新娘韭邓。我一直安慰自己措近,他們只是感情好溶弟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瞭郑,像睡著了一般辜御。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屈张,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天擒权,我揣著相機(jī)與錄音,去河邊找鬼阁谆。 笑死碳抄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的场绿。 我是一名探鬼主播剖效,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焰盗!你這毒婦竟也來(lái)了璧尸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熬拒,失蹤者是張志新(化名)和其女友劉穎爷光,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體澎粟,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛀序,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年欢瞪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徐裸。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡引有,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倦逐,到底是詐尸還是另有隱情譬正,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布檬姥,位于F島的核電站曾我,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏健民。R本人自食惡果不足惜抒巢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秉犹。 院中可真熱鬧蛉谜,春花似錦、人聲如沸崇堵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸳劳。三九已至狰贯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赏廓,已是汗流浹背涵紊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幔摸,地道東北人摸柄。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像既忆,于是被迫代替她去往敵國(guó)和親驱负。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理尿贫,服務(wù)發(fā)現(xiàn)电媳,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 一庆亡、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,330評(píng)論 6 152
  • HTTP概述 超文本傳輸協(xié)議(HTTP匾乓,HyperText Transfer Protocol) 是互聯(lián)網(wǎng)上應(yīng)用最...
    曹淵說(shuō)創(chuàng)業(yè)閱讀 3,840評(píng)論 2 61
  • 前言:最近發(fā)現(xiàn)自己在網(wǎng)絡(luò)相關(guān)這一塊基礎(chǔ)很是欠缺,所以準(zhǔn)備花時(shí)間了解一下又谋,本文主要是講http協(xié)議的一些基礎(chǔ)拼缝,和一些...
    justCode_閱讀 2,092評(píng)論 0 23
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)娱局,內(nèi)容來(lái)源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,203評(píng)論 3 82