我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~
原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~
如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持
为什么需要封装全局统一的返回结果类
通常一个项目需要很多开发人员合作完成。每个人都有自己的想法和编程习惯。如果不统一标准,会出现各种问题。
结果枚举类
定义结果枚举类,有助于我们统一规范返回结果。
返回结果编码及信息,还可以考虑参考阿里巴巴的《java开发手册》附3错误码列表。但要调整一下结果编码的类型,由下文的
Integer
类型改为String
类型。
@Getter // Lombok 插件注解。
public enum ResultCodeEnum {
// 自定义结果编码和结果信息。
SUCCESS(200,"成功"),
FAIL(400,"失败"),
SERVICE_ERROR(401, "服务异常"),
DATA_ERROR(402, "数据异常"),
ILLEGAL_REQUEST(403, "非法请求"),
REPEAT_SUBMIT(404, "重复提交"),
LOGIN_AUTH(405, "未登陆"),
PERMISSION(406, "没有权限"),
// 自定义...
;
// 结果编码。
private Integer resultCode;
// 结果信息。
private String resultMsg;
public Integer getResultCode() {
return resultCode;
}
public String getResultMsg() {
return resultMsg;
}
ResultCodeEnum(Integer resultCode, String resultMsg) {
this.resultCode = resultCode;
this.resultMsg = resultMsg;
}
}
统一结果类
@Data // Lombok 插件注解。
public class Result<T> {
// 状态码。
private Integer code;
// 信息。
private String message;
// 数据。
private T data;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public Result() {
}
public static <T> Result<T> build(Integer code, String message, T resultData) {
Result<T> result = new Result<>();
if (resultData != null){
result.setData(resultData);
}
result.setCode(code);
result.setMessage(message);
return result;
}
public static Result success(){
Result result = new Result();
result.setCode(ResultCodeEnum.SUCCESS.getResultCode());
result.setMessage(ResultCodeEnum.SUCCESS.getResultMsg());
return result;
}
public static<T> Result<T> success(T resultData){
Result<T> result = build(ResultCodeEnum.SUCCESS.getResultCode(), ResultCodeEnum.SUCCESS.getResultMsg(), resultData);
return result;
}
public static Result fail(){
Result result = new Result();
result.setCode(ResultCodeEnum.FAIL.getResultCode());
result.setMessage(ResultCodeEnum.FAIL.getResultMsg());
return result;
}
//失败的方法
public static<T> Result<T> fail(T resultData) {
return build(ResultCodeEnum.FAIL.getResultCode(), ResultCodeEnum.FAIL.getResultMsg(), resultData);
}
}
我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~
原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~
如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持