zoukankan      html  css  js  c++  java
  • springboot中后端返回数据给前端的设计模式

    后端数据都是以json的形式给前端返回,一般都是通过@ResponseBody来进行返回.每次返回都要重新格式化一下json的格式.如果接受请求的方法多了,那么这种返回方式无疑是效率很低的.那么就需要一个类来吧这些返回的格式统一管理起来.

    可以定义一个Result类,用来专门管理返回数据的:

    @Data
    public class Result<T> {
        private int code;  //返回状态码
        private String msg;  //返回的message
        private T data;    //返回的数据
    
        private Result(T data) {
            this.code = 0;
            this.msg = "success";
            this.data = data;
        }
    
        private Result(CodeMsg msg) {
            if (msg == null) {
                return;
            }
            this.code = msg.getCode();
            this.msg = msg.getMsg();
        }
    
        /**
         * 失败的时候调用
         */
        public static <T> Result<T> error(CodeMsg msg) {
            return new Result<T>(msg);
        }
        
        /**
         *成功的时候调用
         */
        public static <T> Result<T> success(T data) {
            return new Result<T>(data);
        }
    }

    其中CodeMsg封装了具体的错误信息:

    @Data
    public class CodeMsg {
        private int code;
        private String msg;
        private CodeMsg(int code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
        public CodeMsg fillArgs(Object... args) {  //带自定义格式化参数的错误信息
            int code = this.code;
            String message = String.format(this.msg, args);
            return new CodeMsg(code,message);
        }
    
        /**
         * 通用异常
         */
        public static CodeMsg SUCCESS = new CodeMsg(0, "SUCESS");
        public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
        public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
        /**
         * 登录模块5002XX
         */
        public static final CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "密码不能为空");
        public static final CodeMsg MOBILE_EMPTY = new CodeMsg(500211, "手机号不能为空");
        public static final CodeMsg MOBILE_ERROR = new CodeMsg(500211, "手机号格式错误");
        public static final CodeMsg USER_NOT_EXITS = new CodeMsg(500211, "用户不存在");
        public static final CodeMsg PASSWORD_ERROR = new CodeMsg(500211, "密码错误");
    }

    这样在后端返回的时候,只需要给定CodeMsg里面的静态常量就可以了.根据自己需要进行定义.

    return Result.success(true);
    return Result.error(CodeMsg.SERVER_ERROR)
  • 相关阅读:
    Python基础教程【读书笔记】
    Python基础教程【读书笔记】
    Python基础教程【读书笔记】
    Python基础教程【读书笔记】
    JS实现焦点图轮播效果
    JQuery+CSS3实现Ajax加载时loading效果
    JQuery实现锚点平滑滚动
    CSS3之嵌入Web字体
    HTML5本地存储
    impress.js初体验——前端装X利器
  • 原文地址:https://www.cnblogs.com/zhiweiXiaomu/p/12190353.html
Copyright © 2011-2022 走看看