后端数据都是以json的形式给前端返回,一般都是通过@ResponseBody来进行返回.每次返回都要重新格式化一下json的格式.如果接受请求的方法多了,那么这种返回方式无疑是效率很低的.那么就需要一个类来吧这些返回的格式统一管理起来.
可以定义一个Result类,用来专门管理返回数据的:
@Data
public class Result<T> {
private int code; //返回状态码
private String msg; //返回的message
private T data; //返回的数据
private Result(T data) {
this.code = 0;
this.msg = "success";
this.data = data;
}
private Result(CodeMsg msg) {
if (msg == null) {
return;
}
this.code = msg.getCode();
this.msg = msg.getMsg();
}
/**
* 失败的时候调用
*/
public static <T> Result<T> error(CodeMsg msg) {
return new Result<T>(msg);
}
/**
*成功的时候调用
*/
public static <T> Result<T> success(T data) {
return new Result<T>(data);
}
}
其中CodeMsg封装了具体的错误信息:
@Data
public class CodeMsg {
private int code;
private String msg;
private CodeMsg(int code, String msg) {
this.code = code;
this.msg = msg;
}
public CodeMsg fillArgs(Object... args) { //带自定义格式化参数的错误信息
int code = this.code;
String message = String.format(this.msg, args);
return new CodeMsg(code,message);
}
/**
* 通用异常
*/
public static CodeMsg SUCCESS = new CodeMsg(0, "SUCESS");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
/**
* 登录模块5002XX
*/
public static final CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "密码不能为空");
public static final CodeMsg MOBILE_EMPTY = new CodeMsg(500211, "手机号不能为空");
public static final CodeMsg MOBILE_ERROR = new CodeMsg(500211, "手机号格式错误");
public static final CodeMsg USER_NOT_EXITS = new CodeMsg(500211, "用户不存在");
public static final CodeMsg PASSWORD_ERROR = new CodeMsg(500211, "密码错误");
}
这样在后端返回的时候,只需要给定CodeMsg里面的静态常量就可以了.根据自己需要进行定义.
return Result.success(true);
return Result.error(CodeMsg.SERVER_ERROR)