gpt4 book ai didi

java - SpringBoot WebTestClient - 如何在graphql API中使用expectBody

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:14 33 4
gpt4 key购买 nike

使用 REST API 和 Spring Boot WebTestClient,我可以轻松取回从返回的 JSON 解析的对象,如下所示:

  Person person = webTestClient
.get()
.uri("/person/3")
.exchange()
.expectBody(Person.class))
.returnResult()
.getResponseBody();

使用 graphql,json 被包装在数据属性内,如下所示:

{ 
"data" : {
"person" : {
"name" : "Foo"
}
}

所以它不适用于

      ...
.expectBody(Person.class))

因为 JSON 解析器以“data”开头,而不是以“data.person”开头。

如何实现直接解析JSON结果并返回Person对象?

最佳答案

GraphQL 默认为 response结构和任何成功的响应都会在 data block 中返回,如下所示

{
"data": { ... },
"errors": [ ... ]
}

因此,请使用 @JsonRootName(value = "person") 并使用 UNWRAP_ROOT_VALUE 功能配置 ObjectMapper

@JsonRootName(value = "person")
public class Person {

// properties

}

ObjectMapper om = new ObjectMapper();
om.enable(SerializationFeature.WRAP_ROOT_VALUE);
om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)

关于java - SpringBoot WebTestClient - 如何在graphql API中使用expectBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60656653/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com