如何保存一个请求中的响应正文,并在Postman中进行一些更改的情况下在另一个请求中使用它

时间:2019-09-04 00:54:20

标签: postman postman-pre-request-script

我对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}},

}

我看了一些显示以下内容的文章:

1 个答案:

答案 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

enter image description here

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请求中!