目前項(xiàng)目涉及PC及APP端接口共用問題,后臺(tái)接口給登陸后的用戶設(shè)置了一個(gè)token,接口調(diào)用時(shí)請(qǐng)求頭的參數(shù)值必須要?jiǎng)討B(tài)生成日杈,為了解決這個(gè)問題庞萍,查看Postman API文檔拧烦,配置了可以方便后端開發(fā)者的Tests腳本,如果你需要钝计,請(qǐng)按下面方式配置恋博。
用戶登陸
用戶登陸頁面的請(qǐng)求頭參數(shù)為固定不變,如圖所示
當(dāng)填寫正確的用戶名和密碼時(shí)私恬,系統(tǒng)用返回如下圖的數(shù)據(jù)债沮,里面攜帶token的值,如圖所示
在用戶登陸測(cè)試接口頁面,在點(diǎn)擊Tests本鸣,在里面添加下面代碼疫衩,如圖所示:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
var data = JSON.parse(responseBody);
//key值
var key = '要加密的Key';
//current-timestamp
var currentTimestamp = new Date().getTime().toString();
//nonce-str
var nonceStr = getStr(32);
function getStr(len){
len = len || 32;
var chars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var maxPos = chars.length;
var s = '';
for (let i = 0; i < len; i++) {
s += chars.charAt(Math.floor(Math.random() * maxPos));
}
return s;
}
//token
var token = data.data.token;
//拼接加密字符串
var signStr = token + currentTimestamp.substring(0,10) + nonceStr.substring(0,16) + key;
var CryptoJS = require('crypto-js');
var lpSign = CryptoJS.MD5(signStr).toString();
// 設(shè)置環(huán)境變量token,供后面的接口引用
pm.environment.set("token", data.data.token);
// 設(shè)置環(huán)境變量current-timestamp荣德,供后面的接口引用
pm.environment.set("current-timestamp", currentTimestamp);
// 設(shè)置環(huán)境變量current-timestamp闷煤,供后面的接口引用
pm.environment.set("nonce-str", nonceStr);
// 設(shè)置環(huán)境變量current-timestamp童芹,供后面的接口引用
pm.environment.set("lp-sign", lpSign);</pre>
配置環(huán)境變量,因?yàn)槊總€(gè)接口都涉及請(qǐng)求頭鲤拿,所有我們用不用Postman中的環(huán)境變量假褪,來實(shí)現(xiàn),請(qǐng)求頭動(dòng)態(tài)更新
步驟如下
1近顷、 打開設(shè)置
2生音、 添加新環(huán)境
3、 添加環(huán)境變量
保存環(huán)境變量幕庐,在調(diào)用其它接口時(shí)久锥,先選擇環(huán)境,如下圖所示
當(dāng)Postman調(diào)用登陸接口時(shí)异剥,會(huì)自動(dòng)把缺少的環(huán)境變量值都添充完整瑟由,如下圖所示
調(diào)用其它接口時(shí),請(qǐng)求頭引用環(huán)境變量冤寿,具體語法如下圖所示
這樣我們以后歹苦,調(diào)用其它接口,就不用每次都修改請(qǐng)求頭數(shù)據(jù)督怜,只要引用環(huán)境變量就完美解決問題殴瘦。
注:老版本Postman有問題,本測(cè)試版本為6.5.2