在Spring WebFlux中,Flux< T>、Flux〈ResponseEntity< T>>、ResponseEntity〈Flux< T>>作为返回类型的区别是什么?

gcuhipw9  于 2022-12-26  发布在  Spring
关注(0)|答案(1)|浏览(256)

我经常看到三种不同的响应返回类型:使用Spring WebFlux的MVC风格控制器中的Flux<T>ResponseEntity<Flux<T>>Flux<ResponseEntity<T>>documentation解释了ResponseEntity<Flux<T>>Flux<ResponseEntity<T>>之间的区别。Spring是否自动将Flux<T> Package 为ResponseEntity<Flux<T>>Flux<ResponseEntity<T>>?如果是,是哪一个?
此外,如何决定返回哪个,ResponseEntity<Flux<T>>还是Flux<ResponseEntity<T>>?什么情况或用例要求使用一个而不是另一个?
并且,从网络客户端的Angular 来看,在使用这两种类型的响应时是否存在显著差异?

5vf7fwbs

5vf7fwbs1#

Does Spring automatically wrap Flux as either ResponseEntity or Flux? if yes, which one?
Spring will automatically wrap that Flux as a ResponseEntity. For example if you have a web endpoint as follows
@GetMapping("/something ")公共通量句柄(){doSomething()}
如果你是从WebClient使用的,你可以用ResponseEntity<Flux<T>>或者Flux<T>来检索你的响应。没有默认值,但是我认为只检索Flux是一个很好的实践,除非你明确地需要从ResponseEntity中得到一些东西。Spring文档有很好的例子。
您实际上可以将其作为Flux<ResponseEntity<T>>使用,但这只适用于更复杂的用例。
Moreover, how to decide which one to return, ResponseEntity or Flux? What situation or use case would call for using one over the other?
这实际上取决于您的使用情形。
返回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>>
最后
并且,从网络客户端的Angular 来看,在使用这两种类型的响应时是否存在显著差异?
我认为您想问的是,当从WebClient进行消费时,您应该使用ResponseEntity<Flux<T>>还是Mono<ResponseEntity<T>>
ResponseEntity make the response status and headers known immediately while the body is provided asynchronously at a later point.
Mono provides all three — response status, headers, and body, asynchronously at a later point. This allows the response status and headers to vary depending on the outcome of asynchronous request handling.

相关问题