微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

POSTMAN - 如何在单个请求中为嵌套对象设置环境值?

如何解决POSTMAN - 如何在单个请求中为嵌套对象设置环境值?

我正在尝试对几个字段进行签名,并将签名的字段作为请求中的另一个字段发送。它位于嵌套对象内。我正在尝试设置环境变量,但它再次设置了相同的值。

{
"id" : "1234","ref" : "REF05","details": [
        {
            "traceNumber": "201902120005","amount": "100","customerNumber": "0924","signature": "{{signature}}"
        },{
            "traceNumber": "201902120007","amount": "120","customerNumber": "0739","signature": "{{signature}}"
        }
     ],"date": "20210619"
}

我通过私钥对 traceNumber+amount+customerNumber 字段进行签名,并将值传递给签名字段,该字段适用于单个对象。如果我尝试使用多个对象,它只会设置最后一个计算出的签名。

if (globals['jsrsasign-js'] === undefined) {
    console.log("jsrasign library not already downloaded. Downloading Now. ")

    pm.sendRequest({
        url: "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js",method: "GET",body: {}
    },function(err,res) {
        postman.setGlobalVariable("jsrsasign-js",res.text());
        doHttpSig();
    });

} else {
    doHttpSig();
}

function doHttpSig() {
    var navigator = {}; //fake a navigator object for the lib
    var window = {}; //fake a window object for the lib
    eval(postman.getGlobalVariable("jsrsasign-js"));
    let pk = postman.getGlobalVariable("PRIVATEKEY")
    let pks = pk.split(/\\n/)
    //console.log("pkss Key",pks);
    privateKey = ""
    for (let i = 0; i < pks.length; i++) {
        privateKey += pks[i] + "\n"
    }
    
    var reqBody = JSON.parse(request.data);

    for (let i = 0; i<reqBody.details.length; i++) {
    var fields = reqBody.ref+reqBody.details[i].traceNumber+reqBody.details[i].amount+reqBody.details[i].customerNumber;
    var signature_algo = "SHA1withDSA";
    var payload = fields;
    var sig = new KJUR.crypto.Signature({
        "alg": signature_algo
    });
    sig.init(privateKey);

    sig.updateString(payload);
    var sigValueHex = sig.sign();
    var sigBase64 = hextob64(sigValueHex);

    postman.setEnvironmentvariable("signature",sigBase64);
    } 
}

这是我的邮递员处方。有人请告诉锄头来实现这一目标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。