在预请求脚本中获取环境变量时未解析 Postman 嵌套变量
Postman nested variables not parsed in when get environment variable in Pre-Request script
假设以下环境变量:
Base-URL
=> https://my.website.com/api
Cars-URL
=> {{Base-URL}}/cars
Auth-URL
=> {{Base-URL}}/login
如果我在邮递员中使用 GET {{Cars-URL}}
它工作正常并且它会调用 https://mu.website.com/api/cars
同样适用于 POST {{Auth-URL}}
它完美地工作并且我检索了一个 JWT 令牌。
但是我想使用我的集合的预请求脚本在集合中的任何调用之前自动获取 JWT 令牌。因此我使用以下设置:
var authUrl = pm.environment.get("Auth-URL");
pm.sendRequest({
url: authUrl,
method: "POST",
header: { ... },
body: { ... },
function (err, res) {
pm.environment.set("JWT-token", res)
}
});
我在控制台中得到以下输出:
POST http://{{base-url}}/login
Error: getaddrinfo ENOTFOUND {{base-url}}
Ocp-Apim-Subscription-Key: xxxxxxxxxxxxxxx
User-Agent: PostmanRuntime/7.26.5
Accept: */*
Postman-Token: xxxxxxxxxxxxxxx
Host: {{base-url}}
Accept-Encoding: gzip, deflate, br
好像pm.environment.get
没有解析嵌套变量。
如何解决这个问题?
使用 pm.variables.replaceIn
(自 v7.6.0 起可用)
这样做就可以了:
var authUrl = pm.variables.replaceIn(pm.environment.get("Auth-URL"));
pm.sendRequest({
....
})
假设以下环境变量:
Base-URL
=>https://my.website.com/api
Cars-URL
=>{{Base-URL}}/cars
Auth-URL
=>{{Base-URL}}/login
如果我在邮递员中使用 GET {{Cars-URL}}
它工作正常并且它会调用 https://mu.website.com/api/cars
同样适用于 POST {{Auth-URL}}
它完美地工作并且我检索了一个 JWT 令牌。
但是我想使用我的集合的预请求脚本在集合中的任何调用之前自动获取 JWT 令牌。因此我使用以下设置:
var authUrl = pm.environment.get("Auth-URL");
pm.sendRequest({
url: authUrl,
method: "POST",
header: { ... },
body: { ... },
function (err, res) {
pm.environment.set("JWT-token", res)
}
});
我在控制台中得到以下输出:
POST http://{{base-url}}/login
Error: getaddrinfo ENOTFOUND {{base-url}}
Ocp-Apim-Subscription-Key: xxxxxxxxxxxxxxx
User-Agent: PostmanRuntime/7.26.5
Accept: */*
Postman-Token: xxxxxxxxxxxxxxx
Host: {{base-url}}
Accept-Encoding: gzip, deflate, br
好像pm.environment.get
没有解析嵌套变量。
如何解决这个问题?
使用 pm.variables.replaceIn
(自 v7.6.0 起可用)
这样做就可以了:
var authUrl = pm.variables.replaceIn(pm.environment.get("Auth-URL"));
pm.sendRequest({
....
})