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

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

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

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

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

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

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

返回格式的屬性說明

  • success: true/false,是否響應成功,設(shè)置成 Boolean 類型。
  • code: 200/400/500等,響應狀態(tài)碼。設(shè)置成 Integer 類型。
  • message: 訪問成功/系統(tǒng)異常等,狀態(tài)碼描述,設(shè)置成 String 類型。
  • data: 處理得數(shù)據(jù),響應數(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)造器私有,不允許進行實例化,但提供靜態(tài)方法:ok、error 返回一個實例

    • ok:返回一個 成功操作 的實例對象
    • error:返回一個 失敗操作 的實例對象
  • 采用鏈式調(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<>();
    
    // 默認私有構(gòu)造器
    private Result(){
        
    }
    
    // 自定義構(gòu)造器
    private Result(Boolean success, Integer code, String message){
        this.success = success;
        this.code = code;
        this.message = message;
    }
    
    
    
    // 返回一個默認的 成功操作 的實例對象,默認響應狀態(tài)碼 200
    public static Result ok(){
        // 使用 HttpStatus 的常量表示響應狀態(tài)碼,這個需要導入 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);
    }
    
    
    
    // 返回一個默認的 失敗操作 的結(jié)果,默認響應狀態(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);
    }
    
    
    
    // 自定義響應是否成功
    public Result success(Boolean success) {
        this.setSuccess(success);
        return this;
    }
    
    // 自定義響應狀態(tài)碼
    public Result code(Integer code) {
        this.setCode(code);
        return this;
    }
    
    // 自定義響應消息
    public Result message(String message) {
        this.setMessage(message);
        return this;
    }
    
    // 自定義響應數(shù)據(jù),一次設(shè)置一個 map 集合
    public Result data(Map<String, Object> map) {
        this.data.putAll(map);
        return this;
    }
    
    // 通用設(shè)置響應數(shù)據(jù),一次設(shè)置一個 key - value 鍵值對
    public Result data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }
}

代碼說明:

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

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

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

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

4、普通方法說明:

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

5、依賴信息說明:

  • 此處使用 @Data 注解,需導入 lombok 相關(guān)依賴文件。
  • 使用 HttpStatus 的常量表示 響應狀態(tài)碼,需導入 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)文章

  • 詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵

    詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵

    這篇文章主要介紹了詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵,有興趣的可以了解一下。
    2017-01-01
  • Spring前后端跨域請求設(shè)置代碼實例

    Spring前后端跨域請求設(shè)置代碼實例

    這篇文章主要介紹了Spring前后端跨域請求設(shè)置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Java常量池知識點總結(jié)

    Java常量池知識點總結(jié)

    本篇文章給大家通過理論原理等方便徹底分析了Java常量池的相關(guān)知識,有興趣的朋友閱讀學習下吧。
    2017-12-12
  • SpringBoot使用protobuf格式的接口方式

    SpringBoot使用protobuf格式的接口方式

    這篇文章主要介紹了SpringBoot使用protobuf格式的接口方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中關(guān)于文件路徑讀取問題的分析

    Java中關(guān)于文件路徑讀取問題的分析

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java中關(guān)于文件路徑讀取問題展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java實現(xiàn)直接插入排序與折半插入排序的示例詳解

    Java實現(xiàn)直接插入排序與折半插入排序的示例詳解

    這篇文章主要為大家詳細介紹了插入排序中兩個常見的排序:直接插入排序與折半插入排序。本文用Java語言實現(xiàn)了這兩個排序算法,感興趣的可以學習一下
    2022-06-06
  • Java中字節(jié)流和字符流的區(qū)別與聯(lián)系

    Java中字節(jié)流和字符流的區(qū)別與聯(lián)系

    Java中的字節(jié)流和字符流是用于處理輸入和輸出的兩種不同的流,本文主要介紹了Java中字節(jié)流和字符流的區(qū)別與聯(lián)系,字節(jié)流以字節(jié)為單位進行讀寫,適用于處理二進制數(shù)據(jù),本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2024-12-12
  • Java中的Vector和Stack底層源碼分析

    Java中的Vector和Stack底層源碼分析

    這篇文章主要介紹了Java中的Vector和Stack底層源碼分析,Stack繼承了Vector,Vector底層還是一個List,也就是基于數(shù)組來實現(xiàn)的,所以ArrayList有的優(yōu)點,比如獲取元素的速度快,隨機讀,它都有,需要的朋友可以參考下
    2023-12-12
  • mybatis使用foreach遍歷list集合或者array數(shù)組方式

    mybatis使用foreach遍歷list集合或者array數(shù)組方式

    這篇文章主要介紹了mybatis使用foreach遍歷list集合或者array數(shù)組方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解Java如何實現(xiàn)企業(yè)微信審批流程

    詳解Java如何實現(xiàn)企業(yè)微信審批流程

    這篇文章主要使用了一個Java示例代碼,來向大家展示如何在企業(yè)微信中實現(xiàn)審批流程,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考下
    2024-11-11

最新評論