将动态值传递给Postman中的url

33qvvth1  于 2022-11-07  发布在  Postman
关注(0)|答案(4)|浏览(257)

我有两个请求

第一个请求

在完成我的第一个请求后,我得到了响应,我可以在其中解析taskId
在我的测试选项卡中,我将解析并存储它,如下所示

let taskId = pm.response.json().body.result[0].data.task
console.log(taskId)

我可以看到taskId在控制台中打印为938

第二个请求

我需要使用从第一个动态URL获得的taskId对该动态URL进行GET

http://localhost:3000/fortinet/monitor/{{taskId}}

因此,我设置了上面的URL,将HTTP动词设置为GET
在“预请求脚本”选项卡中,我执行了以下操作

let taskId = pm.globals.get("taskId")

结果

参考错误:未定义taskId
图像结果

如何进一步调试?

sd2nnvve

sd2nnvve1#

最 建议 的 方法 是 使用 : key , 如

http://localhost:3000/fortinet/monitor/:taskId

中 的 每 一 个
请 看 * * taskId * * 前面 的 冒号 。 原因 是 , URI 值 有时 可能 不 依赖 于 环境 。 因此 , 根据 用例 , 您 可以 像 我 说 的 那样 使用 或 {{taskId}}

v7pvogib

v7pvogib2#

您必须设置变量,但您做错了
请尝试以下操作:
pm.globals.set("taskID", pm.response.json().body.result[0].data.task)
更多信息,请访问:https://learning.postman.com/docs/postman/variables-and-environments/variables/

1hdlvixo

1hdlvixo3#

请注意,以https://example.com/:pathVariable.xmlhttps://example.com/:pathVariable.json等资源标识结尾的URL将不起作用。
您可以使用带有Accept: application/json标题的https://example.com/:pathVariable

vsdwdz23

vsdwdz234#

要传递动态值,首先必须在**Tests选项卡**中的环境变量或全局变量中设置它,因为测试在请求后运行,并且您将在请求发送后获得响应值,但由于您在json中获得响应,因此必须首先解析它,因此您可以在Tests选项卡中写入以下内容:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("taskId", jsonData.token); // OR
postman.setGlobalVariable("taskId", jsonData.token);

然后,您可以在url参数、请求正文或表单数据中的任何位置将taskId用作{{taskId}}
如果你想详细了解如何从响应中提取数据并将其链接到请求中,那么你可以访问this postman's official blog post,这是由Abhinav Asthana CEO和Postman Company的联合创始人编写的。

相关问题