用Spring Boot
写Web API
, 因为项目简单,并不想引入引入一套自己的错误规则,直接让@RestController
直接返回repository
的查询结果,异常的话就使用默认的异常结果
// 正确
{
"id": 2,
"text": "hahahahaha",
"username": "haha",
"update_time": 1510896551177
}
// 异常
{
"timestamp": 1510914077779,
"status": 405,
"error": "Method Not Allowed",
"exception": "org.springframework.web.HttpRequestMethodNotSupportedException",
"message": "Request method 'DELETE' not supported",
"path": "/api/message/"
}
// 使用@NotNull、@NotBlank和@valid验证参数错误的时候
{
"timestamp": 1510914681866,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.validation.BindException",
"errors": [
{
...
"defaultMessage": "message不能为空",
...
}
],
}
这里的status
、error
内容就是当前的http状态码,用http状态码和defaultMessage?
的内容展示异常就够了,所以希望把无关的内容去掉,统一成
// 正确
{
"status": 405,
"error": defaultMessage | error
}
可以如何实现
我在@ControllerAdvice
这个类里重写输出的话,http状态码又会变回200,也不知道如何保留异常的状态码
这样写的
GobalExceptionHandler
会替你处理所有的异常,你可以在handleException
方法中写上你的逻辑,并返回你想要返回状态码和数据。