使用PostMan通过Script动态获取Token

前情描述

公司需要接入企查查开放平台,当拿到接口文档的时候,想要先测试一下接口是否正常使用以及数据质量,通过其接口文档发现,需要在请求头header中添加动态生成的Token和当前时间戳Timespan来进行身份验证,但又不想通过写代码的方式去进行调用,那么需要在PostMan中通过一段JS脚本来解决这个问题。

新建测试环境

打开PostMan,新增一套环境变量

在这里插入图片描述

输入环境名字,填写变量名称,如果存在不会改变的全局变量,可以将值写入initial value(默认值)current value(当前值)中,或Token为动态配置的,可以忽略此步操作,需要通过后续JS赋值

在这里插入图片描述

获取调用参数

登录企查查开放平台,获取调用所需的Key和SecretKey

在这里插入图片描述

接口调用

按照文档中Token的生成规则:验证加密值 Md5(key+Timespan+SecretKey) 加密的32位大写字符串)
编写JS脚本动态生成Token
将生成的Token放入请求头中

在这里插入图片描述
在这里插入图片描述

var key = "";
var SecretKey = "";
postman.setGlobalVariable("key",key);
//获取当前时间戳
var timestamp =  Math.round(new Date().getTime());
var result = timestamp.toString().substring(0,10);
postman.setGlobalVariable("timestamp",result);
var str = key+result+SecretKey;

//使用MD5()方法对变量password的内容加密,然后转成字符串,大写
var strmd5 = CryptoJS.MD5(str).toString().toUpperCase().toString();

postman.setGlobalVariable("strmd5",strmd5)
console.log(strmd5)

补充

上述接口Token获取方式比较简单,而在实际开发中会存在另外一些场景
1.存在Token过期需要重新登录的情况
2.重新登陆后又需要在请求中手动复制Token
如果遇到这种情况,可以参考以下方式进行配置

配置登录接口获取动态Token

登录时动态获取Token,并且将Token设置到全局变量中
1.获取response的JSON格式
2.根据返回值的格式,获取到对应的Token,并设置到环境变量中
3.Pre-request Script和Tests区别:
Pre-request Script:在发送请求之前执行
Tests:在发送请求之后执行

在这里插入图片描述

//一定要根据实际情况具体去解析
//推荐和前面所讲的环境变量配合使用,不影响其余项目
var data = JSON.parse(responseBody);
pm.environment.set("Token", data.result);
将动态Token设置到请求头中

从登录接口获取的Token已设置成全局变量,下一步需要设置到接口的请求头中

在这里插入图片描述

//根据自身接口变量平常去配置
//若需要多个请求头参数,直接add多个即可
pm.request.headers.add({
    key: "Token",
    value: pm.environment.get("Token")
})
接口调用

配置好之后,再去调用其余接口,也不再需要手动去配置Token了,大大地减少了开发和测试的工作量在这里插入图片描述