首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为返回类型的Flux<T>、Flux<ResponseEntity<T>>、ResponseEntity<Flux<T>>在Spring中有什么不同?

作为返回类型的Flux<T>、Flux<ResponseEntity<T>>、ResponseEntity<Flux<T>>在Spring中有什么不同?
EN

Stack Overflow用户
提问于 2022-01-22 21:20:56
回答 1查看 781关注 0票数 1

我经常看到三种不同的响应返回类型:Flux<T>ResponseEntity<Flux<T>>Flux<ResponseEntity<T>>,它们在MVC风格的控制器中使用Spring。文档解释了ResponseEntity<Flux<T>>Flux<ResponseEntity<T>>之间的区别。Spring会自动将Flux<T>包装为ResponseEntity<Flux<T>>还是Flux<ResponseEntity<T>>?如果是,是哪一个?

此外,如何决定哪一个返回,ResponseEntity<Flux<T>>还是Flux<ResponseEntity<T>>?什么样的情况或用例需要使用一个而另一个呢?

而且,从when客户端的角度来看,在使用这两种类型的响应时有什么显著的差异吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-23 06:05:30

Spring会自动将Flux包装为ResponseEntity还是Flux?如果是,是哪一个?

Spring将自动将该Flux包装为ResponseEntity。例如,如果您有一个web端点,如下所示

@GetMapping("/something")公共通量句柄(){ doSomething() }

如果您从WebClient中消费,您可以以ResponseEntity>Flux的形式检索您的响应。没有默认设置,但我认为,除非您明确需要从ResponseEntity中获取某些内容,否则只检索Flux是一个很好的实践。Spring有很好的例子

您实际上可以使用它作为一个Flux<ResponseEntity<T>>,但这将只适用于更复杂的用例。

此外,如何决定哪一个返回,ResponseEntity还是Flux?什么样的情况或用例需要使用一个而另一个呢?

这取决于您的用例。

返回ResponseEntity<Flux<T>>是在说,

代码语言:javascript
复制
I am returning a Response of a Collection of type T objects. 

Flux<ResponseEntity<T>>说的更像是

代码语言:javascript
复制
I am returning a Collection of Responses, where the responses have an entity of type T.

同样,我认为在大多数用例中只返回Flux<T>是有意义的(这相当于返回ResponseEntity<Flux<T>>)。

最后

而且,从when客户端的角度来看,在使用这两种类型的响应时有什么显著的差异吗?

我认为您想问的是,在从ResponseEntity<Flux<T>>消费时,您应该使用WebClient还是Mono<ResponseEntity<T>>春天医生非常优雅地回答了这个问题。

ResponseEntity使响应状态和头立即为人所知,而主体是在稍后异步提供的。Mono稍后异步提供所有三种 - 响应状态、头和正文。这允许响应状态和标头根据异步请求处理的结果而变化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70817243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档