Postman 在预请求脚本中获取环境变量时未在中分析邮递员嵌套变量
想象一下以下环境变量:Postman 在预请求脚本中获取环境变量时未在中分析邮递员嵌套变量,postman,postman-pre-request-script,Postman,Postman Pre Request Script,想象一下以下环境变量: 基本URL=>https://my.website.com/api Cars-URL=>{{{Base-URL}}/Cars Auth-URL=>{{{Base-URL}}/login 如果我在postman中使用GET{{{{Cars URL}},它可以正常工作,并调用https://mu.website.com/api/cars 这同样适用于POST{{Auth URL}它工作得很好,我检索到了一个JWT令牌 但是,我希望在集合中进行任何调用之前,使用集合的预请求
=>基本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(“authUrl”);
发送请求({
url:authUrl,
方法:“张贴”,
标题:{…},
正文:{…},
函数(err、res){
pm.environment.set(“JWT令牌”,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(“authUrl”);
发送请求({
....
})
基本url来自哪里?在您的示例中,您有基本URL
作为名称。该方法应该是这样工作的,它实际上只是用来替换字符串值,并允许您在脚本中使用{..}
语法pm.variables.replaceIn(“{{Auth URL}}”)