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

  • 相关阅读:
    URAL 1736 Chinese Hockey 网络流+建图
    python基础教程_学习笔记14:标准库:一些最爱——re
    吐槽下CSDN编辑器
    让你提前认识软件开发(23):怎样在C语言中运行shell命令?
    GDB十分钟教程
    任务调度开源框架Quartz动态加入、改动和删除定时任务
    AfxMessageBox和MessageBox差别
    Linux Shell脚本入门--awk命令详解
    鲁棒性的获得 —— 测试的架构
    C Tricks(十八)—— 整数绝对值的实现
  • 原文地址:https://www.cnblogs.com/zllk/p/14899788.html
Copyright © 2020-2023  润新知