使用Postman的Pre-request Script自动生成通过网关需要校验的签名

后端代码一般都在网关里设置了签名算法,访问接口时,需要传签名参数通过网关才能访问这些接口。在使用postman进行接口测试时,可以使用Pre-request Script编写js代码完成签名算法,进而完成接口的访问。

下面举个算法签名的例子,请求是GET方式,需要四个参数:timestamp、sign、token、userId。

这里设置了全局变量,通过{{name}}就可以取到值,可以在Pre-request Script通过代码postman.setGlobalVariable(name, value)设置。

1. 签名算法

签名算法很简单:将timestamp、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;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值