欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot實現(xiàn)統(tǒng)一封裝返回前端結果集的示例代碼

 更新時間:2022年06月11日 10:35:52   作者:java奧斯卡  
在實際項目開發(fā)過程中,我們經(jīng)常將返回數(shù)據(jù)的基本形式統(tǒng)一為JSON格式的數(shù)據(jù)。但項目可能是由很多人開發(fā)的,所以我們最好將返回的結果統(tǒng)一起來。本文介紹了SpringBoot實現(xiàn)統(tǒng)一封裝返回前端結果集的示例代碼,需要的可以參考一下

在實際項目開發(fā)過程中、事實上我們經(jīng)常用@restcontroller注釋的方式,將相當于將返回數(shù)據(jù)的基本形式統(tǒng)一為JSON格式的數(shù)據(jù)。但是,由于我們的項目可能是由很多人開發(fā)的,所以我們最好將返回的結果統(tǒng)一起來,這樣每個人都可以返回相同的數(shù)據(jù)格式,這不僅規(guī)范了代碼,也方便了前端人員調用,否則每個人都會按照自己的風格編寫,代碼會變得非?;靵y。

我們如何封裝這個結果?我們應該注意返回到前端的數(shù)據(jù)中包含的信息。

一般來說,首先,這次必須有一個code來表示接口的狀態(tài)。例如,0表示成功,1表示失敗,2表示必須傳遞錯誤的參數(shù),4表示系統(tǒng)異常,依此類推。這只是一個簡單的例子。許多人可能會有疑問。HTTP協(xié)議本身已經(jīng)有了相應的返回代碼定義。 例如: 200表示成功, 500表示服務器錯誤, 404表示找不到頁面。

例如,200表示請求成功,但它不能描述請求中的業(yè)務結果。 例如,用戶名已經(jīng)存在,事實上,業(yè)務并不成功,但HTTP的結果肯定是200, 因此我們需要一個代碼來描述我們的業(yè)務狀態(tài)。

除了代碼之外,還有一些提示信息,如操作成功、系統(tǒng)異常、用戶名已經(jīng)存在等,所以我們添加了一個message字段。

此外,還有我們的核心數(shù)據(jù)。例如,我根據(jù)ID獲取數(shù)據(jù)。此數(shù)據(jù)的具體內容必須返回到前端,因此必須有數(shù)據(jù)。此數(shù)據(jù)使用什么類型?這種類型必須是多樣的,所以我們需要使用統(tǒng)一的父類,以便對象可以接收所有類型。當然,我們可以使用一些通用方法來方便操作。

然后還有我們的核心數(shù)據(jù)。例如,我根據(jù)ID獲取數(shù)據(jù)。此數(shù)據(jù)的具體內容必須返回到前端,因此必須有數(shù)據(jù)。此數(shù)據(jù)使用什么類型?這種類型必須是多樣的,所以我們需要使用統(tǒng)一的父類,以便對象可以接收所有類型。當然,我們可以使用通用方法來方便操作。

主要代碼展示:

public class Result<T> implements Serializable {
   private static final long serialVersionUID = -3960261604608758516L;
  private int code;
  private String msg;
  private T data;
  public static <T> Result<T> success() {
        return new Result<>();
    }
 
    /**
     * 成功,默認狀態(tài)碼,返回消息,自定義返回數(shù)據(jù)
     * @param data 自定義返回數(shù)據(jù)
     * @param <T>  返回類泛型,不能為String
     * @return 通用返回Result
     */
    public static <T> Result<T> success(T data) {
        return new Result<>(data);
    }
 
     /**
     * 成功,默認狀態(tài)碼,自定義返回消息,返回數(shù)據(jù)
     * @param msg  自定義返回消息
     * @param data 自定義返回數(shù)據(jù)
     * @param <T>  返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> success(String msg, T data) {
        return new Result<>(msg, data);
    }
           /**
     * 成功,默認狀態(tài)碼,自定義返回消息,無返回數(shù)據(jù)
     *
     * @param msg 自定義返回消息
     * @param <T> 返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> success(String msg) {
        return new Result<>(msg);
    }
     /**
     * 失敗,默認狀態(tài)碼,返回消息,無返回數(shù)據(jù)
     * @param <T> 返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error() {
        return new Result<>(ResultCode.ERROR);
    }
     /**
     * 失敗,默認狀態(tài)碼,自定義返回消息,無返回數(shù)據(jù)
     * @param <T> 返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(String msg) {
        return new Result<>(ResultCode.ERROR.getCode(), msg);
    }
     /**
     * 失敗,自定義狀態(tài)碼,返回消息,無返回數(shù)據(jù)
     * @param code 自定義狀態(tài)碼
     * @param msg  自定義返回消息
     * @param <T>  返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(int code, String msg) {
        return new Result<>(code, msg);
    }
     /**
     * 失敗,使用CodeMsg狀態(tài)碼,返回消息,無返回數(shù)據(jù)
      * @param resultCode CodeMsg,參數(shù)如下:
     *                   <p> code 狀態(tài)碼
     *                   <p> msg  返回消息
     * @param <T>        返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(ResultCode resultCode) {
        return new Result<>(resultCode);
    }
     /**
     * 成功構造器,無返回數(shù)據(jù)
     */
    private Result() {
        this(ResultCode.SUCCESS);
    }
     /**
     * 成功構造器,自定義返回數(shù)據(jù)
     * @param data 返回數(shù)據(jù)
     */
    private Result(T data) {
        this(ResultCode.SUCCESS, data);
    }
     /**
     * 成功構造器,自定義返回消息,無返回數(shù)據(jù)
     * @param msg 返回消息
     */
    private Result(String msg) {
        this(ResultCode.SUCCESS.getCode(), msg);
    }
           /**
     * 構造器,自定義狀態(tài)碼,返回消息
     * @param code 狀態(tài)碼
     * @param msg  返回消息
     */
    private Result(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
     /**
     * 成功構造器,自定義返回信息,返回數(shù)據(jù)
     * @param msg  返回信息
     * @param data 返回數(shù)據(jù)
     */
    private Result(String msg, T data) {
        this(ResultCode.SUCCESS.getCode(), msg, data);
    }
 
    /**
     * 構造器,自定義狀態(tài)碼,返回消息,返回數(shù)據(jù)
     * @param code 狀態(tài)碼
     * @param msg  返回消息
     * @param data 返回數(shù)據(jù)
     */
    private Result(int code, String msg, T data) {
        this(code, msg);
        this.data = data;
    }
            /**
     * 構造器,使用CodeMsg狀態(tài)碼與返回信息,自定義返回數(shù)據(jù)
     * @param resultCode CodeMsg,參數(shù)如下:
     *                   <p> code 狀態(tài)碼
     *                   <p> msg  返回消息
     * @param data       返回數(shù)據(jù)
     */
    private Result(ResultCode resultCode, T data) {
        this(resultCode);
        this.data = data;
    }
  
    /**
     * 構造器,使用CodeMsg狀態(tài)碼與返回信息
     * @param resultCode CodeMsg,參數(shù)如下:
     *                   <p> code 狀態(tài)碼
     *                   <p> msg  返回消息
     */
    private Result(ResultCode resultCode) {
        this(resultCode.getCode(), resultCode.getMsg());
    }
 
}

還需要定義幾個常見的錯誤

@Builder
public class ResultCode implements Serializable {
     private static final long serialVersionUID = -6269841958947880397L;
     /** 狀態(tài)碼*/
    private int code;
     /**狀態(tài)信息*/
    private String msg;
     /** 默認成功*/
    public final static ResultCode SUCCESS = dispose(ResultCodeEnum.SUCCESS);
    /**默認失敗*/
   public final static ResultCode ERROR = dispose(ResultCodeEnum.ERROR);
    /**通用業(yè)務異常*/
    public final static ResultCode BIZ_ERROR = dispose(ResultCodeEnum.BIZ_ERROR);
    /**文件超出最大限制*/
    public final static ResultCode FILE_OUT_MAX = dispose(ResultCodeEnum.FILE_OUT_MAX);
    /**文件格式不正確*/
    public final static ResultCode FILE_FORMAT_ERROR = dispose(ResultCodeEnum.FILE_FORMAT_ERROR);
    /** 參數(shù)錯誤*/
    public final static ResultCode PARAM_ERROR = dispose(ResultCodeEnum.PARAM_ERROR);
    /**Json解析異常*/
    public final static ResultCode JSON_FORMAT_ERROR = dispose(ResultCodeEnum.JSON_FORMAT_ERROR);
    /** Sql解析異常*/
    public final static ResultCode SQL_ERROR = dispose(ResultCodeEnum.SQL_ERROR);
    /**網(wǎng)絡超時*/
    public final static ResultCode NETWORK_TIMEOUT = dispose(ResultCodeEnum.NETWORK_TIMEOUT);
    /** 未知的接口*/
    public final static ResultCode UNKNOWN_INTERFACE = dispose(ResultCodeEnum.UNKNOWN_INTERFACE);
    /**請求方式不支持*/
    public final static ResultCode REQ_MODE_NOT_SUPPORTED = dispose(ResultCodeEnum.REQ_MODE_NOT_SUPPORTED);
    /**系統(tǒng)異常*/
    public final static ResultCode SYS_ERROR = dispose(ResultCodeEnum.SYS_ERROR);
    private static ResultCode dispose(ResultCodeEnum codeEnum) {
        return ResultCode.builder().code(codeEnum.getCode()).msg(codeEnum.getMsg()).build();
    }
     public ResultCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

以上就是SpringBoot實現(xiàn)統(tǒng)一封裝返回前端結果集的示例代碼的詳細內容,更多關于SpringBoot返回前端結果集的資料請關注腳本之家其它相關文章!

相關文章

  • Spring中@Value注解獲取不到配置值問題及解決

    Spring中@Value注解獲取不到配置值問題及解決

    這篇文章主要介紹了Spring中@Value注解獲取不到配置值問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java獲取用戶IP屬地模擬抖音詳解

    Java獲取用戶IP屬地模擬抖音詳解

    細心的小伙伴可能會發(fā)現(xiàn),抖音新上線了 IP 屬地的功能,小伙伴在發(fā)表動態(tài)、發(fā)表評論以及聊天的時候,都會顯示自己的 IP 屬地信息,本篇文章我們來模擬實現(xiàn)這一功能
    2022-07-07
  • 使用Java代碼進行因數(shù)分解和求最小公倍數(shù)的示例

    使用Java代碼進行因數(shù)分解和求最小公倍數(shù)的示例

    這篇文章主要介紹了使用Java代碼進行因數(shù)分解和求最小公倍數(shù)的示例,都是基于最基礎的算法原理實現(xiàn),需要的朋友可以參考下
    2015-11-11
  • MybatisPlus使用queryWrapper如何實現(xiàn)復雜查詢

    MybatisPlus使用queryWrapper如何實現(xiàn)復雜查詢

    這篇文章主要介紹了MybatisPlus使用queryWrapper如何實現(xiàn)復雜查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Java常用類之字符串相關類使用詳解

    Java常用類之字符串相關類使用詳解

    String、StringBuilder、StringBuffer類是Java中常用的三個字符串相關類。本文將通過示例為大家講解一下他們的用法,需要的可以參考一下
    2022-08-08
  • SpringCloud-Alibaba-Sentinel服務降級,熱點限流,服務熔斷

    SpringCloud-Alibaba-Sentinel服務降級,熱點限流,服務熔斷

    這篇文章主要介紹了SpringCloud-Alibaba-Sentinel服務降級,熱點限流,服務熔斷,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Springboot 讀取自定義pro文件注入static靜態(tài)變量方式

    Springboot 讀取自定義pro文件注入static靜態(tài)變量方式

    這篇文章主要介紹了Springboot 讀取自定義pro文件注入static靜態(tài)變量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java之SM4加密解密的實現(xiàn)

    Java之SM4加密解密的實現(xiàn)

    這篇文章主要介紹了Java之SM4加密解密的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java設計模式中組合模式應用詳解

    Java設計模式中組合模式應用詳解

    組合模式,又叫部分整體模式,它創(chuàng)建了對象組的數(shù)據(jù)結構組合模式使得用戶對單個對象和組合對象的訪問具有一致性。本文將通過示例為大家詳細介紹一下組合模式,需要的可以參考一下
    2022-11-11
  • linux重啟java服務的腳本

    linux重啟java服務的腳本

    這篇文章主要介紹了linux重啟java服務的腳本,本文分步驟通過shell腳本給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論