1.背景介紹
當(dāng)開發(fā)人員需要調(diào)試一個(gè)網(wǎng)頁(yè)是否運(yùn)行正常,并不是簡(jiǎn)簡(jiǎn)單單地調(diào)試網(wǎng)頁(yè)的HTML、CSS、腳本等信息是否運(yùn)行正常,更加重要的是網(wǎng)頁(yè)能夠正確是處理各種HTTP請(qǐng)求,畢竟網(wǎng)頁(yè)的HTTP請(qǐng)求是網(wǎng)站與用戶之間進(jìn)行交互的非常重要的一種方式,在動(dòng)態(tài)網(wǎng)站中,用戶的大部分?jǐn)?shù)據(jù)都需要通過HTTP請(qǐng)求來與服務(wù)器進(jìn)行交互。Postman插件就充當(dāng)著這種交互方式的“橋梁”。
2.知識(shí)剖析
Postman 是一個(gè)非常棒的Chrome擴(kuò)展,提供功能強(qiáng)大的API & HTTP 請(qǐng)求調(diào)試。
它能夠發(fā)送任何類型的HTTP requests (GET, HEAD, POST, PUT..),附帶任何數(shù)量的參數(shù)+ headers;
支持不同的認(rèn)證機(jī)制(basic, digest, OAuth),接收到的響應(yīng)語法高亮(HTML,JSON或XML);
Postman 能夠保留了歷史的請(qǐng)求,這樣我們就可以很容易地重新發(fā)送請(qǐng)求,有一個(gè)“集合”功能,用于存儲(chǔ)所有請(qǐng)求相同的API/域。
1.下載安裝postman,postman安裝方法教程
2.有時(shí)需要在不同的環(huán)境下跑相同的測(cè)試,此時(shí)可以通過設(shè)置環(huán)境變量來動(dòng)態(tài)選擇。點(diǎn)擊右上角的設(shè)置按鈕:Manage Environments,填寫該環(huán)境的名稱:如測(cè)試環(huán)境,并在key和value中填寫需要的鍵值,創(chuàng)建好所有環(huán)境后,在右上角下拉列表選擇需要的環(huán)境就好

postman界面介紹:

1、postman調(diào)試的歷史記錄,保留了每次測(cè)試時(shí)的請(qǐng)求參數(shù);
2、在Postman中,Collection類似文件夾,可以把同一個(gè)項(xiàng)目的請(qǐng)求放在一個(gè)Collection里方便管理和分享,Collection里面也可以再建文件夾;
3、設(shè)置environment variables(環(huán)境變量)和global variables(全局變量),點(diǎn)擊右邊的眼睛可以快速查看當(dāng)前的變量;
4、選擇HTTP 請(qǐng)求類型的地方,各種常見的不常見的非常全;
5、請(qǐng)求URL,兩層大括號(hào)表示這是一個(gè)環(huán)境變量,可以在3的位置選擇當(dāng)前的environment,環(huán)境變量就會(huì)被替換成該environment里variable的值;
6、點(diǎn)擊可以設(shè)置URL參數(shù)的key和value;
7、點(diǎn)擊發(fā)送請(qǐng)求;
8、點(diǎn)擊保存請(qǐng)求到Collection,如果要另存為的話,可以點(diǎn)擊右邊的下箭頭;
9、設(shè)置鑒權(quán)參數(shù),可以用OAuth之類的;
10、自定義HTTP Header;
11、設(shè)置Request body;
12、顯示發(fā)起請(qǐng)求之前執(zhí)行的腳本;
13、在收到response之后執(zhí)行的測(cè)試;
14、返回?cái)?shù)據(jù)的格式,Pretty可以看到格式化后的JSON,Raw就是未經(jīng)處理的數(shù)據(jù),Preview可以預(yù)覽HTML頁(yè)面。
3.常見問題
post請(qǐng)求里面,有多種傳參方式:
1.form-data
這種方式需要在header里面聲明Content-Type,然后再添加表單內(nèi)容,另外需要注意的是,有文件上傳操作的時(shí)候,是可以使用表單上傳的,參數(shù)里面是可以選擇文件的。后端獲取的時(shí)候要注意,有些框架對(duì)同時(shí)存在參數(shù)和文件的請(qǐng)求獲取順序是有要求的,必須先獲取文件再獲取其他參數(shù),不然會(huì)報(bào)錯(cuò)。
2.x-www-form-urlencoded
同樣的需要在header里面聲明Content-Type,x-www-form-urlencoded類型的數(shù)據(jù)會(huì)將表單轉(zhuǎn)換成鍵值對(duì)。
3.raw
可以上傳json/javascript等格式的數(shù)據(jù),需要在header里聲明不同的Content-Type,以前遇到過傳對(duì)象時(shí),使用form-data無法完成,就手動(dòng)用raw拼成了json對(duì)象
4.編碼實(shí)戰(zhàn)
POSTMAN的斷言
1.判斷HTTP返回狀態(tài)碼為200 2.判斷響應(yīng)正文中是否包含:"statusCode":200 3. 解析響應(yīng)正文,并判斷statusCode的值是200,message的值是”Success.在SNIPPETS中,往下拉,有一項(xiàng)”Status code:Code is 200”,這個(gè)就是為場(chǎng)景中的第一條準(zhǔn)備的,就是判斷HTTP返回狀態(tài)碼是否為200。點(diǎn)擊這一項(xiàng),可以看到在其左邊出現(xiàn)了:

其中tests["Status code is 200"]中的tests是一個(gè)內(nèi)置對(duì)象,tests["Status code is 200"]是指為這個(gè)斷言起個(gè)名稱叫”Status code is 200”,這個(gè)名稱可以自行修改。responseCode.code === 200中的responseCode是內(nèi)置對(duì)象,responseCode對(duì)象中有個(gè)屬性是code,是指HTTP狀態(tài)碼的code,判斷code是否為200.綜合起來,這句代碼的意思是:名稱為”Status code is 200”的斷言中,判斷responseCode對(duì)象的code屬性值是否為200.同樣在SNIPPETS中,找到一項(xiàng)”Response body:Contains string”,點(diǎn)擊后,在其左邊出現(xiàn)了:

我們需要修改一下:

在第三條,很顯然我們需要解析JSON串,所以,在SNIPPETS中找到”Response body:JSON value check”并點(diǎn)擊,在其左邊出現(xiàn)了:

這里面其實(shí)是JS代碼,jsonData變量其實(shí)是解析完JSON后的對(duì)象,在JS中,一個(gè)JSON對(duì)象獲取其屬性的值,直接是用jsonData.value,于是,我們把代碼給修改一下:

這樣一來,我們可以看到一共有tests的斷言4個(gè),點(diǎn)擊Send,發(fā)送請(qǐng)求,在響應(yīng)區(qū)內(nèi)可以看到如下圖:
