IntelliJ HTTP 客户端 - 在另一个 POST 请求的以下 JSON 正文中使用一个 POST 请求中设置的变量

etc*_*etc 7 client http intellij-idea

在 IntelliJ 上的 HTTP 客户端编辑器中,我尝试执行以下操作:

POST http://{{host}}/path-to-my-first-resource

Content-Type: application/json

{"field1":"false",
 "field2":"test",
 "field3":"test",
}
Run Code Online (Sandbox Code Playgroud)

我得到了上述 POST 的结果:

> {%
client.global.set("my-first-returned-var", response.body.json.var1);
client.global.set("my-second-returned-var", response.body.json.var2);
client.global.set("my-third-returned-var", response.body.json.var3); 
%}
Run Code Online (Sandbox Code Playgroud)

变量已成功返回。因此,我尝试在后续的 POST 中使用这些变量,如下所示:

POST http://{{host}}/path-to-my-second-resource

Content-Type: application/json

{"anotherfield1":"{{my-first-returned-var}}",
 "justanother":"{{my-second-returned-var}}"
}
Run Code Online (Sandbox Code Playgroud)

我尝试发送正文中带引号和不带引号的变量,但 IntelliJ 没有翻译双花括号内的变量。我可以使用 HTTP 标头上的变量,例如:

GET https://my-request
Authorization: Bearer {{my-first-returned-var}}
Run Code Online (Sandbox Code Playgroud)

但我无法在 JSON 正文中使用这些变量。

我尝试使用的 API 是 Spring Boot REST 控制器,它使用 Jackson lib 将请求体反序列化为 Java 对象。Spring Boot返回的错误信息是这样的:

JSON 解析错误:无法反序列化java.lang.StringSTART_OBJECT 令牌之外的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException

小智 0

我知道你几个月前问过这个问题,但是你尝试过这个吗:

client.global.set("my-first-returned-var", JSON.stringify(response.body.json.var1));
Run Code Online (Sandbox Code Playgroud)

  • 不确定这是否回答了问题。但我觉得它应该出现在评论中而不是作为答案。 (2认同)