在邮递员预先请求脚本中,如何读取使用变量的标头的实际值

时间:2019-06-14 13:54:02

标签: variables postman postman-pre-request-script

我有一个名为token的变量,具有特定值myTokenValue

我尝试进行一个在标头tokenHeader:{{token}}

中包含该变量的调用

我还有一个pre-request-script,它需要根据令牌头的值更改请求,但是如果我尝试读取值pm.request.headers.get('tokenHeader'),我会得到字面值{{token}}而不是插值的myTokenValue

如何获得此值而不必直接查看变量?

2 个答案:

答案 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);
    });
}
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'));