如何解决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 举报,一经查实,本站将立刻删除。