Spring 5 Web Reactive - Web客户端 - 在响应流上使用flatmap()

时间:2017-07-25 04:53:19

标签: spring reactive-programming project-reactor spring-webflux

我正在尝试理解为什么在response信息流中使用flatmap(),例如this帖子(直接从参考文件粘贴)

final ClientRequest request = ClientRequest.GET(url)
        .accept(MediaType.TEXT_EVENT_STREAM).build();
Flux<Alert> alerts = webClient.exchange(request)
        .flatMap(response -> response.bodyToFlux(Alert.class));

AFAIK,应用于流的flatmap为每个输入值(在流中)生成任意数量的值(0 ... n)。因此,flatmap采用生成流的函数。

助焊剂会发出0个或更多项目,然后可选择完成或错误。

那么响应流究竟发生了什么?这是获取响应流的函数,并发出类Alert的0个或更多对象吗?因此,如果我们subscribealerts,我们可以通过网络客户端以反应方式获取它们。有人可以澄清我是否正确,拜托?

1 个答案:

答案 0 :(得分:3)

是的,这是正确的。接收标头是第一个异步阶段,此时您将得到响应。然后使用flatMap异步检索正文。所述主体是Flux,因为在某些情况下,您可以获得多个未编组的对象(例如SSE)。在这里,你可能只得到一个Alert