Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了spring – 使用webflux处理异常并返回正确的HTTP代码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用WebFlux的功能端点.我使用onErrorResume将服务层发送的异常转换为http错误代码

@H_301_6@public Mono

一旦服务返回Mono,它就能很好地工作.如果服务返回Flux,我该怎么办

@H_301_6@public Flux

编辑

我尝试了下面的方法,但不幸的是它不起作用. Flux.error不由onErrorResume处理并传播到框架.当在http响应的序列化期间取消装箱异常时,Spring Boot异常管理会捕获它并将其转换为500.

@H_301_6@public Mono

我实际上对这个行为感到惊讶,那是一个bug吗?

最佳答案
您的第一个示例是使用Mono(即最多一个值),因此它与Mono< serverresponse="">一起使用时效果很好. – 该值将在内存中异步解析,根据结果,我们将返回不同的响应或手动处理业务异常.

在Flux(即0..N值)的情况下,在任何给定时间都可能发生错误.

@L_944_12@种情况下,您可以使用COllectList运算符来转换您的Flux< string="">进入Mono<>< string="">>,带有一个很大的警告:所有元素都将缓冲在内存中.如果您的控制器/客户端依赖于流数据,那么数据流非常重要,这不是最佳选择.

我担心我没有更好的解决方案来解决这个问题,原因如下:因为在Flux期间的任何时候都可能发生错误,所以无法保证我们可以更改http状态和响应:事情可能已经被刷新了网络.使用Spring MVC并返回InputStream或resource时已经是这种情况了.

Spring Boot错误处理功能尝试编写错误页面并更改http状态(请参阅ErrorWebExceptionHandler并实现类),但如果响应已提交,它将记录错误信息并让您知道http状态可能是错误的.

大佬总结

以上是大佬教程为你收集整理的spring – 使用webflux处理异常并返回正确的HTTP代码全部内容,希望文章能够帮你解决spring – 使用webflux处理异常并返回正确的HTTP代码所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。