【问题标题】:How to convert the body of a client response to a Mono of a certain type?如何将客户端响应的主体转换为某种类型的 Mono?
【发布时间】:2019-07-05 11:37:08
【问题描述】:

因此,我使用 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() 里面放什么

【问题讨论】:

    标签: spring-boot spring-webflux


    【解决方案1】:

    我相信你可以通过 bodyToMono 的重载来做到这一点,它需要 ParameterizedTypeReference

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

    如果您愿意并且不觉得它太难阅读,您可以内联编写它:

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

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 2019-11-27
      • 2020-01-02
      • 2018-02-28
      • 2020-06-18
      相关资源
      最近更新 更多