【问题标题】:In Postman, how do I take a response body from a Get Request, and put it in a PUT request with minor changes在 Postman 中,如何从 Get 请求中获取响应正文,并将其放入 PUT 请求中并进行细微更改
【发布时间】:2019-05-01 19:16:51
【问题描述】:

我运行了一个 POST 请求来创建新合同。此请求的 Json 响应是一个字符串 ID。

"03007"

我的 Post 请求有一个将响应保存为环境变量的测试。

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("newContractNb", jsonData);

然后我有一个 GET 请求,它将响应变量插入到请求中,以便我获取我创建的合同的数据。

我的回答是这样的。

{
    "contractNb": "03007",
    "progSrvcNm": "009",
    "contractPrtyNm": "PostmanAutomationContract",
    "contractCd": "000",
    "signDt": "2018-01-01T00:00:00",
    "startDt": "2018-01-01T00:00:00",
    "endDt": "2025-01-01T00:00:00",
    "remitTerms": 30
}

我在 Get 方法中有一个测试来将此响应正文保存为变量。

pm.environment.set('getRequestBody', pm.response.json())

是否可以在 PUT 请求的 Body 或 Pre-req 部分中使用此变量,但以某种方式使其更改选择参数 - 例如仅 contractPrtyNm?

【问题讨论】:

  • 是的,但是您首先需要修改响应,然后再将其设置到变量中,或者在预请求脚本中修改变量,然后重新设置它然后使用它。

标签: javascript postman postman-collection-runner


【解决方案1】:

当您收到来自“{{url}}/{{newContractNb}}”的响应时,您可以尝试这样的事情。修改属性,然后在请求中设置正文:

var jsonData = pm.response.json();
jsonData.progSrvcNm = "blah"; 

pm.environment.set("response_b", jsonData);

然后在您的 PUT 请求(类型无关紧要)正文中设置它

pm.environment.get("response_b");

【讨论】:

  • 嘿@so cal cheesehead,我尝试了你所说的。我保存了 Get 的响应并进行了编辑,例如 var jsonData = pm.response.json(); jsonData.contractPrtyNm = "PostmanAutomationContractEdit"; jsonData.remitTerms = 45; jsonData.altId1 = "自动编辑"; pm.environment.set("responseEdit", jsonData);然后我在我的 PUT 方法 {{responseEdit}} 的主体中输入变量,我收到 400 错误请求 - {“”:[“输入无效。” ] }
  • 我不确定 {{responseEdit}} 是否适用于正文。尝试使用 pm.environment.get("responseEdit") 看看是否有效
  • 它没有。它显示一个红色的 x 并带有悬停消息“意外的 'p'”
  • 实际上看起来 {{responseEdit}} 应该可以工作。我只是应要求尝试了它,并且效果很好。你能确认变量设置正确吗?如果您手动执行请求,在您进行修改并设置变量后,您可以检查“环境快速查看”以确保变量中的内容是您所期望的吗?
  • 我的 responseEdit 变量在环境快速查看中显示为 [object Object]。我不确定这意味着什么。
【解决方案2】:

感谢@Danny Dainton 的帮助!

帖子后的我的 Get 方法包含以下内容,以便将响应保存为变量并进行编辑。

let jsonData = pm.response.json()

jsonData.stuff = "PostmanAutomationContractEdit"
jsonData.otherStuff = 45
jsonData.altId1 = "AutoEdit"

function thing(id, classification, foo, foos, barf, contactNb) {
    this.id     = id
    this.classification = classification
    this.foo      = foo
    this.foos     = foos
    this.barf      = barf
    this.contactNb      = contactNb
}

let newThingData = new thing(pm.environment.get('newContractNb'), "bil", "y", "n", jsonData.thing[0].things, "000914")

jsonData.stuff[0].nextLevelStuff[0] = newPartyData

pm.environment.set('responseEdit', JSON.stringify(jsonData))

然后我使用正文中的变量运行我的 PUT 方法。

{{responseEdit}}

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 2019-02-08
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多