- 返回结果编码枚举
public enum ControllerResponseEnum {
/**
* 调用成功
*/
SUCCESS(1, "Api调用成功"),
/**
* 调用失败
*/
FAIL(-1, "Api调用失败"),
// 通用异常
SERVER_EXCEPTION(500100, "服务端异常"),
PARAMETER_ISNULL(500101, "输入参数为空"),
// 业务异常
USER_NOT_EXSIST(500102, "用户不存在"),
ONLINE_USER_OVER(500103, "在线用户数超出允许登录的最大用户限制。"),
SESSION_NOT_EXSIST(500104, "不存在离线session数据"),
NOT_FIND_DATA(500105, "查找不到对应数据");
/**
* 返回编码
*/
private final Integer code;
/**
* 编码对应的消息
*/
private final String msg;
ControllerResponseEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
/**
* 获取枚举类型的编码值
*/
public Integer code() {
return this.code;
}
/**
* 获取枚举类型的编码含义
*/
public String msg() {
return this.msg;
}
/**
* 根据枚举名称--获取枚举编码
*/
public static Integer getCode(String name) {
for (ControllerResponseEnum resultCode : ControllerResponseEnum.values()) {
if (resultCode.name().equals(name)) {
return resultCode.code;
}
}
return null;
}
}
- 返回结果统一封装
public class ControllerResponse<T> implements Serializable {
private static final long serialVersionUID = 3436477890959388499L;
private T data;
private int code;
private String message;
/**
* @return 返回不带数据的封装类
*/
public ControllerResponse<T> renderSuccess() {
return renderSuccess(ControllerResponseEnum.SUCCESS.msg(), ControllerResponseEnum.SUCCESS.code(), null);
}
/**
* @return 返回带成功信息的封装类
*/
public ControllerResponse<T> renderSuccess(String msg) {
return renderSuccess(msg, ControllerResponseEnum.SUCCESS.code(), null);
}
/**
* @return 返回带成功状态的封装类
*/
public ControllerResponse<T> renderSuccess(int status) {
return renderSuccess(ControllerResponseEnum.SUCCESS.msg(), status, null);
}
/**
* @return 返回带数据的封装类
*/
public ControllerResponse<T> renderSuccess(T obj) {
return renderSuccess(ControllerResponseEnum.SUCCESS.msg(), ControllerResponseEnum.SUCCESS.code(), obj);
}
/**
* @return 返回带成功信息,带成功状态,带数据的封装类
*/
public ControllerResponse<T> renderSuccess(String msg, int status, T obj) {
this.message = msg;
this.code = status;
this.data = obj;
return this;
}
/**
* @return 返回不带数据的封装类
*/
public ControllerResponse<T> renderError() {
return renderSuccess(ControllerResponseEnum.FAIL.msg(), ControllerResponseEnum.FAIL.code(), null);
}
/**
* @return 返回带失败信息的封装类
*/
public ControllerResponse<T> renderError(String msg) {
return renderSuccess(msg, ControllerResponseEnum.FAIL.code(), null);
}
/**
* @return 返回带失败状态的封装类
*/
public ControllerResponse<T> renderError(int status) {
return renderSuccess(ControllerResponseEnum.FAIL.msg(), status, null);
}
/**
* @return 返回带数据的封装类
*/
public ControllerResponse<T> renderError(T obj) {
return renderError(ControllerResponseEnum.FAIL.msg(), ControllerResponseEnum.FAIL.code(), obj);
}
/**
* @return 返回带成功信息,带失败状态,带数据的封装类
*/
public ControllerResponse<T> renderError(String msg, int status, T obj) {
this.message = msg;
this.code = status;
this.data = obj;
return this;
}
}
Api接口的封装有利于管理接口和前端交互,是必不可少的。后期还可以通过拦截器对所有接口进行统一封装,配合注解实现自定义,实现更优雅的编码。