在 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
有一些解决方法:
- 编写自己的函数,如 this comment by pomeh
function interpolate (value) {
return value.replace(/{{([^}]+)}}/g, function (match, ) {
return pm.variables.get();
});
}
- 使用 Postman 自己的
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'));
但第二个也是空安全的。
您可以使用以下函数将字符串中的任何 Postman 变量替换为其已解析的值:
var resolveVariables = s => s.replace(/\{\{([^}]+)\}\}/g,
(match, capture) => pm.variables.get(capture));
在你的例子中:
var token = resolveVariables(pm.request.headers.get('tokenHeader'));
我有一个名为 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
有一些解决方法:
- 编写自己的函数,如 this comment by pomeh
function interpolate (value) {
return value.replace(/{{([^}]+)}}/g, function (match, ) {
return pm.variables.get();
});
}
- 使用 Postman 自己的
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'));
但第二个也是空安全的。
您可以使用以下函数将字符串中的任何 Postman 变量替换为其已解析的值:
var resolveVariables = s => s.replace(/\{\{([^}]+)\}\}/g,
(match, capture) => pm.variables.get(capture));
在你的例子中:
var token = resolveVariables(pm.request.headers.get('tokenHeader'));