返回给前端的结果集
1.为什么要统一结果集?
Java后端开发项目时,需要给前端传一些数据,可以直接将一个List或者Map返回给前端,但是这样会显得很乱,并且有时候前端需要的不仅仅只是数据,可能还有一些错误码、错误信息等,这时就需要一种规范的数据格式传到前端。
2.Result数据类型
可以创建一种具有信息码code、信息msg和数据的类型Result,用来返回给前端数据:
public class Result<T> {
//返回信息码
private String code;
//返回信息
private String msg;
//返回数据
T data;
public Result(){}
public Result(T data){
this.data=data;
}
//成功,只返回成功码和信息
public Result<T> success(){
Result<T> result=new Result<>();
result.setCode(ResultCode.SUCCESS.code);
result.setMsg(ResultCode.SUCCESS.msg);
return result;
}
//成功,返回成功码、信息和数据
public Result<T> success(T data){
Result<T> result=new Result();
result.setCode(ResultCode.SUCCESS.code);
result.setMsg(ResultCode.SUCCESS.msg);
result.setData(data);
return result;
}
//失败,返回自己定义的信息码和信息
public Result<T> error(){
Result<T> result=new Result<>();
result.setCode(ResultCode.ERROR.code);
result.setMsg(ResultCode.ERROR.code);
return result;
}
//失败,返回controller层传过来信息码和信息
public Result<T> error(String code,String msg){
Result<T> result=new Result<>();
result.setCode(code);
result.setMsg(msg);
return result;
}
public void setCode(String code){
this.code=code;
}
public void setMsg(String msg){
this.msg=msg;
}
public void setData(T data){
this.data=data;
}
@Override
public String toString() {
return "Result{" +
"code='" + code + '\'' +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
3.ResultCode枚举
在Result类型中需要有信息码code和信息msg,那么可以使用枚举将可能会发生的情况信息写入其中:
public enum ResultCode {
SUCCESS("0", "成功"),
ERROR("-1", "系统异常"),
PARAM_ERROR("1001", "参数异常"),
USER_EXIST_ERROR("2001", "用户已存在"),
USER_ACCOUNT_ERROR("2002", "账号或密码错误"),
USER_NOT_EXIST_ERROR("2003", "未找到用户"),
ORDER_PAY_ERROR("3001", "库存不足,下单失败"),
PARAM_LOST_ERROR("2004", "参数缺失"),
PARAM_PASSWORD_ERROR("2005", "原密码输入错误"),
;
public String code;
public String msg;
ResultCode(String code, String msg) {
this.code = code;
this.msg = msg;
}
}