簡(jiǎn)介
一直想總結(jié)一下自己之前做的一個(gè)接口自動(dòng)化測(cè)試的一個(gè)項(xiàng)目,想了一下直接來寫的話有點(diǎn)大,就先從http開始吧叫惊。
http協(xié)議即超文本傳輸協(xié)議帝洪,是應(yīng)用非常廣泛的一種應(yīng)用層協(xié)議似舵,主要有以下特點(diǎn):
1.支持客戶端/服務(wù)器模式
2.簡(jiǎn)單快速〈邢浚客戶端向服務(wù)器請(qǐng)求服務(wù)時(shí)只需要傳請(qǐng)求的方法和路徑
3.靈活砚哗。http協(xié)議允許傳送任意類型的數(shù)據(jù)對(duì)象,正在傳輸?shù)念愋陀蓃equest或response的header中的Content-Type標(biāo)記
4.無連接砰奕。http協(xié)議限制每次連接只處理一個(gè)請(qǐng)求蛛芥,服務(wù)端處理完請(qǐng)求,并得到客戶端的響應(yīng)之后军援,即斷開連接
5.無狀態(tài)仅淑。http是無狀態(tài)協(xié)議指對(duì)于每次的事務(wù)處理沒有記憶功能。
url規(guī)則
http://host:[port][abs_path]
http表示使用http協(xié)議來定位網(wǎng)絡(luò)資源胸哥,host表示請(qǐng)求的服務(wù)器的地址涯竟,port為請(qǐng)求的端口號(hào),默認(rèn)端口為80可以省略空厌,ads_path為請(qǐng)求的路徑庐船,如果沒有ads_path則用“/”的路徑請(qǐng)求資源
http請(qǐng)求
http請(qǐng)求由3部分組成,請(qǐng)求行嘲更、消息報(bào)頭筐钟、請(qǐng)求正文
1.請(qǐng)求行格式method request-url http-version crlf
method表示請(qǐng)求方法
request-url表示請(qǐng)求的url
http-version表示請(qǐng)求的協(xié)議版本
crlf表示換行和回車
常用的http請(qǐng)求方法:
get 請(qǐng)求獲取request-url所表示的資源
post 在request-url所標(biāo)識(shí)的資源后添加新的數(shù)據(jù)
head 請(qǐng)求獲取request-url所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭
get 在瀏覽器中輸入url訪問網(wǎng)頁,瀏覽器采用get方法向服務(wù)器獲取資源
post 方法要求被請(qǐng)求的服務(wù)器接受后面附加的數(shù)據(jù)赋朦,常用來提交表單
head 方法用來獲取響應(yīng)頭的header,可以用來測(cè)試鏈接的有效性篓冲、得到請(qǐng)求數(shù)據(jù)的大小(header中的Content-Length)而不用下載數(shù)據(jù)
http響應(yīng)
http響應(yīng)也有三部分組成宠哄,狀態(tài)行壹将、響應(yīng)頭、響應(yīng)正文
http-version status-code Reason-Phrase crlf
http-version表示服務(wù)器的協(xié)議版本琳拨,status-code表示服務(wù)器返回的響應(yīng)狀態(tài)碼瞭恰,Reason-Phrase 狀態(tài)代碼的文本屯曹, crlf表示回車和換行
http響應(yīng)狀態(tài)碼狱庇,由三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別恶耽,有以下5中可能的取值
1xx:表示請(qǐng)求已接收正在處理
2xx:表示請(qǐng)求已成功接收
3xx:表示重定向密任,需要進(jìn)一步處理
4xx:表示客戶端錯(cuò)誤,請(qǐng)求有語法錯(cuò)誤或無法實(shí)現(xiàn)
5xx:表示服務(wù)端錯(cuò)誤偷俭,服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
常用的http狀態(tài)碼
200/請(qǐng)求成功
400/客戶端有語法錯(cuò)誤浪讳,服務(wù)器不能理解
401/請(qǐng)求未經(jīng)授權(quán),一般和header有關(guān)系
403/服務(wù)器收到請(qǐng)求涌萤,但是拒絕提供服務(wù)(禁止訪問淹遵,爬蟲時(shí)多會(huì)遇到)
405/禁止訪問資源(一般接口參數(shù)傳錯(cuò)會(huì)返回此狀態(tài)碼)
500/服務(wù)器內(nèi)部發(fā)生錯(cuò)誤
503/服務(wù)器當(dāng)前不能處理客戶端請(qǐng)求
http消息報(bào)頭
這里的消息報(bào)頭即header
請(qǐng)求報(bào)頭
Accept 表示請(qǐng)求客戶端希望接收哪些類型的信息口猜。Accept:image/gif表示客戶端希望接收?qǐng)D片類型的數(shù)據(jù),Accept:text/html表示客戶端希望接收html文本
Accept-Charset表示請(qǐng)求客戶端希望接收的字符集透揣。Accept-Charset:iso-8859-1,gb2312如果未設(shè)置則表示可以接收任何字符集
Accept-Encoding用于指定可接受的內(nèi)容編碼
Host 發(fā)送請(qǐng)求時(shí)該報(bào)頭域是必須的济炎,用于指定被請(qǐng)求資源的地址和端口號(hào)
響應(yīng)header
User-Agent 將請(qǐng)求客戶端的操作系統(tǒng)、瀏覽器和其他屬性告訴服務(wù)器辐真。這個(gè)報(bào)頭域不是必須的
響應(yīng)報(bào)頭
Location 響應(yīng)報(bào)頭域用于重定向接收者到一個(gè)新的位置
server 響應(yīng)報(bào)頭域包含了服務(wù)器處理該請(qǐng)求的軟件信息须尚,與User-Agent對(duì)應(yīng)
實(shí)體報(bào)頭
請(qǐng)求和響應(yīng)消息可以傳送一個(gè)實(shí)體報(bào)頭
常用的實(shí)體報(bào)頭
Content-Length實(shí)體報(bào)頭域指明實(shí)體正文的長(zhǎng)度,用十進(jìn)制的字節(jié)數(shù)來表示
Content-Type實(shí)體報(bào)頭域指明發(fā)送給接收者的正文類型
Content-Languaue實(shí)體報(bào)頭域描述了資源所用的自然語言
Content-Encoding實(shí)體報(bào)頭域被用作媒體類型的修飾符侍咱,它的值指示了已經(jīng)被應(yīng)用到實(shí)體正文的附加內(nèi)容的編碼耐床,因而要獲得Content-Type報(bào)頭域中所引用的媒體類型,必須采用相應(yīng)的解碼機(jī)制