postman - 如何从一个请求中保存响应正文并在另一个请求中使用它并在 Postman 中进行一些更改
问题描述
我有一个对 OKTA 的 GET 请求,以检索一些使用一些变量等的信息。它返回一个正文。我有第二个 PUT 类型的请求,我在其中手动粘贴 BODY 并更改一个变量。我正在尝试确定是否可以删除将响应正文从第一个 GET 请求粘贴到第二个 PUT 请求的手动过程。
例如,我有一个 URL:
GET https://{{myurl}}/api/v1/apps/{{instanceid}}
这会像这样在有效负载中返回一些动态 JSON 数据
"blah":{ some more blah
},
"signOn": {
"defaultRelayState": null,
"ssoAcsUrlOverride": ""
"audienceOverride": null,
"recipientOverride": null
}
我希望做的是:
PUT https://{{myurl}}/api/v1/apps/{{instanceid}}
{replay entire body from 1st request with the modification of
"ssoAcsUrlOverride": "{{some var that points to a new url}},
}
我看过一些文章显示:
使用测试发送带有静态正文的 GET 请求并重播该正文。在这种情况下,我希望修改一个参数而不是按原样重播
我在这里尝试了这个线程(在邮递员中,我如何获取响应正文并在测试 postman-how-do-i-take-a-response-body-and-use-it-in-a中的新请求中使用它-new-request-within-tes) 但我收到一条错误消息,指出
responseBody
未定义
解决方案
首先,让我们先验证 JSON 响应。这是带有一些虚拟数据的有效 JSON。
{
"blah": "some more blah",
"signOn": {
"defaultRelayState": "1",
"ssoAcsUrlOverride": "www.google.com",
"audienceOverride": "true",
"recipientOverride": "yes"
}
}
1)将第一个请求的响应保存到环境变量req_body
中,如下所示,
var jsonData = pm.response.json();
pm.environment.set("req_body", jsonData);
2)在PUT请求中,replace_this_body
在body中取另一个环境变量。
req_body
3) 获取我们在 Pre-request 脚本的第一个请求中设置的 E'variable 的值。然后更改它的值并设置当前请求的主体变量。
var requestBody = pm.environment.get("req_body");
requestBody.signOn.ssoAcsUrlOverride = "https://www.getpostman.com";
pm.environment.set("replace_this_body", JSON.stringify(requestBody));
最后,您将获得更新的请求数据到 PUT 请求中!
推荐阅读
- javascript - 错误:“app/dashboard/widgets/assignments”的脚本错误,需要:app/dashboard/widgets
- java - 如何从 Apache HttpClient 4.x 通过 HttpPut 上传 InputStream
- php - 提前搜索选择城市,访问地点,关键字而不是结果
- websphere - WebSphere Application Server 本地存储库管理员无法登录
- css - 如何让logo变大?
- reactjs - 如何在 react-table 中为组件内容添加不区分大小写的过滤?
- tensorflow - 可变大小大于 GPU 的内存
- python - 行星倾角,用python沿着轨道跟踪旋转轴
- linux - 如何在文件名(也是子目录)中用一个空格替换双空格(CloudLinux Server 6.10 版)
- bash - 将 bash 命令重构为 tcsh 命令