背景:由于我们项目接口入参都有加密,每次接口调试都得启动项目,运行项目才能把对应的参数给传到后台,然后后台再解密参数,才能进行接口调试,很麻烦(启动前端项目),如果接口不进行加密,暴露在外面,又有点不安全的样子,那么怎么才能每次写接口前,就把对应的参数给加密好,然后进行调试勒? 当然是有的-------- postman强大的工具, 设置环境变量

你们平时有没有看到过这种?{{xxx}} 如下图: 这种就是设置了环境变量

postgres lib环境变量设置 postman新建环境变量_postgres lib环境变量设置

 

postgres lib环境变量设置 postman新建环境变量_测试工具_02

那么,我们需要怎么弄勒? 

第一步:下载postman 并登录/注册

   下载地址点我

第二步:创建一个team

第三步:新建环境变量

新建一个环境变量,名字无所谓,然后设置参数:里面的参数是:接口每次请求必传不变的值(设置环境变量

postgres lib环境变量设置 postman新建环境变量_环境变量_03

postgres lib环境变量设置 postman新建环境变量_ide_04

第四步:

进入collections ,新建项目(目录),然后进行创建一个接口文档,里面内容就是我们这个接口的内容,参数,公共参数就用环境变量 {{变量名}} ,右上角选择我们建的环境变量

postgres lib环境变量设置 postman新建环境变量_ide_05

postgres lib环境变量设置 postman新建环境变量_postman_06

 这个地址也可以写成公共的

postgres lib环境变量设置 postman新建环境变量_postman_07

 ,好接下来,就是亮点了

第五步:pre-request script

请求发送之前需要执行的代码片段, 这里也就是我说的,我们需要加密参数,然后再请求接口

postgres lib环境变量设置 postman新建环境变量_postman_08

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,大功告成