一. 结构
结构设计为3个Java类:
一个为返回状态码的常量类(ECode),一个为公共返回类(BaseResult),一个为返回状态码的枚举类(ResultCode)
二. 具体代码
(1)返回状态码的常量类(ECode)
package com.blog.base.global;
/**
* 返回状态码
*
* @author admin
* @create 2022/1/10
*/
public class ECode {
/**
* 操作成功
*/
public static final Integer OK = 200;
/**
* 操作失败
*/
public static final Integer FAIL = 500;
/**
* 未知错误
*/
public static final Integer ERROR = 502;
/**
* 未通过token验证
*/
public static final Integer UNAUTHORIZED = 401;
/**
* 无操作权限
*/
public static final Integer NO_OPERATION_AUTHORITY = 402;
/**
* 服务器出现异常
*/
public static final Integer SERVER_ERROR = 500;
/**
* 请求次数过于频繁
*/
public static final Integer REQUEST_OVER_LIMIT = 502;
}
(2)公共返回类(BaseResult)
package com.blog.base.result;
import com.blog.base.global.ECode;
/**
* 公共返回类
*
* @author admin
* @create 2022/1/8
*/
public class BaseResult<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 BaseResult() {
}
public BaseResult(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public BaseResult(Integer code, String message) {
this.code = code;
this.message = message;
}
public BaseResult(ResultCode resultCode, T data) {
this.code = resultCode.getCode();
this.message = resultCode.getMsg();
this.data = data;
}
/**
* 返回成功
* @param message 信息
* @return 公共返回类
*/
public static <T> BaseResult<T> ok(String message){
return new BaseResult<>(ECode.OK, message);
}
/**
* 返回成功
* @param <T> 数据
* @return 公共返回类
*/
public static <T> BaseResult<T> ok(T data){
return new BaseResult<>(ResultCode.OK, data);
}
/**
* 返回成功
* @param message 信息
* @param <T> 数据
* @return 公共返回类
*/
public static <T> BaseResult<T> ok(String message, T data){
return new BaseResult<>(ECode.OK, message, data);
}
/**
* 返回失败
* @param message 信息
* @return 公共返回类
*/
public static <T> BaseResult<T> fail(String message){
return new BaseResult<>(ECode.FAIL, message);
}
/**
* 返回失败
* @param <T> 数据
* @return 公共返回类
*/
public static <T> BaseResult<T> fail(T data){
return new BaseResult<>(ResultCode.FAIL, data);
}
/**
* 返回失败
* @param message 信息
* @param <T> 数据
* @return 公共返回类
*/
public static <T> BaseResult<T> fail(String message, T data){
return new BaseResult<>(ECode.FAIL, message, data);
}
}
(3)返回状态码的枚举类(ResultCode)
package com.blog.base.result;
/**
* 响应码枚举
*
* @author admin
* @create 2022/1/10
*/
public enum ResultCode {
/**
* 规范响应体中的响应码和响应信息
*/
OK(200, "操作成功"),
FAIL(500, "操作失败"),
ERROR(502, "未知错误");
private Integer code;
private String msg;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
ResultCode(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}