SpringBoot Restful API 自定义错误响应格式
通常我们会通过spring的异常处理器来自定义响应格式,即通过@RestControllerAdvice
来实现,但是如果只是为了自定义一个返回格式的话有更好的选择,那就是自定义ErrorController
,所有未被处理的异常都会被它处理,@RestControllerAdvice
也被视为异常处理,即被@RestControllerAdvice
处理的异常将不会到达这里,直接上代码,以Kotlin为例
1 |
|
这里注入了一个
ErrorAttributes
类型的bean,它包含了请求上下文的错误信息,通过getError
方法可以获取到异常类匹配到路由
/error
的方法的返回值会作为响应发送到客户端,当然这个路由是可以自定义的
需要注意的是,如果配置spring.mvc.throw-exception-if-no-handler-found
为false
,由于404不会引发异常,所以通过getError
方法获取到的异常将会为null。同时@RestControllerAdvice
将不起作用,因为它只会捕获异常,这也是其相比ErrorController
的劣势
PS:异常处理的顺序为 主动捕获异常->@RestControllerAdvice
->ErrorController
->Servlet容器,如Tomcat。被处理过的异常将不会到达下一级
SpringBoot Restful API 自定义错误响应格式