【工具类】Api接口封装

  • 返回结果编码枚举
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接口的封装有利于管理接口和前端交互,是必不可少的。后期还可以通过拦截器对所有接口进行统一封装,配合注解实现自定义,实现更优雅的编码。

posted @ 2021-06-18 15:36  朱李洛克  阅读(261)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css