在 Postman pre-request-script 中,如何读取使用变量的 header 的实际值

In a Postman pre-request-script, how can I read the actual value of a header that uses a variable

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

我尝试进行调用,在 header、tokenHeader:{{token}}

中包含该变量

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

如何在不直接查看变量的情况下获取此值?

基本上我少了一个function to interpolate a string, injecting variables from the environment

有一些解决方法:

function interpolate (value) {
    return value.replace(/{{([^}]+)}}/g, function (match, ) {
        return pm.variables.get();
    });
}
function interpolate (value) {
    const {Property} = require('postman-collection');
    let resolved = Property.replaceSubstitutions(value, pm.variables.toObject());
}

其中任何一个都可以用作
const tokenHeader = interpolate(pm.request.headers.get('tokenHeader'));
但第二个也是空安全的。

您可以使用以下函数将字符串中的任何 Postman 变量替换为其已解析的值:

var resolveVariables = s => s.replace(/\{\{([^}]+)\}\}/g,  
  (match, capture) => pm.variables.get(capture));

在你的例子中:

var token = resolveVariables(pm.request.headers.get('tokenHeader'));