背景:由于我们项目接口入参都有加密,每次接口调试都得启动项目,运行项目才能把对应的参数给传到后台,然后后台再解密参数,才能进行接口调试,很麻烦(启动前端项目),如果接口不进行加密,暴露在外面,又有点不安全的样子,那么怎么才能每次写接口前,就把对应的参数给加密好,然后进行调试勒? 当然是有的-------- postman强大的工具, 设置环境变量
你们平时有没有看到过这种?{{xxx}} 如下图: 这种就是设置了环境变量
那么,我们需要怎么弄勒?
第一步:下载postman 并登录/注册
第二步:创建一个team
第三步:新建环境变量
新建一个环境变量,名字无所谓,然后设置参数:里面的参数是:接口每次请求必传不变的值(设置环境变量)
第四步:
进入collections ,新建项目(目录),然后进行创建一个接口文档,里面内容就是我们这个接口的内容,参数,公共参数就用环境变量 {{变量名}} ,右上角选择我们建的环境变量
这个地址也可以写成公共的
,好接下来,就是亮点了
第五步:pre-request script
请求发送之前需要执行的代码片段, 这里也就是我说的,我们需要加密参数,然后再请求接口
let _stringifySorted = function(query) {
let keys = Object.keys(query).sort();
let list = keys.filter(function(item) {
return item != 'sign';
});
let pairs = list.reduce(function(collect, key) {
let p = {};
p[key] = query[key];
return collect.concat(key).concat(p[key]);
}, []);
return pairs.join('');
};
let provider = pm.environment.get('provider')
let appKey = pm.environment.get('appKey')
let secret = pm.environment.get('secret')
let timeStamp = Math.round(new Date().getTime());
pm.environment.set('timeStamp_env', timeStamp.toString())
let req = request.data;
req['timeStamp'] = timeStamp
req['provider'] = provider
req['appKey'] = appKey
let search = _stringifySorted(req)
let sign = CryptoJS.MD5(secret + search + secret)
pm.environment.set('sign_env', sign.toString().toUpperCase())
这里面包含了一些postman的自身语法,相关语法请看官网,需要根据自己项目进行改造,
更多 pre-request script 语法请到官网查看, 链接点我
ok,大功告成