【发布时间】:2020-06-01 07:54:08
【问题描述】:
我使用 Spring Boot 构建了一个 rest API,当使用我创建的类 xxEntity 发生异常时返回一个自定义 ResponseEntity
public class xxEntity<T> {
private T body;
private HttpStatus status;
private int statusCode;
private xxException error;
public xxEntity(T body) {
this.body = body;
status = HttpStatus.OK;
this.statusCode = status.value();
}
public xxEntity(HttpStatus status, xxException error) {
this.status = status;
this.statusCode = status.value();
this.error = error;
}
}
当出现异常时,我将实体返回如下:
return new xxEntity<>(HttpStatus.NOT_FOUND, new xxException(ex));
其中ex 是一个包含Stringfrench 消息、Stringenglish 消息和intinternal 错误代码的json。
它返回一个包含以下详细信息的自定义对象:
{
"body": null,
"status": "NOT_FOUND",
"statusCode": 404,
"error": {
"userMessage": {
"en": "No user found",
"fr": "Pas d'utilisateur trouvé",
"errorCode": 10
}
}
}
直到一切正常,唯一的问题是我只能返回状态码 200 OK
我其实是想根据发生的事件返回不同的状态码,这样前端就可以很容易的将其作为异常处理,而无需编写多个 if..else 条件
示例:实际上在我附加的 json 中,状态代码是 404 NOT FOUND,但是在邮递员中发出请求时,我收到 200 OK
【问题讨论】:
标签: java spring-boot exception http-status-codes