postman前置钩子处理base64、MD5加密,加签请求

postman前置钩子处理加密请求参数

  1. 你是不是遇到过请求参数需要base64、md5等加密呢
  2. 这种情况下之前做法是三方网站加密之后拿到密文到postman请求
  3. 或者是需要加签请求,这时候你还得先运行脚本或者sign之后然后一个一个配
  4. 你看了这篇文章你可以直接使用明文+前置钩子请求

设置参数

postman前置钩子处理base64、MD5加密,加签请求_第1张图片

设置钩子

postman前置钩子处理base64、MD5加密,加签请求_第2张图片

发起请求

postman前置钩子处理base64、MD5加密,加签请求_第3张图片

加密代码

// console.log(pm.request.body.raw)
const jsonData = JSON.parse(pm.request.body.raw);

// base64加密 password 参数
jsonData.password = btoa(jsonData.password);

//md5加密 这段代码是演示
// 导入 crypto-js 库// 检查 CryptoJS 是否已经存在
if (typeof CryptoJS === 'undefined') {
    // 导入 crypto-js 库
    const CryptoJS = require('crypto-js');
}
// 计算 MD5 哈希值
const md5Hash = CryptoJS.MD5(jsonData.password).toString();
console.log(md5Hash)

// 更新请求体
pm.request.body.update({
  mode: "raw",
  raw: JSON.stringify(jsonData),
  options: {
    raw: {
      language: "json"
    }
  }
});

加签代码 请求中直接使用变量{{sign}}

postman前置钩子处理base64、MD5加密,加签请求_第4张图片

console.log(request.data);
keys = Object.keys(request.data).sort() //请求参数名按照ASCII码升序排序

//拼接待签名字符串
var str = []
for (var p = 0; p < keys.length; p++) { 
    if(keys[p] == "sign" || request.data[keys[p]] === ""){ // "==" ==宽松相等,隐性类型转换,值相等,返回true; "===" 严格相等,值和类型都相等,返回true
        continue;
    }
    str.push(keys[p] + "=" + request.data[keys[p]]);
}
str.push('key=' + pm.environment.get("key"))
var sign = str.join("&")  

//MD5加密签名规格,并赋值给环境变量`sign`
pm.environment.unset("sign");
pm.environment.set("sign", CryptoJS.MD5(sign).toString());

你可能感兴趣的:(postman,测试工具,javascript,node.js)