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

apiPost是否支持控制台模式或者js排序

ApiPost使用 后端 150次浏览

现在的问题是签名一直过不去     感觉是排序没生效

function sign() {
    var signUri = request.url.replace("{{server}}", "").split("?")[0];
    var params = request.url.substring(request.url.indexOf("?") + 1).split("&");
    console.log(params);
    var paramArray = [];
    params.forEach(function (value) {
        if (value.startsWith( 'sign=') && (value.startsWith( 'sign='))) {
            if (value.startsWith( "signt")) {
                paramArray.push("signt=" + apt.globals.get("signt"));
            } else if (value.startsWith( "appkey")) {
                paramArray.push("appkey=" + apt.globals.get("appkey"));
            } else if (value.startsWith( "nonce")) {
                paramArray.push("nonce=" + apt.globals.get("nonce"));
            } else {
                paramArray.push(value);
            }
        }
    });
    paramArray.sort();
     console.log(paramArray)
    var md5Str = signUri + '_' + paramArray.join('_') + '_' + apt.globals.get("secretKey");
    var sign = $.md5($.base64.encode(md5Str));
     console.log(sign)
    return sign;
}

apiPost是否支持控制台模式或者js排序


这是postman控制台的请求日志截图

| 0 收藏

4 个回答

// sign计算
function sign() {

    var signUri = request.url.replace("{{server}}", "").split("?")[0];

    var params = request.url.substring(request.url.indexOf("?") + 1).split("&");

    console.log(params);

    var paramArray = [];

    params.forEach(function (value) {
        if (!_.startsWith(value, 'sign=') && (!_.startsWith(value, 'sign='))) {
            if (_.startsWith(value, "signt")) {
                paramArray.push("signt=" + pm.environment.get("signt"));
            } else if (_.startsWith(value, "appkey")) {
                paramArray.push("appkey=" + pm.environment.get("appkey"));
            } else if (_.startsWith(value, "nonce")) {
                paramArray.push("nonce=" + pm.environment.get("nonce"));
            } else {
                paramArray.push(value);
            }
        }
    });

    paramArray.sort();
    console.log(paramArray)
    var md5Str = signUri + '_' + paramArray.join('_') + '_' + pm.environment.get("secretKey");
    console.log(md5Str)
    var sign = CryptoJS.MD5(encodeURIComponent(md5Str)).toString();
    // 设置sign
    console.log(sign)
    return sign;
}

这是原postman的签名算法    


如果我哪里转错了     能指正一下最好  


再次感谢

想确认下  是我的使用方式不对   还是暂时排序功能不支持

支持排序的。原生js支持是没有问题的。

新版已支持查看预(后)执行脚本的执行情况(日志),https://doc.apipost.cn/8157c623fbd095b4

Apipost 私有化火热进行中

撰写答案

只服务于

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

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