我有一个名为token
的变量,具有特定值myTokenValue
我尝试进行一个在标头tokenHeader:{{token}}
我还有一个pre-request-script,它需要根据令牌头的值更改请求,但是如果我尝试读取值pm.request.headers.get('tokenHeader')
,我会得到字面值{{token}}
而不是插值的myTokenValue
如何获得此值而不必直接查看变量?
答案 0 :(得分:1)
基本上我错过了一个function to interpolate a string, injecting variables from the environment
有一些解决方法:
function interpolate (value) {
return value.replace(/{{([^}]+)}}/g, function (match, $1) {
return pm.variables.get($1);
});
}
replaceSubstitutions
,如this comment by codenirvana function interpolate (value) {
const {Property} = require('postman-collection');
let resolved = Property.replaceSubstitutions(value, pm.variables.toObject());
}
这些都可以用作
const tokenHeader = interpolate(pm.request.headers.get('tokenHeader'));
但是第二个也是空安全的。
答案 1 :(得分:1)
您可以使用以下函数将字符串中的任何Postman变量替换为其解析值:
var resolveVariables = s => s.replace(/\{\{([^}]+)\}\}/g,
(match, capture) => pm.variables.get(capture));
在您的示例中:
var token = resolveVariables(pm.request.headers.get('tokenHeader'));