Springboot 設置統一的請求返回格式

現在開發過程中主要采用前后端分離的方式進行開發測試,也就是前端封裝請求,后端提供標準的API接口服務。一般現在json 格式受到開發者們的青睞,學習過程中我們可以設置接口的返回類型,那么怎么做到設置統一的返回格式呢?以下是在項目開發過程中一般的模式標準:

1、一般springboot?我們使用?SpringBoot進行開發時,當我們引入?spring-boot-starter-web場景啟動器后,該場景中就包含了?jackson依賴,不需要再額外導入,并且默認開啟了注解掃描驅動;但是springmvc 則?引入支持json 的jar?

2、請求Controller ,設置json 格式的請求,一般使用RESTController 注解,這個注解s是?@Controller和?@ResponseBody注解的結合體,具有相同的作用,該注解只能標志在類上。

3、封裝統一的返回對象格式,一般我們有幾個關鍵項,code,msg,data ,如下:

public class ResponseResult<T> {
?
? ? /**
? ? ?* 狀態碼
? ? ?*/
? ? private Integer code;
?
? ? /**
? ? ?* 提示信息,如果有錯誤時,前端可以獲取該字段進行提示
? ? ?*/
? ? private String msg;
?
? ? /**
? ? ?* 返回的結果數據
? ? ?*/
? ? private T data;
?
? ? private ResponseResult() {
?
? ? }
?
? ? public ResponseResult(Integer code, String msg) {
? ? ? ? this.code = code;
? ? ? ? this.msg = msg;
? ? }
?
? ? public ResponseResult(Integer code, String msg, T data) {
? ? ? ? this.code = code;
? ? ? ? this.msg = msg;
? ? ? ? this.data = data;
? ? }
?
? ? public Integer getCode() {
? ? ? ? return code;
? ? }
?
? ? public void setCode(Integer code) {
? ? ? ? this.code = code;
? ? }
?
? ? public String getMsg() {
? ? ? ? return msg;
? ? }
?
? ? public void setMsg(String msg) {
? ? ? ? this.msg = msg;
? ? }
?
? ? public T getData() {
? ? ? ? return data;
? ? }
?
? ? public void setData(T data) {
? ? ? ? this.data = data;
? ? }
?
}

-----------------使用枚舉設置返回狀態碼及已知類型----------------

public enum ResultCode {
? ? /**
? ? ?* 通用狀態碼
? ? ?*/
? ? SUCCESS(1,"OK"),
? ? FAILED(-1,"FAIL"),
? ? /*
? ? 參數錯誤狀態碼
? ? ?*/
? ? PARAM_IS_INVAlID(101,"參數無效"),
? ? PARAM_IS_BLANK(101,"參數為空"),
? ? /* 用戶錯誤 ?201 - 299 ?*/
? ? USER_NOT_LOGIN(201,"未登錄"),
? ? USER_NOT_EXIST(202,"用戶不存在"),
? ? USER_LOGIN_ERROR(203,"登陸失敗,賬號或者密碼有誤"),
? ? NOT_PERMISSION(204,"無權限訪問"),
? ? /* 業務錯誤 301 - 399*/
? ? DATA_NOT_FOUND(301,"沒有數據");
?
? ? //返回狀態碼
? ? private Integer code;
?
? ? //返回消息
? ? private String msg;
?
? ? private ResultCode() {
? ??
? ? }
? ??
? ? ResultCode(Integer code, String msg) {
? ? ? ? this.code = code;
? ? ? ? this.msg = msg;
? ? }
?
? ? public Integer getCode() {
? ? ? ? return code;
? ? }
?
? ? public void setCode(Integer code) {
? ? ? ? this.code = code;
? ? }
?
? ? public String getMsg() {
? ? ? ? return msg;
? ? }
?
? ? public void setMsg(String msg) {
? ? ? ? this.msg = msg;
? ? }
}

通過在ResponseResult添加一般的返回方法設置類

public static <T> ResponseResult<T> setCommonStatusAndData(ResultCode resultCode, T data){
? ? return new ResponseResult<>(resultCode.getCode(), resultCode.getMsg(),data);
}
?
public static ResponseResult setCommonStatusNoData(ResultCode resultCode){
? ? return new ResponseResult<>(resultCode.getCode(), resultCode.getMsg());
}
我們的開發接口服務時可以進行使用一般

public?ResponseResult<T> getApi(輸入參數){

? ? 。。。。。。。。。。。。。。。。。

? ? return?new ResponseResult<>(code, msg, data);

? ? //或者使用

? ? return ResponseResult.setCommonStatusAndData(ResultCode.SUCCESS,user)

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39285.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39285.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39285.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據在內存中的存儲(二進制形式存儲)

計算機要處理的信息是多種多樣的&#xff0c;如數字、文字、符號、圖形、音頻、視頻等&#xff0c;這些信息在人們的眼里是不同的。但對于計算機來說&#xff0c;它們在內存中都是一樣的&#xff0c;都是以二進制的形式來表示。 要想學習編程&#xff0c;就必須了解二進制&…

Spark SQL優化:NOT IN子查詢優化解決

背景 有如下的數據查詢場景。 SELECT a,b,c,d,e,f FROM xxx.BBBB WHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} AND predict_type not IN ( SELECT distinct a FROM xxx.AAAAAWHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} ) 分析 通過查看SQL語句的執行計劃基本…

Dubbo基礎學習(筆記一)

目錄 第一章、概念介紹1.1&#xff09;什么是RPC框架1.2&#xff09;什么是分布式系統1.3&#xff09;Dubbo概述1.3&#xff09;Dubbo基本架構 第二章、服務提供者2.1&#xff09;目錄結構和依賴2.2&#xff09;model層2.3&#xff09;service層2.4&#xff09;resources配置文…

ARTS 挑戰打卡的第8天 ---volatile 關鍵字在MCU中的作用,四個實例講解(Tips)

前言 &#xff08;1&#xff09;volatile 關鍵字作為嵌入式面試的常考點&#xff0c;很多人都不是很了解&#xff0c;或者說一知半解。 &#xff08;2&#xff09;可能有些人會說了&#xff0c;volatile 關鍵字不就是防止編譯器優化的嗎&#xff1f;有啥好詳細講解的&#xff1…

HashMap底層相關內容

HashMap的底層結構&#xff1a; 1.7之前 數組加鏈表&#xff0c;當兩個值進行插入的時候 采用頭插法進行插入&#xff0c;可能會造成死循環 1.8之后 數組加鏈表/紅黑樹&#xff0c;當兩個值進行插入的時候&#xff0c;采用尾插法進行插入&#xff0c;不會造成死循環 HashMap底…

xml轉map工具類

背景&#xff1a;最近遇到接口返回是xml&#xff0c;所以需要整一個轉換的工具類&#xff0c;方便后續其他xml處理。 依賴引入&#xff1a; <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.1</versi…

澎峰科技|邀您關注2023 RISC-V中國峰會!

峰會概覽 2023 RISC-V中國峰會&#xff08;RISC-V Summit China 2023&#xff09;將于8月23日至25日在北京香格里拉飯店舉行。本屆峰會將以“RISC-V生態共建”為主題&#xff0c;結合當下全球新形勢&#xff0c;把握全球新時機&#xff0c;呈現RISC-V全球新觀點、新趨勢。 本…

linux下nginx配置https和反向代理本地端口

1 修改配置文件/etc/nginx/sites-enabled/default 在配置文件中增加一個server用來做https端口監聽&#xff0c; ssl_certificate和ssl_certificate_key修改為自己申請的https認證文件 server{listen 443 ssl;server_name www.dogrich.net;#root /var/www/html;# 上面配置的…

《3D 數學基礎》12 幾何圖元

目錄 1 表達圖元的方法 1.1 隱式表示法 1.2 參數表示 1.3 直接表示 2. 直線和射線 2.1 射線的不同表示法 2.1.1 兩點表示 2.1.2 參數表示 2.1.3 相互轉換 2.2 直線的不同表示法 2.2.1 隱式表示法 2.2.2 斜截式 2.2.3 相互轉換 3. 球 3.1 隱式表示 1 表達圖元的方…

C語言的使用技巧--在IO操作中的移位和快速配置

在WB32F103&#xff08;ARM cortex m3內核&#xff0c;96Mhz&#xff09;的gpio初始化中有一段代碼&#xff0c;充分的結合了硬件特征并使用C語言的技巧來快速的配置對應的GPIO的功能&#xff0c;堪稱經典和楷模&#xff0c;代碼異常簡潔&#xff0c;執行速度快&#xff0c;配置…

【深度學習所有損失函數】在 NumPy、TensorFlow 和 PyTorch 中實現(2/2)

一、說明 在本文中&#xff0c;討論了深度學習中使用的所有常見損失函數&#xff0c;并在NumPy&#xff0c;PyTorch和TensorFlow中實現了它們。 (二-五)見 六、稀疏分類交叉熵損失 稀疏分類交叉熵損失類似于分類交叉熵損失&#xff0c;但在真實標簽作為整數而不是獨熱編碼提…

Python pycparser(c文件解析)模塊使用教程

文章目錄 安裝 pycparser 模塊模塊開發者網址獲取抽象語法樹1. 需要導入的模塊2. 獲取 不關注預處理相關 c語言文件的抽象語法樹ast3. 獲取 預處理后的c語言文件的抽象語法樹ast 語法樹組成1. 數據類型定義 Typedef2. 類型聲明 TypeDecl3. 標識符類型 IdentifierType4. 變量聲明…

語聚AI公測發布,大語言模型時代下新的生產力工具

語聚AI 公測發布 距離語聚AI內測上線已經過去近1個月。 這期間&#xff0c;我們共邀請了近百位資深用戶與行業專家加入語聚AI產品體驗。通過大家的熱情參與積極反饋&#xff0c;我們不斷優化并完善了語聚AI的功能與使用體驗。 經過研發團隊不懈的努力&#xff0c;今天語聚AI終…

【Leetcode】88.合并兩個有序數組

一、題目 1、題目描述 給你兩個按 非遞減順序 排列的整數數組 nums1 和 nums2,另有兩個整數 m 和 n ,分別表示 nums1 和 nums2 中的元素數目。 請你 合并 nums2 到 nums1 中,使合并后的數組同樣按 非遞減順序 排列。 注意:最終,合并后數組不應由函數返回,而是存儲在數…

梅賽德斯-奔馳將成為首家集成ChatGPT的汽車制造商

ChatGPT的受歡迎程度毋庸置疑。OpenAI這個基于人工智能的工具&#xff0c;每天能夠吸引無數用戶使用&#xff0c;已成為當下很受歡迎的技術熱點。因此&#xff0c;有許多公司都在想方設法利用ChatGPT來提高產品吸引力&#xff0c;賣點以及性能。在汽車領域&#xff0c;梅賽德斯…

代碼隨想錄算法訓練營第59天|動態規劃part16|583. 兩個字符串的刪除操作、72. 編輯距離、編輯距離總結篇

代碼隨想錄算法訓練營第59天&#xff5c;動態規劃part16&#xff5c;583. 兩個字符串的刪除操作、72. 編輯距離、編輯距離總結篇 583. 兩個字符串的刪除操作 583. 兩個字符串的刪除操作 思路&#xff1a; 思路見代碼 代碼&#xff1a; python class Solution(object):de…

[國產MCU]-BL602開發實例-I2C與總線設備地址掃描

I2C與總線設備掃描 文章目錄 I2C與總線設備掃描1、I2C介紹2、I2C驅動API介紹3、I2C使用實例I2C (Inter-Intergrated Circuit)是一種串行通訊總線,使用多主從架構,用來連接低速外圍裝置。 每個器件都有一個唯一的地址識別,并且都可以作為一個發送器或接收器。每個連接到總線的…

node-sass是什么

一、Sass&#xff08;Syntactically Awesome Style Sheets&#xff09; 是一種CSS預處理器&#xff0c;它擴展了CSS的功能并提供了更強大的樣式表語言。Sass允許開發人員使用變量、嵌套規則、混合&#xff08;Mixins&#xff09;、繼承等高級功能來編寫更簡潔、可維護的樣式代…

2023年國賽數學建模思路 - 案例:FPTree-頻繁模式樹算法

文章目錄 算法介紹FP樹表示法構建FP樹實現代碼 建模資料 ## 賽題思路 &#xff08;賽題出來以后第一時間在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介紹 FP-Tree算法全稱是FrequentPattern Tree算法&#xff0c;就是頻繁模式樹算法&#xff0c…

QT-Mysql數據庫圖形化接口

QT sql mysqloper.h qsqlrelationaltablemodelview.h /************************************************************************* 接口描述&#xff1a;Mysql數據庫圖形化接口 擬制&#xff1a; 接口版本&#xff1a;V1.0 時間&#xff1a;20230727 說明&#xff1a;支…