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)
原文地址:https://www.cnblogs.com/zhiweiXiaomu/p/12190353.html