postman通过预处理脚本对请求的部分参数MD5签名后进行动态请求

场景:postman发送post请求,post的数据为json格式,部分参数动态生成,如时间戳,此时可以使用预处理脚本动态生成。另外需要对post的json数据进行部分自动的签名。

如需要发送的数据为:其中时间戳timestamp是动态生成的。

可使用如下方式:

附上脚本: 

let key = "XXXXXXX"; //签名Key
// let postparam = request.data;   //post 参数
// let queryParam = pm.request.url.query.members;  //get中的参数
let param = request.data;

// 动态的时间戳,这里是数值型
var ts = Math.round(new Date()/1000);
console.log("ts:"+ts);
var body=pm.request.body.raw;
body = body.replace("{{timestamp}}",ts);// 提取替换,否则可能在下一步序列化的时候报错
// 设置到全局变量
postman.setGlobalVariable("timestamp",ts);

// 序列化
var json="";
try {
  json = JSON.parse(body); //序列化JSON BODY
  param = json;
}catch(err){
  //BODY不是JSON格式
  console.log("json data error");
}
console.log(json);

// 参数排序
param = objSort(param);
let jsonStr = JSON.stringify(param).toString();
// 拼接待签名字串 (规则:json+key)
var sign = jsonStr+key;
console.log(sign);
// MD5签名
sign = CryptoJS.MD5(sign).toString();
console.log(sign);
// 设置到环境变量中
postman.setEnvironmentVariable("sign", sign);

// 定义对参数排序的方法,sign不参与排序
function objSort(obj)
{
    let keys = Object.keys(obj).sort();
    let arr = {};
    for (let i in keys) {
        if(keys[i]=="sign"){
            continue;
        }
        arr[keys[i]] = obj[keys[i]];
    }
    return arr;
}

脚本实现功能,对psot的json参数进行参数升序排列后,对生成传json字串拼接加密key后进行MD5签名。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值