Postman 使用Pre-request 脚本及引入外部依赖
编辑
1489
2022-09-12
背景
在使用 Postman 模拟请求一些接口时,如果遇到需要签名、加密等情况,需要对请求的字段动态做一些处理,每次去计算签名就比较麻烦。好在 Postman 提供了 Pre-request 脚本[1]这一功能,支持使用 JavaScript 写一些脚本来计算请求参数,做自动化接口测试等。
基础知识
其实 Postman 的脚本能实现的功能就是可以动态地生成请求的参数,这里需要用的其实就是get/set请求的参数。
获取请求体
pm.request.body
提供了一个 toJSON()
方法可以把请求体变成JSON结构体。
设置环境变量
pm.environment.set("signature", sign)
将生成的签名设置到环境变量中,后续用于请求。
使用 Postman 提供的变量
Postman 提供了一系列动态变量[2],例如时间戳、随机整数等。
var timestamp = pm.variables.replaceIn('{{$timestamp}}')
使用外部依赖
这是本篇文章的重点之一。有的接口官方提供了代码样例,如
var genSignature=function(secretKey,paramsJson){
var sorter=function(paramsJson){
var sortedJson={};
var sortedKeys=Object.keys(paramsJson).sort();
for(var i=0;i<sortedKeys.length;i++){
sortedJson[sortedKeys[i]] = paramsJson[sortedKeys[i]]
}
return sortedJson;
}
var sortedParam=sorter(paramsJson);
var needSignatureStr="";
for(var key in sortedParam){
var value=sortedParam[key];
needSignatureStr=needSignatureStr+key+value;
}
needSignatureStr+=secretKey;
var md5er = crypto.createHash('md5');//MD5加密工具
md5er.update(needSignatureStr,"UTF-8");
return md5er.digest('hex');
};
可以看到,这里使用了一个crypto
的包。我对JS并不熟悉,虽然 Postman 中自带有一个 crypto-js
,但我不想花时间研究这两个包的差异,然后再把这个代码替换成等效的用法,因此需要有一种机制去像正常引包一样,把这个包require
进来。
经过一番查找,我找到了这个repo[3]。其使用方法较为简单,clone 项目到本地然后按照repo里的提示运行即可。
- 0
- 0
-
赞助
微信赞赏码 -
分享