如何将客户响应的主体转换为某种类型的Mono?

时间:2019-02-11 21:46:27

标签: spring-boot spring-webflux

因此,我使用WebClient发送请求,并使用exchange()检索响应后,需要将主体提取到Object_1的Mono。该函数需要返回Mono>。通常,您将使用bodyToMono(SomeObject.class),但是在这种情况下不起作用。

public Mono<Object1<Object2>> getAll(String someParam) {

       return WebClient.create(this.baseUrl)
                .get()
                .uri(uriBuilder -> uriBuilder.path("/some_path")
                        .queryParam("someParam", someParam)
                        .build())
                .exchange()
                .flatMap(clientResponse -> clientResponse.bodyToMono(????));

    }

我正在尝试找出在bodyToMono()中放入什么

1 个答案:

答案 0 :(得分:0)

我相信您可以通过占用bodyToMonoParameterizedTypeReference重载来做到这一点。

ParameterizedTypeReference<Object1<Object2>> typeRef =
    new ParameterizedTypeReference<Object1<Object2>>() {};
// . . .
.flatMap(clientResponse -> clientResponse.bodyToMono(typeRef));

如果愿意,可以内联编写,不要觉得很难读懂:

.flatMap(clientResponse -> clientResponse.bodyToMono(
    new ParameterizedTypeReference<Object1<Object2>>() {}));