SpringBoot前後端分離項目返回給前端統一數據格式的封裝與全局異常的處理

項目開發的過程中, 後端要統一返回的數據結構,便於前端處理。例如每個請求,我們都需要知道 :

code : 服務器返回的狀態碼。例如 : 200 : 請求成功。500 : 服務器內部錯誤。

message: essage: 返回給前端的信息(比如請求成功等)

data :  返回給用戶的數據(比如查詢的信息)。

下面是封裝完整的返回數據類:

import com.yyfly.common.http.HTTP;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 響應
 *
 * @author lin
 * @date : 2018-08-08
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ResponseData implements Serializable {

    private static final long serialVersionUID = -6936648847780505144L;

    /**
     * 狀態碼
     */
    public Integer code;

    /**
     * 返回的消息
     */
    public String message;

    /**
     * 返回的數據
     */
    public Object data;

    @Override
    public String toString() {
        return "ResponseData{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }

    public static ResponseData success() {
        return success("request succeeded");
    }

    public static ResponseData success(Object data) {
        return success("request succeeded", data);
    }

    public static ResponseData success(String message, Object data) {
        return success(HTTP.SC_OK, message, data);
    }

    public static ResponseData success(Integer code, String message, Object data) {
        return build(code, message, data);
    }

    public static ResponseData error(Integer code) {
        return error(code, "request fail");
    }

    public static ResponseData error(Integer code, String message) {
        return error(code, message, null);
    }

    public static ResponseData error(Integer code, String message, Object data) {
        return build(code, message, data);
    }

    public static ResponseData build(HTTP.Status status) {
        return build(status, null);
    }

    public static ResponseData build(HTTP.Status status, Object data) {
        return build(status.value(), status.getReasonPhrase(), data);
    }

    public static ResponseData build(Integer code, String message, Object data) {
        return new ResponseData(code, message, data);
    }
}

在controller我們就可以直接使用它了:
下面我們舉個例子:

這是一個添加用戶的方法,我們調用它的success,因爲這裏傳入的是添加的用戶的數據,所以它會默認匹配到我們的參數爲data的success方法,code默認爲200,message默認爲"request successed" 。

本次的分享到此結束了,對於上面有任何不理解的歡迎到公衆號留言,我會及時回覆的。

 

發佈了27 篇原創文章 · 獲贊 13 · 訪問量 6225
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章