使用Postman的Pre-request Script自動生成簽名

後端代碼一般都在網關裏設置了簽名算法,訪問接口時,需要傳簽名參數通過網關才能訪問這些接口。在使用postman進行接口測試時,可以使用Pre-request Script編寫js代碼完成簽名算法,進而完成接口的訪問。

下面舉個算法簽名的例子,請求是GET方式,需要四個參數:timestamp、sign、token、userId。

這裏設置了全局變量,通過{{name}}就可以取到值,可以在Pre-request Script通過代碼postman.setGlobalVariable(name, value)設置。

1. 簽名算法

簽名算法很簡單:將timestamp、sign、userId這三個參數組合成字符串,對字符串進行MD5加密。將加密後的值作爲sign參數的值傳入接口就可以了。具體代碼如下:

//全局變量:設置時間戳參數 
postman.setGlobalVariable("timestamp", new Date().getTime().toString());
//get中的參數
var queryParam = pm.request.url.query.members;  

//數組參數轉爲map參數
var param ={};
for (var item in queryParam){
         param[queryParam[item].key] = postman.getGlobalVariable(queryParam[item].key) == null ?  queryParam[item].value : postman.getGlobalVariable(queryParam[item].key);
}

//移除參數sign
delete param["sign"];

//param排序
paramSorted = objSort(param);
console.log("paramSorted:==",paramSorted);
//生成簽名
var sign = "";
for (let key in paramSorted){
    sign += key+"="+paramSorted[key]+"&";
}
console.log("sign:==",sign);
var md5Str =CryptoJS.MD5(sign);
postman.setGlobalVariable("sign", md5Str.toString(CryptoJS.enc.Hex).toUpperCase());

//排序方法
function objSort(obj)
{
    let keys = Object.keys(obj).sort();
    let arr = {};
    for (let i in keys) {
        arr[keys[i]] = obj[keys[i]];
    }
    return arr;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章