Spring 5 Web Reactive - Web Client - 在响应流上使用 flatmap()



例如,在这篇文章中,我试图理解为什么在response流上使用flatmap(((直接从参考中复制粘贴(

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(。因此,平面映射采用一个生成流的函数。

通量发出 0 个或多个项,然后可以选择完成或错误。

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

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

最新更新