全部 ApiPost使用 后端 前端 接口测试 IOS Android 数据库 2022 测试技术 工具
问答 / 问答详情

跑预执行脚本一直报某个参数重复声明,怎么解决

ApiPost使用 30次浏览
// openAuthKey 密钥
const openAuthKey = "b4760f0e3f09b511ff8b94ca9125314b3ff42ef40f6a71174c07d2e9936";

// 获取请求体参数 (如果 requestBody 是对象形式,不需要解析)
const requestBody = pm.request.body.raw; // 这里假设 pm.request.body.raw 是一个 JSON 对象

// 检查 requestBody 是否已经是对象
let requestData_1;
if (typeof requestBody === 'string') {
    try {
        requestData_1 = JSON.parse(requestBody);  // 如果是字符串,解析为对象
    } catch (e) {
        console.error("Failed to parse requestBody:", e.message);
        return;
    }
} else {
    requestData = requestBody;  // 如果已经是对象,直接使用
}

// 在此处进行签名处理操作
let NewrequestData = { ...requestData };  // 克隆对象
//NewrequestData.signId = "a0f9003163a343a98890e24f33a8fabd";

// 递归处理对象并构建字符串
function processMap(map, stringBuilder) {
    const sortedKeys = Object.keys(map).sort();
    sortedKeys.forEach(key => {
        let value = map[key];
        if (!value || (typeof value === 'object' && Object.keys(value).length === 0)) return;
        stringBuilder.push(`${key}=`);
        if (typeof value === 'object') {
            let sb = [];
            processMap(value, sb);
            let subStr = sb.join("");
            if (subStr.length > 0) {
                stringBuilder.push(`|${subStr.slice(0, -1)}|`);
            } else {
                stringBuilder.push(subStr);
            }
        } else {
            stringBuilder.push(value.toString());
        }
        stringBuilder.push("&");
    });
}

const stringBuilder = [];
processMap(NewrequestData, stringBuilder);
if (stringBuilder.length > 0) {
    stringBuilder.pop(); // 移除最后一个 '&'
}

const stringToSign = stringBuilder.join('') + `&key=${openAuthKey}`;
console.log(stringToSign);
// 使用 CryptoJS 生成 HMAC SHA512 签名
const signature = CryptoJS.HmacSHA512(stringToSign, openAuthKey).toString(CryptoJS.enc.Hex);

console.log("Generated signature:", signature);
console.log(requestBody);

// 将签名存储在变量中
pm.environment.set("signature", signature);

我把这个脚本放在项目的预执行脚本中,执行每个接口时都会先跑这个脚本,前七天都是可以的,突然就报错了。

跑预执行脚本一直报某个参数重复声明,怎么解决

| 0 收藏

1 个回答

字段改个名试试

Apipost 私有化火热进行中

撰写答案

只服务于

前后端、移动端、测试人员

提问题 发布您遇到的Bug和问题,上万名大牛和开发者来帮您解决!