我对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请求并重播该主体。在这种情况下,我希望修改一个参数,使其不按is = is
我在这里尝试过此线程(In postman, how do I take a response body and use it in a new request within Tests
邮递员如何在tes内的新请求中接受响应主体并使用它,但我收到一条错误消息,指出未定义responseBody
< / p>
答案 0 :(得分:0)
首先,让我们首先验证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
。
3)获取我们在预请求脚本的第一个请求中设置的E'variable req_body
的值。然后更改它的值并设置当前请求的主体变量。
var requestBody = pm.environment.get("req_body");
requestBody.signOn.ssoAcsUrlOverride = "https://www.getpostman.com";
pm.environment.set("replace_this_body", JSON.stringify(requestBody));
最后,您将获得更新的请求数据到PUT请求中!