背景
请求业务接口时需要先调用auth应用的鉴权接口获取sign(类似其他系统登录接口返回的token),否则会提示:鉴权失败,从而导致业务接口无法使用。获取sign接口请求参数为业务接口的请求参数,所以Pre-request Script(预处理)post请求内的body为变量。
一、Pre-request Script(预处理)简介
预处理是指在发送HTTP请求之前,先执行一段脚本用于预处理请求,用来处理和获取所需要的数据。
二、Pre-request Script(预处理)使用
1、获取当前时间
//获取当前时间
const moment = require('moment');
var date =moment().format('YYYY-MM-DD HH:mm:ss');
pm.globals.set('newdate',date);
console.log(date);
输出值:
2、获取时间戳
//获取时间戳
var tidtime =Math.round(new Date().getTime());
pm.globals.set('newtime',tidtime);
console.log(tidtime);
输出值:
三、Pre-request Script(预处理)发送post请求
1、定义post请求url
//鉴权地址
const getSignUrl = 'xxx/sign/getSign';
2、获取业务接口的参数,做为鉴权接口的参数
// 获取请求体中的数据,字典
let raw = pm.request.body.raw;
// 把请求参数转成JSON
let requestBody = JSON.parse(raw);
// 请求参数拼接
let paramStr = {};
paramStr ['appId'] = requestBody.appId;
paramStr ['certiId'] = requestBody.certiId;
paramStr ['token'] = requestBody.token;
paramStr ['tid'] = requestBody.tid;
paramStr ['data'] = requestBody.data;
paramStr ['date'] = date;
console.log(paramStr);
3、鉴权接口实际请求参数
const getSignRequestData = {
url: getSignUrl,
method: 'POST',
header: {
'Content-Type': 'application/json'
},
body: {
mode: 'raw',
raw:JSON.stringify(paramStr)
}
};
4、发送post请求
//发送post请求
pm.sendRequest(getSignRequestData, function (err, response) {
if (err) {
console.error(err);
return;
}
//输出鉴权接口返回值
console.log(response.json());
if (response.json().payload.status = "true") {
// 如果请求成功获取sign值
pm.environment.set('sign',response.json().payload.sign);
}
});
5、业务接口使用获取到的sign值
引用方式 —— {{sign}}
结论
经过以上操作,业务接口可以直接发送post请求,每次请求的时间和sign值在Pre-request Script(预处理)内都会预先处理好。