【问题标题】:SpringBoot: How to call a API chain using reactive programming?Spring Boot:如何使用响应式编程调用 API 链?
【发布时间】:2018-12-17 10:23:33
【问题描述】:

我想在另一个 Flux 流的中间调用 Mono,将 Flux 的参数发送到单声道。 我正在使用 SpringBoot 的 WebClient。

我试过这个:

WebClient client = WebClient.create();
    client.get().uri("http://localhost:8081/api/{param1}", param1)
        .retrieve()
        .bodyToFlux(String.class)
        .zipWith(
            client.get().uri("http://localhost:8082/api/{param2}", param2)
            .retrieve()
            .bodyToMono(String.class);
        )
        .map(tuple -> {
          return tuple.getT1() + tuple.getT2();
        })

但是如何将第一个 API 调用的返回值发送到 param2?然后得到双方的回应? 第一个 API 返回许多值,对于每个值,我需要调用第二个 API。

谢谢

【问题讨论】:

标签: java spring spring-boot reactive-programming


【解决方案1】:

我就是这样做的:

WebClient client = WebClient.create();
client.get().uri("http://localhost:8081/api/{param1}", param1)
    .retrieve()
    .bodyToFlux(String.class)
    .flatMap(
        response1 -> 
            client.get().uri("http://localhost:8082/api/{param2}", response1)
                .retrieve()
                .bodyToMono(String.class)
                .map(response2 -> new Response(response1, response2))
     )
     , Response.class
     )

【讨论】:

    猜你喜欢
    • 2022-07-24
    • 2020-09-12
    • 2019-04-15
    • 2021-05-17
    • 2017-10-25
    • 2020-05-20
    • 2021-03-28
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多