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

java中統(tǒng)一返回前端格式及統(tǒng)一結(jié)果處理返回詳解

 更新時間:2025年02月25日 10:55:11   作者:小學(xué)雞!  
這篇文章主要介紹了統(tǒng)一結(jié)果處理的重要性,以及如何在SpringBoot項目中定義和使用統(tǒng)一結(jié)果返回類,通過構(gòu)造器私有化和靜態(tài)方法ok、error,提供了成功和失敗的統(tǒng)一響應(yīng)格式,需要的朋友可以參考下

統(tǒng)一結(jié)果處理

為什么要使用統(tǒng)一結(jié)果?

1、大部分前后端項目采用 JSON 格式進(jìn)行數(shù)據(jù)交互,定義一個統(tǒng)一的數(shù)據(jù)規(guī)范,有利于前后臺的交互、以及信息處理。

2、Java后端開發(fā)項目時,需要給前端傳一些數(shù)據(jù),可以直接將一個 List 或者 Map 返回給前端,但是這樣會顯得很亂,并且有時候前端需要的不僅僅只是數(shù)據(jù),可能還有一些錯誤碼、錯誤信息等,這時就需要一種規(guī)范的數(shù)據(jù)格式傳到前端。

返回格式的屬性說明

  • success: true/false,是否響應(yīng)成功,設(shè)置成 Boolean 類型。
  • code: 200/400/500等,響應(yīng)狀態(tài)碼。設(shè)置成 Integer 類型。
  • message: 訪問成功/系統(tǒng)異常等,狀態(tài)碼描述,設(shè)置成 String 類型。
  • data: 處理得數(shù)據(jù),響應(yīng)數(shù)據(jù),設(shè)置成 HashMap 類型。

下面舉出來一個 Spring Boot 項目中,通過接口返回給前端的結(jié)果格式示例:

// 舉例:返回結(jié)果樣式
{
  "success": true,
  "code": 200,
  "message": "查詢用戶列表",
  "data": {
    "itms": [
      {
        "id": "1",
        "username": "admin",
        "role": "ADMIN",
        "createTime": "2020-4-24T15:32:29",
        "modifiedTime": "2020-4-24T15:41:40"
      },{
        "id": "2",
        "username": "zhangsan",
        "role": "USER",
        "createTime": "2020-4-24T15:32:29",
        "modifiedTime": "2020-4-24T15:41:40"
      }
    ]
  }
}

統(tǒng)一結(jié)果返回類如何定義

  • 構(gòu)造器私有,不允許進(jìn)行實例化,但提供靜態(tài)方法:ok、error 返回一個實例

    • ok:返回一個 成功操作 的實例對象
    • error:返回一個 失敗操作 的實例對象
  • 采用鏈?zhǔn)秸{(diào)用(即:方法返回對象為其本身,return this)----> 下面代碼中涉及到

統(tǒng)一結(jié)果返回類:

@Data
public class Result {
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<>();
    
    // 默認(rèn)私有構(gòu)造器
    private Result(){
        
    }
    
    // 自定義構(gòu)造器
    private Result(Boolean success, Integer code, String message){
        this.success = success;
        this.code = code;
        this.message = message;
    }
    
    
    
    // 返回一個默認(rèn)的 成功操作 的實例對象,默認(rèn)響應(yīng)狀態(tài)碼 200
    public static Result ok(){
        // 使用 HttpStatus 的常量表示響應(yīng)狀態(tài)碼,這個需要導(dǎo)入 httpcore 依賴
        return new Result(true, HttpStatus.SC_OK, "success");
    }
    
    // 返回一個自定義 成功操作 的實例對象
    public static Result ok(Boolean success, Integer code, String message) {
        return new Result(success, code, message);
    }
    
    
    
    // 返回一個默認(rèn)的 失敗操作 的結(jié)果,默認(rèn)響應(yīng)狀態(tài)碼為 500
    public static Result error() {
        return new Result(false, HttpStatus.SC_INTERNAL_SERVER_ERROR, "error");
    }
    
    // 返回一個自定義 失敗操作 的實例對象
    public static Result error(Boolean success, Integer code, String message) {
        return new Result(success, code, message);
    }
    
    
    
    // 自定義響應(yīng)是否成功
    public Result success(Boolean success) {
        this.setSuccess(success);
        return this;
    }
    
    // 自定義響應(yīng)狀態(tài)碼
    public Result code(Integer code) {
        this.setCode(code);
        return this;
    }
    
    // 自定義響應(yīng)消息
    public Result message(String message) {
        this.setMessage(message);
        return this;
    }
    
    // 自定義響應(yīng)數(shù)據(jù),一次設(shè)置一個 map 集合
    public Result data(Map<String, Object> map) {
        this.data.putAll(map);
        return this;
    }
    
    // 通用設(shè)置響應(yīng)數(shù)據(jù),一次設(shè)置一個 key - value 鍵值對
    public Result data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }
}

代碼說明:

1、統(tǒng)一結(jié)果返回類。方法采用鏈?zhǔn)秸{(diào)用的寫法(即返回類本身 return this)。

2、構(gòu)造器私有,不允許進(jìn)行實例化,但提供靜態(tài)方法 ok、error 返回一個實例。

3、靜態(tài)方法說明:

  • ok: 返回一個 成功操作 的結(jié)果(實例對象)。
  • error: 返回一個 失敗操作 的結(jié)果(實例對象)。

4、普通方法說明:

  • success: 用于自定義響應(yīng)是否成功
  • code: 用于自定義響應(yīng)狀態(tài)碼
  • message: 用于自定義響應(yīng)消息
  • data: 用于自定義響應(yīng)數(shù)據(jù)

5、依賴信息說明:

  • 此處使用 @Data 注解,需導(dǎo)入 lombok 相關(guān)依賴文件。
  • 使用 HttpStatus 的常量表示 響應(yīng)狀態(tài)碼,需導(dǎo)入 httpcore 相關(guān)依賴文件。

注意:使用 HttpStatus 時,要加這個依賴:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.13(版本號)</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

4、使用:修改某個 controller 如下所示:

@GetMapping("selectOne")
public Result selectOne(Integer id) {
    Emp emp = this.empService.queryById(id);
    if (emp == null) {
        return Result.error().message("用戶不存在");
    }
    return Result.ok().data("items", emp).message("查詢成功");
}

4.1 成功:若查詢用戶成功,調(diào)用 ok 返回查詢到的結(jié)果。

{
    "success": true,
    "code": 200,
    "message": "查詢成功",
    "data": {
        "items": {
            "id": 1,
            "name": "tom",
            "salary": 6000.0,
            "age": 20,
            "email": "tom@163.com"
        }
    }
}

4.2 失?。喝舨樵冇脩羰?,調(diào)用 error 返回查詢失敗信息。

{
    "success": false,
    "code": 500,
    "message": "用戶不存在",
    "data": {}
}

總結(jié)

到此這篇關(guān)于java中統(tǒng)一返回前端格式及統(tǒng)一結(jié)果處理返回的文章就介紹到這了,更多相關(guān)java統(tǒng)一結(jié)果處理返回內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Spring Boot框架整合Redis的超詳細(xì)案例教程

    使用Spring Boot框架整合Redis的超詳細(xì)案例教程

    本文詳細(xì)介紹了如何在SpringBoot項目中整合Redis,包括依賴配置、連接設(shè)置、基本操作和應(yīng)用案例,通過整合,可以充分利用SpringBoot和Redis的優(yōu)勢,提升應(yīng)用性能和可擴(kuò)展性,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • MyBatis?Generator使用小結(jié)

    MyBatis?Generator使用小結(jié)

    本文主要介紹了MyBatis?Generator使用小結(jié),它能夠根據(jù)數(shù)據(jù)庫表,自動生成java實體類、dao層接口及mapper.xml文件,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 一篇文章帶你入門Java字面量和常量

    一篇文章帶你入門Java字面量和常量

    這篇文章主要介紹了探究Java的常量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Java?this關(guān)鍵字的使用案例詳解

    Java?this關(guān)鍵字的使用案例詳解

    這篇文章主要為大家介紹了Java?this關(guān)鍵字的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Rabbitmq消息推送功能實現(xiàn)示例

    Rabbitmq消息推送功能實現(xiàn)示例

    rabbitMQ為異步消息處理提出了一個很好的解決方案,它是一個非常好用的消息中間件。主要解決當(dāng)生產(chǎn)者大量產(chǎn)生數(shù)據(jù)時,消費者無法快速消費的問題。這個時候需要一個中間層,保存這個數(shù)據(jù),rabbitMQ是一個很好的解決方案
    2022-12-12
  • 如何在IDEA上安裝scala插件并創(chuàng)建工程(圖文教程)

    如何在IDEA上安裝scala插件并創(chuàng)建工程(圖文教程)

    這篇文章主要介紹了一文教你如何在IDEA上安裝scala插件并創(chuàng)建工程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java?HashSet添加?遍歷元素源碼分析

    Java?HashSet添加?遍歷元素源碼分析

    這篇文章主要為大家詳細(xì)介紹了HashSet、HashMap底層添加、遍歷元素的機(jī)制,追蹤并分析源碼,文中的示例代碼講解詳細(xì),希望對大學(xué)有所幫助
    2022-07-07
  • 詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    這篇文章主要介紹了詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • ReentrantReadWriteLock不能鎖升級的原因總結(jié)

    ReentrantReadWriteLock不能鎖升級的原因總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Java并發(fā)的相關(guān)知識,文章圍繞著為什么ReentrantReadWriteLock不能鎖升級展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 利用Java實現(xiàn)讀取WPS?Excel中嵌入的圖片

    利用Java實現(xiàn)讀取WPS?Excel中嵌入的圖片

    許多數(shù)據(jù)文件中可能包含嵌入式圖片,這些圖片對于數(shù)據(jù)分析和可視化非常重要,下面我們就來看看如何使用Java讀取WPS?Excel中嵌入的圖片吧
    2024-11-11

最新評論

汤阴县| 邹平县| 鄂尔多斯市| 桑植县| 苗栗市| 镇巴县| 漠河县| 安仁县| 杭锦后旗| 墨脱县| 大同县| 澄迈县| 福建省| 瓮安县| 城步| 浪卡子县| 西乌珠穆沁旗| 西贡区| 新化县| 六盘水市| 房产| 南涧| 宁海县| 霍山县| 宜都市| 海伦市| 镇赉县| 延川县| 定日县| 清远市| 肥城市| 东兰县| 平度市| 贵定县| 扎鲁特旗| 盐津县| 宜黄县| 彰化市| 遂昌县| 聂荣县| 榆林市|