1

我有一个对 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未定义

4

1 回答 1

1

首先,让我们先验证 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_body3) 获取我们在 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 请求中!

于 2019-09-04T06:03:01.190 回答