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

如何从一个请求中保存响应正文,并在另一个请求中使用它,并在Postman中进行一些更改,postman,postman-pre-request-script,Postman,Postman Pre Request Script,我对OKTA有一个GET请求,请求检索一些使用变量等的信息。它返回一个主体。我有第二个类型为PUT的请求,我手动粘贴主体并更改一个变量。我正在尝试确定是否可以删除将第一个GET请求粘贴到第二个PUT请求的响应正文中的手动过程 例如,我有一个URL: GET https://{{myurl}}/api/v1/apps/{{instanceid}} 这将在有效负载中返回一些动态JSON数据,如下所示 "blah":{ some more blah }, "signOn": { "

我对OKTA有一个GET请求,请求检索一些使用变量等的信息。它返回一个主体。我有第二个类型为PUT的请求,我手动粘贴主体并更改一个变量。我正在尝试确定是否可以删除将第一个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请求,并重播该确切主体。在本例中,我希望修改一个参数not replay as=is

  • 我在这里试过这根线( postman-how-do-i-take-a-response-body-and-use-it-in-a-new-request-in-tes)但我收到一个错误,指出未定义
    responseBody


首先,让我们先验证JSON响应。下面是带有一些伪数据的有效JSON

{
    "blah": "some more blah",
    "signOn": {
        "defaultRelayState": "1",
        "ssoAcsUrlOverride": "www.google.com",
        "audienceOverride": "true",
        "recipientOverride": "yes"
    }
}
1) 将第一个请求的响应保存到环境变量
req\u body
中,如下所示

var jsonData = pm.response.json();

pm.environment.set("req_body",  jsonData);
2) 在PUT请求中,在body中获取另一个环境变量
replace\u this\u 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请求

太棒了。我终于有机会测试了它,效果很好。很高兴知道这一点@jeyyu2003请接受这个答案,如果这个答案对你有帮助,别忘了投票。也读