【问题标题】:In a Postman pre-request-script, how can I read the actual value of a header that uses a variable在 Postman 预请求脚本中,如何读取使用变量的标头的实际值
【发布时间】:2024-01-19 14:27:01
【问题描述】:

我有一个名为 token 的变量,其值为 myTokenValue

我尝试在标题中包含该变量的调用 tokenHeader:{{token}}

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    在你的例子中:

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

    【讨论】:

      【解决方案2】:

      基本上我错过了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'));
      但第二个也是 null 安全的。

      【讨论】: