【Spring Boot笔记】统一返回结果的格式

1,661 阅读1分钟

为什么要统一返回结果的格式?

目前我们做的项目大体都会是前后端分离的。为了使数据使用者(包括但不限于前端工程师)能够更好地处理返回结果,不至于为了处理各式各样的返回数据格式而抓狂,所以我们需要定义一个统一的标准的返回格式。

标准的返回格式需要包含哪几部分?

一个标准的返回格式至少要包含3部分:

  1. status状态值:本次接口调用返回结果的状态码
  2. message消息:本次接口调用的结果描述
  3. data数据:本次接口调用返回的数据

当然也可以按需加入其它扩展值。

返回结果状态码枚举类

@Getter
public enum ResultCode {

    SUCCESS("200", "成功"),
    INTERNAL_ERROR("500", "服务器内部异常");

    private final String code;
    private final String msg;

    ResultCode(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

统一返回对象

@Data
public class Result<T> implements Serializable {
    /**
     * 状态码
     */
    private String code;
    /**
     * 返回结果
     */
    private T data;
    /**
     * 返回消息
     */
    private String msg;

    public static <T> Result<T> success() {
        Result<T> result = new Result<>();
        result.setCode(ResultCode.SUCCESS.getCode());
        return result;
    }

    public static <T> Result<T> success(T data) {
        Result<T> result = new Result<>();
        result.setData(data);
        result.setCode(ResultCode.SUCCESS.getCode());
        return result;
    }

    public static <T> Result<T> fail() {
        Result<T> result = new Result<>();
        result.setCode(ResultCode.INTERNAL_ERROR.getCode());
        result.setMsg(ResultCode.INTERNAL_ERROR.getMsg());
        return result;
    }

    public static <T> Result<T> fail(ResultCode resultCode) {
        Result<T> result = new Result<>();
        result.setCode(resultCode.getCode());
        result.setMsg(resultCode.getMsg());
        return result;
    }
}