Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postman 在预请求脚本中获取环境变量时未在中分析邮递员嵌套变量_Postman_Postman Pre Request Script - Fatal编程技术网

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
如果我在postman中使用
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}}”)