Spring 是否自动将 Flux 包装为 ResponseEntity<Flux> 或 Flux<ResponseEntity>?如果是,是哪一个?
Spring 会自动将该 Flux 包装为 ResponseEntity<Flux>。例如,如果您有如下 Web 端点
@GetMapping("/something") 公共通量句柄() { doSomething() }
如果您从 WebClient 消费,您可以将响应检索为ResponseEntity<Flux<T>>
或Flux<T>
。没有默认值,但我认为最好只检索 Flux,除非您明确需要 ResponseEntity 中的某些内容。Spring 文档有很好的例子。
您实际上可以将其用作Flux<ResponseEntity<T>>
,但这仅适用于更复杂的用例。
此外,如何决定返回哪一个,ResponseEntity<Flux> 还是 Flux<ResponseEntity>?什么情况或用例需要使用其中一种?
这实际上取决于您的用例。
返回ResponseEntity<Flux<T>>
是说类似的东西,
I am returning a Response of a Collection of type T objects.
哪里Flux<ResponseEntity<T>>
说的更像
I am returning a Collection of Responses, where the responses have an entity of type T.
同样,我认为在大多数用例中返回Flux<T>
是有意义的(这相当于返回ResponseEntity<Flux<T>>
)
最后
而且,从 webclient 的角度来看,在使用这两种类型的响应时是否有任何显着差异?
我认为您要问的是您是否应该使用ResponseEntity<Flux<T>>
或Mono<ResponseEntity<T>>
何时从 WebClient 消费。spring doc 非常优雅地回答了这个问题
ResponseEntity<Flux> 在稍后异步提供正文时立即知道响应状态和标头。
Mono<ResponseEntity> 提供所有三者——响应状态、标头和正文,稍后异步提供。这允许响应状态和标头根据异步请求处理的结果而变化。