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

SpringBoot 統(tǒng)一請求返回的實現(xiàn)

 更新時間:2020年07月15日 09:17:05   作者:阿亮叨逼叨  
這篇文章主要介紹了SpringBoot 統(tǒng)一請求返回的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

目前我們的返回是直接把實體類扔給請求方,這樣很不友好,一方面沒有統(tǒng)一的格式,二來請求方不知道請求成功與否,沒有一個可以判斷的東西,也沒有說明性的返回。

本篇就來為所有接口提供一個統(tǒng)一的友好返回。

確定返回結(jié)構(gòu)

首先,我們先確定好我們接口返回的格式是什么樣的,然后再一步一步實現(xiàn)下面的。

{
 "code": 200,
  "msg": "ok",
  "data": ""
}
  • code 字段表示狀態(tài)碼,調(diào)用方根據(jù)該碼來作為后續(xù)邏輯的依據(jù),比如 code 值為 200 表示操作成功,沒有邏輯錯誤,此時可以提示用戶操作成功等;code 值不為 200 表示操作失敗,比如為 1001 ,表示用戶名已存在,此時前端做一些相應(yīng)操作。
  • msg 字段用來充當(dāng)額外說明,比如上面說的狀態(tài)為 1001,這里的 msg 就可以是 username exists 這樣的說明性文字,幫助調(diào)用方更好的理解。
  • data 字段一般是在 code 值為 200 的時候,返回具體的業(yè)務(wù)數(shù)據(jù),可以是數(shù)組,也可以是對象。

創(chuàng)建返回碼

根據(jù)上面定的返回結(jié)構(gòu),我們可以把 code 和 msg 字段用枚舉類型整合,在項目中創(chuàng)建 common 目錄,新建 ApiCode.java 如下代碼所示:

package com.foxescap.wxbox.common;

/**
 * 全局接口狀態(tài)碼
 * @author xfly
 */
public enum ApiCode {
  /**
   * 通用成功
   */
  API_OK(200, "ok"),
  /**
   * 用戶名已存在
   */
  API_USERNAME_EXIST(1001, "username exists");

  private final int code;

  private final String msg;

  ApiCode(int code, String msg) {
    this.code = code;
    this.msg = msg;
  }

  public int code() {
    return this.code;
  }

  public String getMsg() {
    return this.msg;
  }
}

之后每有一個不同的錯誤代碼都需要在這里加上,然后調(diào)用這里的枚舉變量。可能會有點繁瑣,但當(dāng)項目逐漸大起來以后,這樣做就能很好的管理狀態(tài)碼。

創(chuàng)建返回類

在項目中創(chuàng)建 common 目錄,新建 HttpResponse.java 文件:

package com.foxescap.wxbox.common;

import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

/**
 * @author xfly
 * @param <T>
 */
@Data
@AllArgsConstructor
@JsonPropertyOrder({"code", "msg", "data"})
public class ApiResponse<T> implements Serializable {
  private static final long serialVersionUID = 1L;

  /**
   * 自定義返回碼
   */
  private int code;

  /**
   * 自定義返回說明
   */
  private String msg;

  /**
   * 返回數(shù)據(jù)
   */
  private T data;

  /**
   * 成功返回,無數(shù)據(jù)
   *
   * @return 自定義的 ApiResponse 對象
   */
  public static ApiResponse<Object> success() {
    return new ApiResponse<>(ApiCode.API_OK.code(), ApiCode.API_OK.getMsg(), "");
  }

  /**
   * 成功返回,有數(shù)據(jù)
   *
   * @param object 返回數(shù)據(jù)
   * @param <T>  返回數(shù)據(jù)類型
   * @return 自定義的 ApiResponse 對象
   */
  public static <T> ApiResponse<T> success(T object) {
    return new ApiResponse<>(ApiCode.API_OK.code(), ApiCode.API_OK.getMsg(), object);
  }

  /**
   * 失敗返回
   *
   * @param apiCode 錯誤碼
   * @return 自定義的 ApiResponse 對象
   */
  public static ApiResponse<Object> fail(ApiCode apiCode) {
    return new ApiResponse<>(apiCode.code(), apiCode.getMsg(), "");
  }
}

使用返回類

我們修改一下 Controller 里面的接口返回,現(xiàn)在不是直接返回實體類了,而是封裝成我們的返回類,再返回給調(diào)用方:

@GetMapping("/user/{username}")
public ApiResponse<User> findUserByUsername(@PathVariable(name = "username") String username) {
  return ApiResponse.success(userService.findByUsername(username));
}

到此這篇關(guān)于SpringBoot 統(tǒng)一請求返回的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot 統(tǒng)一請求返回內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • logback和log4j日志框架堆棧信息添加TraceId方式

    logback和log4j日志框架堆棧信息添加TraceId方式

    這篇文章主要介紹了logback和log4j日志框架堆棧信息添加TraceId方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java8中常見函數(shù)式接口的使用示例詳解

    Java8中常見函數(shù)式接口的使用示例詳解

    在 Java 8 中,函數(shù)式接口是一個關(guān)鍵的特性,它們允許將方法作為參數(shù)傳遞或返回類型,本文為大家整理了一些常見的函數(shù)式接口的使用,希望對大家有所幫助
    2023-12-12
  • 基于Java8 函數(shù)式接口理解及測試

    基于Java8 函數(shù)式接口理解及測試

    下面小編就為大家?guī)硪黄贘ava8 函數(shù)式接口理解及測試。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java?超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的堆的應(yīng)用

    Java?超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的堆的應(yīng)用

    堆首先是一個完全二叉樹,堆分為小根堆和大根堆。小根堆,所有結(jié)點的左右子節(jié)點都不小于根節(jié)點;大根堆,所有結(jié)點的左右子節(jié)點都不大于根節(jié)點。優(yōu)先級隊列(priorityQueue)底層就是一個小根堆
    2022-04-04
  • 解決Intellij IDEA 使用Spring-boot-devTools無效的問題

    解決Intellij IDEA 使用Spring-boot-devTools無效的問題

    下面小編就為大家?guī)硪黄鉀QIntellij IDEA 使用Spring-boot-devTools無效的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java中正則表達(dá)式的語法以及matches方法的使用方法

    Java中正則表達(dá)式的語法以及matches方法的使用方法

    正則表達(dá)式(Regular Expression)是一門簡單語言的語法規(guī)范,是強大、便捷、高效的文本處理工具,這篇文章主要給大家介紹了關(guān)于Java中正則表達(dá)式的語法以及matches方法的使用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Spring Boot 中的自動配置autoconfigure詳解

    Spring Boot 中的自動配置autoconfigure詳解

    這篇文章主要介紹了Spring Boot 中的自動配置autoconfigure詳解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • springboot基于IDEA環(huán)境熱加載與熱部署教程

    springboot基于IDEA環(huán)境熱加載與熱部署教程

    這篇文章主要為大家介紹了springboot在IDEA環(huán)境下的熱加載與熱部署教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • Java創(chuàng)建數(shù)組的幾種方式總結(jié)

    Java創(chuàng)建數(shù)組的幾種方式總結(jié)

    下面小編就為大家?guī)硪黄狫ava創(chuàng)建數(shù)組的幾種方式總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Maven配置單倉庫與多倉庫的實現(xiàn)(Nexus)

    Maven配置單倉庫與多倉庫的實現(xiàn)(Nexus)

    本文主要介紹了Maven配置單倉庫與多倉庫的實現(xiàn)(Nexus),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

梓潼县| 浦城县| 霸州市| 高陵县| 云霄县| 新乐市| 临沧市| 桦南县| 藁城市| 高密市| 云龙县| 无锡市| 桃源县| 屏东县| 昭通市| 石狮市| 华蓥市| 大关县| 定西市| 教育| 阿尔山市| 手游| 大同县| 濮阳县| 凤城市| 金坛市| 福清市| 泰兴市| 襄垣县| 皮山县| 诸暨市| 张家口市| 土默特右旗| 敖汉旗| 永定县| 阳曲县| 宁南县| 宜城市| 板桥市| 鄯善县| 金平|