前言
因前后端分离,采用JSON格式进行数据交互,为了提高规范性和开发效率,我们需要定义一个统一的结果返回类,而不应该返回 List、Map、Object等各种各样的对象,提高紊乱度。
一、响应状态
通过此Enum规定后端人员返回Http响应状态,不允许在业务代码中私自定义Code,当然可以允许后端开发人员在业务代码中为code附属自定义的msg。
public enum ResponseStatusEnum {
// 根据需要添加合适的code码
FAIL(500L, "失败"),
SUCCESS(200L, "成功");
private final Long code;
private final String msg;
ResponseStatusEnum(Long code, String msg) {
this.code = code;
this.msg = msg;
}
public Long getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
复制代码
二、统一结果返回类
注:如果前端不想在状态码上进行区分是否成功,可以额外添加一个字段区分,eg:private Boolean success;
@Data
public class Result<T> {
/** 响应状态码 */
private Long code;
/** 响应消息 */
private String msg;
/** 响应数据 */
private T data;
/**
* 响应成功结果
* @param msg 响应消息
* @param data 响应数据
*/
public static<T> Result<T> ok(String msg, T data) {
return ok(ResponseStatusEnum.SUCCESS.getCode(), msg, data);
}
/**
* 响应成功结果
* @param data 响应数据
*/
public static<T> Result<T> ok(T data) {
return ok(ResponseStatusEnum.SUCCESS.getCode(), ResponseStatusEnum.SUCCESS.getMsg(), data);
}
/**
* 响应成功结果
*/
public static<T> Result<T> ok() {
return ok(ResponseStatusEnum.SUCCESS.getCode(), ResponseStatusEnum.SUCCESS.getMsg(), null);
}
/**
* 响应成功结果
* @param responseStatusEnum 成功类型的枚举类
* @param data 响应数据
*/
public static<T> Result<T> ok(ResponseStatusEnum responseStatusEnum, T data) {
return ok(responseStatusEnum.getCode(), responseStatusEnum.getMsg(), data);
}
/**
* 响应失败结果
* @param msg 响应消息
* @param data 响应数据
*/
public static<T> Result<T> fail(String msg, T data) {
return fail(ResponseStatusEnum.FAIL.getCode(), msg, data);
}
/**
* 响应失败结果
* @param data 响应数据
*/
public static<T> Result<T> fail(T data) {
return fail(ResponseStatusEnum.FAIL.getCode(), ResponseStatusEnum.FAIL.getMsg(), data);
}
/**
* 响应失败结果
*/
public static<T> Result<T> fail() {
return fail(ResponseStatusEnum.FAIL.getCode(), ResponseStatusEnum.FAIL.getMsg(), null);
}
/**
* 响应失败结果
* @param responseStatusEnum 失败类型的枚举类
* @param data 响应数据
*/
public static<T> Result<T> fail(ResponseStatusEnum responseStatusEnum, T data) {
return fail(responseStatusEnum.getCode(), responseStatusEnum.getMsg(), data);
}
private Result(Long code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
/**
* 响应成功结果
* @param code 响应状态码
* @param msg 响应消息
* @param data 响应数据
*/
private static<T> Result<T> ok(Long code, String msg, T data) {
return new Result<T>(code, msg, data);
}
/**
* 响应失败结果
* @param code 响应状态码
* @param msg 响应消息
* @param data 响应数据
*/
private static<T> Result<T> fail(Long code, String msg, T data) {
return new Result<T>(code, msg, data);
}
}
复制代码




近期评论