编 写:袁 亮
时 间:2017-02-09
说 明:在postman中自定义签名方式调用接口
一、目的
1、电商项目内部api接口使用的签名方式导致在postman中不能使用
需要在postman中,自行实现签名方式以方便测试API接口
2、接口地址
https://api.shop.ci123.com/apidoc/
二、实现原理
1、在postman实际调用接口前,可以执行自定义js,从而实现数据签名
2、自定义JS可以获取到请求参数、链接参数,并且可以自定义变量
三、实现过程
1、增加链接参数 params
appid:{{appid}}
2、接口post参数增加
expire:{{expire}}
mdstr:{{mdstr}}
3、添加预执行脚本 Pre-request script
var appid = '10101';
var appsercet = '8e2160ec2b07f1faca9055be530bf09d';
// 定义appid
postman.setEnvironmentVariable("appid", appid);
// 定义时间戳
var expire = new Date().getTime();
postman.setGlobalVariable("expire", expire);
// 数据签名
var data = [];
jQuery.each(request.data, function(key, value){
if (key == 'expire') { // request里存储的是定义的值,而不是我们赋的值,需要单独处理
value = expire;
}
if (key != 'mdstr') {
data.push(key+'='+value);
}
});
data.sort();
var str = data.join('&')+appsercet;
var mdstr = CryptoJS.MD5(str).toString().toLowerCase();
postman.setGlobalVariable("mdstr", mdstr);
四、环境切换
1、变量
环境变量:EnvironmentVariable
在整个environment内都可以用
ps:在预执行脚本中,需要用environment.变量名来获取,不能执行获取到
全局变量:GlobalVariable
可以在任意环境下使用
ps:预执行脚本中定义的变量并不能在url、params使用
原因是因为拼接在预执行脚本之前
单在body里又是可以用的,数据组装在预执行脚本代码之后
自定义变量:
仅能在预执行脚本中用
2、环境管理
2.1 可以将不同环境的变量定义在环境变量中
比如测试机host,比如appid和appsecret等
2.2 在url、params、body中的数据,预执行脚本等地方使用
3、接口调用
3.1 选择环境
3.2 接口地址、参数等使用环境变量{{变量名}}
3.3 添加接口特定参数
4、添加预执行脚本
// 定义时间戳
var expire = new Date().getTime();
postman.setGlobalVariable("expire", expire);
// 数据签名
var data = [];
jQuery.each(request.data, function(key, value){
if (key == 'expire') { // request里存储的是定义的值,而不是我们赋的值,需要单独处理
value = expire;
}
if (key != 'mdstr') {
data.push(key+'='+value);
}
});
data.sort();
var str = data.join('&')+environment.appsercet;
var mdstr = CryptoJS.MD5(str).toString().toLowerCase();
postman.setGlobalVariable("mdstr", mdstr);