postman 根据参数计算sign的pre脚本

54 阅读1分钟
// 获取form-data参数并排除sign
let url = pm.request.url;
let formData = url.query;
let path = "/"+url.path.join("/");
console.log(path)

formData.add({
    key: 'timestamp',
    value: Math.floor(Date.now() / 1000).toString()
});

formData.add({
    key: 'apiKey',
    value: '699546fa07b91838'
});

let params = [];

let apiSecret =  'e2ed986afe936fbb';


formData.each(item => {
    if (item.key !== 'sign') {
        params.push({ key: item.key, value: item.value });
    }
});

// 按key字典序排序
params.sort((a, b) => a.key.localeCompare(b.key));


// 拼接key=value字符串
const stringToSign = params.map(item => `${item.key}=${item.value}`).join('');
let signContent = path+stringToSign+apiSecret
console.log(signContent)
let encodeContent = encodeURIComponent(signContent);
// 计算MD5
const sign = CryptoJS.MD5(encodeContent).toString();

// 添加或更新sign参数到请求form-data中
formData.add({
    key: 'sign',
    value: sign
});