postman调试api接口时,常遇到两个问题:
1.环境分为开发环境,测试环境,正式环境,如何只写一个接口,通过切换postman环境来实现不同环境的接口调用?
2. api接口请求时往往会添加,来源(Source),签名时间(Sign-Time),签名(Sign).同一个接口不同时间段请求,签名时间,签名也不同,如何实现每次自动获取签名时间,签名?
案例及解决:
问题1:postman中可以设置环境,在不同的环境分别设置环境变量(url),然后在接口中使用 {{url}}来替换. 如下图
问题2:因本人签名时间/签名放在请求头里,以下以此为例.
1).可以在postman全局变量或环境变量增加key/value 分别对应如下 wdsign/js代码,代码如下
var wdsign = { getSource: function() { var source = pm.environment.get('Source'); if(source === undefined) { source = 'default_source'; pm.environment.set("Source", source); } return source; }, getSignTime: function() { return parseInt(new Date().getTime() / 1000); }, getSign: function(source, signTime) { let data = request.data; let dataString = '' if (typeof data === 'object') { Object.keys(data).sort().forEach(function(ele, index) { let value = data[ele] if (typeof value === 'object') { value = JSON.stringify(value) } dataString += ele + '=' + value }) } dataString += source; dataString += signTime; return CryptoJS.MD5(dataString).toString();; }, run: function() { var source = this.getSource(); var signTime = this.getSignTime(); var sign = this.getSign(source, signTime); pm.environment.set("Sign-Time", signTime); pm.environment.set("Sign", sign); } }
2).在请求头中分别对应设置如下
3).在Pre-requestScript添加,代码如下
eval(globals.wdsign);
wdsign.run();