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

Spring 5 Web Reactive - Web Client - Use of flatmap() on the response stream

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

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)。所以一个平面图接受一个产生流的函数。

一个 flux 发出 0 个或多个项目,然后可选择完成或出错。

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

是的,没错。 header 的接收是第一个异步阶段,此时您会收到响应。然后您使用 flatMap 异步检索 body。说body是一个Flux,因为在某些情况下你可以得到多个unmarshalled objects(例如SSE)。在这里你可能只会得到一个 Alert.