统一结果返回类
1. 定义方式一
为什么要使用统一结果?
1、大部分前后端项目采用 JSON 格式进行数据交互,定义一个统一的数据规范,有利于前后台的交互、以及信息处理。
2、Java后端开发项目时,需要给前端传一些数据,可以直接将一个 List 或者 Map 返回给前端,但是这样会显得很乱,并且有时候前端需要的不仅仅只是数据,可能还有一些错误码、错误信息等,这时就需要一种规范的数据格式传到前端。
返回格式的属性说明
- success: true/false,是否响应成功,设置成 Boolean 类型。
- code: 200/400/500等,响应状态码。设置成 Integer 类型。
- message: 访问成功/系统异常等,状态码描述,设置成 String 类型。
- data: 处理得数据,响应数据,设置成 HashMap 类型。
下面举出来一个 Spring Boot 项目中,通过接口返回给前端的结果格式示例:
// 举例:返回结果样式
{
"success": true,
"code": 200,
"message": "查询用户列表",
"data": {
"itms": [
{
"id": "1",
"username": "admin",
"role": "ADMIN",
"createTime": "2020-4-24T15:32:29",
"modifiedTime": "2020-4-24T15:41:40"
},{
"id": "2",
"username": "zhangsan",
"role": "USER",
"createTime": "2020-4-24T15:32:29",
"modifiedTime": "2020-4-24T15:41:40"
}
]
}
}
那统一结果返回类如何定义
-
构造器私有,不允许进行实例化,但提供静态方法:ok、error 返回一个实例
- ok:返回一个 成功操作 的实例对象
- error:返回一个 失败操作 的实例对象
-
采用链式调用(即:方法返回对象为其本身,return this)----> 下面代码中涉及到
统一结果返回类,代码示例如下:
@Data
public class Result {
private Boolean success;
private Integer code;
private String message;
private Map<String, Object> data = new HashMap<>();
// 默认私有构造器
private Result(){
}
// 自定义构造器
private Result(Boolean success, Integer code, String message){
this.success = success;
this.code = code;
this.message = message;
}
// 返回一个默认的 成功操作 的实例对象,默认响应状态码 200
public static Result ok(){
// 使用 HttpStatus 的常量表示响应状态码,这个需要导入 httpcore 依赖
return new Result(true, HttpStatus.SC_OK, "success");
}
// 返回一个自定义 成功操作 的实例对象
public static Result ok(Boolean success,