Postman添加动态请求参数(接口签名参数动态计算)
本文介绍使用Postman工具在发送API请求前自动生成签名并添加到请求头的方法。通过Pre-request Script脚本获取JSON参数,进行MD5加密处理后,可通过两种方式添加签名:直接修改请求头或设置环境变量。文章重点说明了参数标准化处理(如换行符转换)对签名一致性的影响,并提供了签名验证的调试技巧。该方法适用于需要接口签名验证的后端系统,具体加密逻辑需根据实际系统调整。
·
前言
在使用postman发送请求测试接口时,有时后端网关可能做了接口签名验证,会导致我们修改了参数再次发送请求被网关拦截。本文将说明如何通过postman工具在请求发起之前获取json参数,并计算签名,并放到header中。注意:本文只说明postman如何添加动态请求头,具体签名怎么生成的,需要看自己所用系统的代码逻辑
理解签名参数的作用
签名参数通常用于API请求的身份验证和数据完整性验证,确保请求未被篡改。常见签名算法包括MD5、SHA-1、HMAC等,需结合时间戳、随机字符串等动态参数生成。本文只是做了简单的MD5加密生成签名,并未用到复杂的加密算法,可供参考
设置请求头参数
方式一
在本人所用的系统中,签名生成的逻辑是取出json参数,再将这个json参数字符串md5加密

打开Scripts -> Pre-request

放入如下代码:
// 获取json参数
let raw = pm.request.body.raw;
// 本人这里由于操作系统原因需要 将 unix换行符换成 windows的
// 否则可见字符看似一样,其实是不同的字符串,加密出来的md5是不同的
// 如果想确认字符串是否完全一致,打印字节数组是一个办法
raw = raw.replaceAll("(?<!\r)\n", "\r\n");
// md5加密
// 这里会提示CryptoJS弃用,你要是有强迫症可以考虑使用
// const hash = pm.crypto.createHash('md5').update(raw).digest('hex');
// 但是某些postman版本可能没有pm.crypto对象
const md5 = CryptoJS.MD5(raw).toString();
// 添加到请求头中,sign是自定义的键
pm.request.headers.add(
{key: "sign", value: md5}
);
方式二
打开Scripts -> Pre-request,放入如下代码
// 获取json参数
let raw = pm.request.body.raw;
// 这里可以做你自己需要的处理
raw = raw.replaceAll("(?<!\r)\n", "\r\n");
// md5加密
const md5 = CryptoJS.MD5(raw).toString();
// 设置变量到环境中,sign是自定义的键
pm.environment.set("sign", md5);
// 或者设置到全局,所有接口可用
// pm.globals.set("sign", md5);
打开headers,添加请求头获取变量

测试
发送请求,后端就已经看到请求头参数sign了。或者直接在脚本里面打印
// 获取当前请求的所有 headers
const headers = pm.request.headers;
// 遍历并打印每个 header
headers.each(header => {
console.log(`Header: ${header.key} = ${header.value}`);
});


更多推荐



所有评论(0)