1. 程式人生 > 其它 >【Spring Boot筆記】統一返回結果的格式

【Spring Boot筆記】統一返回結果的格式

為什麼要統一返回結果的格式?

目前我們做的專案大體都會是前後端分離的。為了使資料使用者(包括但不限於前端工程師)能夠更好地處理返回結果,不至於為了處理各式各樣的返回資料格式而抓狂,所以我們需要定義一個統一的標準的返回格式。

標準的返回格式需要包含哪幾部分?

一個標準的返回格式至少要包含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;
    }
}