在预请求脚本中获取环境变量时未解析 Postman 嵌套变量

Postman nested variables not parsed in when get environment variable in Pre-Request script

假设以下环境变量:

如果我在邮递员中使用 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({
   ....
})