场景:
api请求时需要一个签名字段,该签名由其他请求字符串拼接一个secretKey后进行md5计算而得,在api频繁手动调试的情况下每次都计算大大降低了调试效率,所以使用postman的pre-request script功能自动添加该签名
操作:
首先将需要自动管理的请求字段以变量名的形式表示:
上图中signing字段通过{{signing}}变量来表示
接下来编写pre-request script脚本计算该变量并赋值:
这里使用到postman的官方文档:https://learning.postman.com/docs/postman/scripts/intro-to-scripts/
调试方法:点击菜单的view->show postman console即可打开控制台,其在Windows下快捷键为ctrl+alt+c,然后在pre-request script中写入要打印的信息,send该请求
可见控制台对指定信息进行了打印.
编写计算脚本:
接下来是正事,首先获取全部请求参数:
const getParams = pm.request.url.query;
此处pm为postman内置api,详情参加官方文档:https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/
然后遍历全部请求参数,按照调用规则拼接,注意当请求中参数处于未勾选状态时会有一个disabled属性,值为true,此类参数不参与计算
let args = [];
let queryStr = "";
getParams.each((singleGetParam)=>{
if (singleGetParam.key !== 'signing' && !singleGetParam.disabled) {
queryStr += singleGetParam.key + '=' + singleGetParam.value + "&";
}
});
queryStr = queryStr.slice(0,-1) + 'yourSecretKey';
最后计算并赋值给环境变量(postman中预置了CryptoJS库,可直接使用文档参加https://cryptojs.gitbook.io/docs/):
pm.environment.unset("signing");
pm.environment.set("signing", CryptoJS.MD5(queryStr).toString());
现在即可自动计算签名了
将脚本应用于整个收藏夹:
每一个请求都添加脚本太麻烦了,postman可以直接给整个收藏夹添加公用脚本,编辑收藏夹时点击pre-request script即可
以上です