最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

我們?nèi)绾畏庋b這個(gè)結(jié)果?我們應(yīng)該注意返回到前端的數(shù)據(jù)中包含的信息。

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

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

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

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

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

主要代碼展示:

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<>();
    }
 
    /**
     * 成功,默認(rèn)狀態(tài)碼,返回消息,自定義返回?cái)?shù)據(jù)
     * @param data 自定義返回?cái)?shù)據(jù)
     * @param <T>  返回類泛型,不能為String
     * @return 通用返回Result
     */
    public static <T> Result<T> success(T data) {
        return new Result<>(data);
    }
 
     /**
     * 成功,默認(rèn)狀態(tài)碼,自定義返回消息,返回?cái)?shù)據(jù)
     * @param msg  自定義返回消息
     * @param data 自定義返回?cái)?shù)據(jù)
     * @param <T>  返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> success(String msg, T data) {
        return new Result<>(msg, data);
    }
           /**
     * 成功,默認(rèn)狀態(tài)碼,自定義返回消息,無(wú)返回?cái)?shù)據(jù)
     *
     * @param msg 自定義返回消息
     * @param <T> 返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> success(String msg) {
        return new Result<>(msg);
    }
     /**
     * 失敗,默認(rèn)狀態(tài)碼,返回消息,無(wú)返回?cái)?shù)據(jù)
     * @param <T> 返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error() {
        return new Result<>(ResultCode.ERROR);
    }
     /**
     * 失敗,默認(rèn)狀態(tài)碼,自定義返回消息,無(wú)返回?cái)?shù)據(jù)
     * @param <T> 返回類泛型
     * @return 通用返回Result
     */
    public static <T> Result<T> error(String msg) {
        return new Result<>(ResultCode.ERROR.getCode(), msg);
    }
     /**
     * 失敗,自定義狀態(tài)碼,返回消息,無(wú)返回?cá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)碼,返回消息,無(wú)返回?cá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);
    }
     /**
     * 成功構(gòu)造器,無(wú)返回?cái)?shù)據(jù)
     */
    private Result() {
        this(ResultCode.SUCCESS);
    }
     /**
     * 成功構(gòu)造器,自定義返回?cái)?shù)據(jù)
     * @param data 返回?cái)?shù)據(jù)
     */
    private Result(T data) {
        this(ResultCode.SUCCESS, data);
    }
     /**
     * 成功構(gòu)造器,自定義返回消息,無(wú)返回?cái)?shù)據(jù)
     * @param msg 返回消息
     */
    private Result(String msg) {
        this(ResultCode.SUCCESS.getCode(), msg);
    }
           /**
     * 構(gòu)造器,自定義狀態(tài)碼,返回消息
     * @param code 狀態(tài)碼
     * @param msg  返回消息
     */
    private Result(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
     /**
     * 成功構(gòu)造器,自定義返回信息,返回?cái)?shù)據(jù)
     * @param msg  返回信息
     * @param data 返回?cái)?shù)據(jù)
     */
    private Result(String msg, T data) {
        this(ResultCode.SUCCESS.getCode(), msg, data);
    }
 
    /**
     * 構(gòu)造器,自定義狀態(tài)碼,返回消息,返回?cái)?shù)據(jù)
     * @param code 狀態(tài)碼
     * @param msg  返回消息
     * @param data 返回?cái)?shù)據(jù)
     */
    private Result(int code, String msg, T data) {
        this(code, msg);
        this.data = data;
    }
            /**
     * 構(gòu)造器,使用CodeMsg狀態(tài)碼與返回信息,自定義返回?cái)?shù)據(jù)
     * @param resultCode CodeMsg,參數(shù)如下:
     *                   <p> code 狀態(tài)碼
     *                   <p> msg  返回消息
     * @param data       返回?cái)?shù)據(jù)
     */
    private Result(ResultCode resultCode, T data) {
        this(resultCode);
        this.data = data;
    }
  
    /**
     * 構(gòu)造器,使用CodeMsg狀態(tài)碼與返回信息
     * @param resultCode CodeMsg,參數(shù)如下:
     *                   <p> code 狀態(tài)碼
     *                   <p> msg  返回消息
     */
    private Result(ResultCode resultCode) {
        this(resultCode.getCode(), resultCode.getMsg());
    }
 
}

還需要定義幾個(gè)常見(jiàn)的錯(cuò)誤

@Builder
public class ResultCode implements Serializable {
     private static final long serialVersionUID = -6269841958947880397L;
     /** 狀態(tài)碼*/
    private int code;
     /**狀態(tài)信息*/
    private String msg;
     /** 默認(rèn)成功*/
    public final static ResultCode SUCCESS = dispose(ResultCodeEnum.SUCCESS);
    /**默認(rèn)失敗*/
   public final static ResultCode ERROR = dispose(ResultCodeEnum.ERROR);
    /**通用業(yè)務(wù)異常*/
    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ù)錯(cuò)誤*/
    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)絡(luò)超時(shí)*/
    public final static ResultCode NETWORK_TIMEOUT = dispose(ResultCodeEnum.NETWORK_TIMEOUT);
    /** 未知的接口*/
    public final static ResultCode UNKNOWN_INTERFACE = dispose(ResultCodeEnum.UNKNOWN_INTERFACE);
    /**請(qǐng)求方式不支持*/
    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實(shí)現(xiàn)統(tǒng)一封裝返回前端結(jié)果集的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot返回前端結(jié)果集的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Idea 快速生成方法返回值的操作

    Idea 快速生成方法返回值的操作

    這篇文章主要介紹了Idea 快速生成方法返回值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 基于log4j2.properties踩坑與填坑

    基于log4j2.properties踩坑與填坑

    這篇文章主要介紹了log4j2.properties踩坑與填坑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 深入淺出講解Spring框架中AOP及動(dòng)態(tài)代理的應(yīng)用

    深入淺出講解Spring框架中AOP及動(dòng)態(tài)代理的應(yīng)用

    在軟件業(yè),AOP為Aspect?Oriented?Programming的縮寫(xiě),意為:面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期間動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)
    2022-03-03
  • Java反射機(jī)制基礎(chǔ)詳解

    Java反射機(jī)制基礎(chǔ)詳解

    這篇文章主要介紹了JAVA 反射機(jī)制的相關(guān)知識(shí),文中講解的非常細(xì)致,代碼幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下,希望能給你帶來(lái)幫助
    2021-08-08
  • Nacos?Discovery服務(wù)治理解決方案

    Nacos?Discovery服務(wù)治理解決方案

    DiscoveryClient是專門(mén)負(fù)責(zé)服務(wù)注冊(cè)和發(fā)現(xiàn)的,我們可以通過(guò)它獲取到注冊(cè)到注冊(cè)中心的所有服務(wù),這篇文章主要介紹了Nacos?Discovery服務(wù)治理,需要的朋友可以參考下
    2022-11-11
  • Java各種內(nèi)存溢出的問(wèn)題剖析

    Java各種內(nèi)存溢出的問(wèn)題剖析

    本文主要介紹了Java各種內(nèi)存溢出的問(wèn)題剖析,了解其根源、排查方法以及有效的修改策略,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • java隨機(jī)事件分發(fā)器示例

    java隨機(jī)事件分發(fā)器示例

    這篇文章主要介紹了java隨機(jī)事件分發(fā)器示例,需要的朋友可以參考下,功能需求和代碼實(shí)現(xiàn)在下面
    2014-03-03
  • Java中多線程下載圖片并壓縮能提高效率嗎

    Java中多線程下載圖片并壓縮能提高效率嗎

    本文主要介紹了Java中多線程下載圖片并壓縮能提高效率嗎,很多人都想知道這個(gè)問(wèn)題,本文就來(lái)詳細(xì)介紹一下,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Fluent Mybatis學(xué)習(xí)之Update語(yǔ)法實(shí)踐

    Fluent Mybatis學(xué)習(xí)之Update語(yǔ)法實(shí)踐

    Fluent MyBatis是一個(gè)MyBatis的增強(qiáng)工具,沒(méi)有對(duì)mybatis做任何修改。本篇文章將詳細(xì)介紹對(duì)Fluent Mybatis中的update語(yǔ)法進(jìn)行驗(yàn)證。代碼具有一定價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • mybatis實(shí)現(xiàn)增刪改查_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    mybatis實(shí)現(xiàn)增刪改查_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本文通過(guò)實(shí)例代碼給大家介紹了mybatis實(shí)現(xiàn)增刪改查功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09

最新評(píng)論

五寨县| 鸡东县| 佛坪县| 仁怀市| 深泽县| 杭州市| 阿城市| 长武县| 油尖旺区| 南乐县| 台东县| 财经| 太仆寺旗| 天台县| 崇义县| 利辛县| 古丈县| 云霄县| 乐陵市| 河池市| 龙门县| 固始县| 巴林右旗| 襄汾县| 都江堰市| 巴塘县| 榆树市| 大关县| 曲沃县| 玉环县| 永兴县| 天峻县| 建昌县| 分宜县| 西华县| 定安县| 九龙县| 当雄县| 正宁县| 墨江| 海林市|