我经常看到三种不同的响应返回类型:使用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 来看,在使用这两种类型的响应时是否存在显著差异?
1条答案
按热度按时间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>>
就像这样,其中
Flux<ResponseEntity<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.