我正在使用spring-webflux构建REST服务。当找不到请求的路径或发生任何其他内部服务器错误时,我需要使用自定义json错误响应进行响应。
我有一个实现GeneralExceptionHandler
的{{1}}类。
我有一个ErrorWebExceptionHandler
的bean,如下所示。
GeneralExceptionHandler
这样,如果找不到诸如请求的路径之类的错误,则会调用@Bean
@Order(-2)
public ErrorWebExceptionHandler errorWebExceptionHandler() {
return new GeneralExceptionHandler();
}
中的handle方法(public Mono<Void> handle(ServerWebExchange serverWebExchange, Throwable throwable)
)。
我还可以使用以下内容发送自定义的http状态代码。
GeneralExceptionHandler
但是我不知道如何发送自定义JSON作为响应。
首先,这是处理Spring webflux中常见错误的正确方法吗?如果是,我该如何响应自定义JSON对象?
答案 0 :(得分:2)
Spring Boot为此提供了ErrorWebExceptionHandler
接口;它扩展了Spring框架中相当普通的低级{{1}}。
使用WebExceptionHandler
确实使您陷入了低级概念的困境,因为它是一种常规的错误处理机制。
有几种方法可以在Spring Boot中自定义错误处理过程:
WebExceptionHandler
bean,并从错误映射中添加/删除数据(这些错误映射已提供给HTML视图或呈现为JSON)ErrorAttributes
,它为您提供了呈现HTML /响应正文的所有构建模块AbstractErrorWebExceptionHandler
,但是必须具有类似的基础结构设置才能呈现高级概念,例如视图或序列化响应正文