根據不同公司約束不同, 腳本也不同
var header_list=pm.request.getHeaders(); // 獲取headers裏的數據,數組形式
var header_param='';
for(var item in header_list){
var value=pm.request.headers.get(item);
header_param+=item+"="+value+"&"; //將headers裏的數據,轉換成 key=value的形式,並且以&拼接所有參數
}
var url = request.url;
var body_param = url.split("?")[1];
var param=header_param+body_param; // headers串和body串已經拼成全部參數的串,爲下一部求sign做準備
if (param != null){
var params = param.split("&");
params.sort(); // 按首字母排序,
var keys = new Array(params.length);//下面一大堆,就是爲了把串裏的引用的全局變量,變成值,而不是{{globals}}
var values = new Array(params.length);
for (var i = 0; i < params.length; i++) {
keys[i] = params[i].split("=")[0];
values[i] = params[i].split("=")[1];
if(values[i].indexOf("{{")!= -1) {
temp = values[i].replace("{{", "");
temp = temp.replace("}}", "");
values[i] = pm.globals.get(temp);
if(keys[i] == "timeStamp") { //這裏定義了時間戳
values[i] = Math.round(new Date().getTime());
pm.globals.set("TIMESTAMP", values[i]);
}
if(keys[i] == "password"){ // 給密碼加密, 這裏有個疑惑,不知道如何調用postman定義的變量中的initial value 所以只能重新自己定義了一個initialpassword,拿到真正密碼, 再把加密後的密碼賦值給password
values[i] =pm.environment.get("initialpassword");
console.log(values[i]);
values[i] =CryptoJS.MD5(values[i]).toString();
pm.environment.set("password", values[i]);
}
}
}
var str = []
for (var p = 0; p < keys.length; p++) {
if (keys[p] == "sign" || values[p] === "") {
continue;
}
str.push(keys[p] + "=" + values[p]);
}
var sign = str.join("&");
sign=sign+"你們公司的密鑰";
console.log(sign);
pm.globals.set("SIGN", CryptoJS.MD5(sign).toString());
}