SpringBoot統(tǒng)一api返回風(fēng)格的實(shí)現(xiàn)
學(xué)過(guò)上一章的人也許發(fā)現(xiàn)問(wèn)題了,接口返回的格式基本都是固定的,例如
{ "code": 200, "msg": "", "data": "Object ....", }
而我們的登陸卻返回
密碼必須傳!等等返回值
顯然我們的返回格式不符合常規(guī)開(kāi)發(fā),因?yàn)榍芭_(tái)并不知道這是錯(cuò)誤信息還是正確返回信息!
所以我們簡(jiǎn)單封裝一個(gè)返回類,代碼如下
添加base包,新建BaseResult類
import lombok.Data; @Data public class BaseResult { private int code;//200=成功,否則失敗 private String msg;//失敗時(shí)的提示信息 private Object data;//成功返回的內(nèi)容 public BaseResult(int code, String msg, Object data) { this.code = code; this.msg = msg; this.data = data; } }
在修改下登陸的controller
@PostMapping("login") public BaseResult login(@RequestParam(value = "user", defaultValue = "") String user, @RequestParam(value = "pass", defaultValue = "") String pass) { if (user.equals("")) return new BaseResult(400, "賬號(hào)必須傳!", ""); if (pass.equals("")) return new BaseResult(400, "密碼必須傳!", ""); User user1 = mapper.login(user, pass); if (user1 == null) return new BaseResult(500, "賬號(hào)密碼不正確!", ""); user1.setPass(""); return new BaseResult(200, "", user1); }
接下來(lái)我們看下返回值
{ "code": 400, "msg": "密碼必須傳!", "data": "" }
{ "code": 200, "msg": "", "data": { "id": 1, "user": "wz", "pass": "" } }
上邊這種返回格式,前端就非常好解析
http各個(gè)狀態(tài)碼的含義:由三位數(shù)字組成,第一位定義了狀態(tài)碼的類型
2開(kāi)頭:(請(qǐng)求成功)表示成功處理了請(qǐng)求的狀態(tài)代碼
200:(成功)服務(wù)器已成功處理了請(qǐng)求。通常,這表示服務(wù)器提供了請(qǐng)求的網(wǎng)頁(yè)。
201:(已創(chuàng)建)請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源
202:(已接受)服務(wù)器已接受請(qǐng)求,但尚未處理
203:(非授權(quán)信息)服務(wù)器已成功處理了請(qǐng)求,但返回的信息可能來(lái)自另一資源。
204:(無(wú)內(nèi)容)服務(wù)器成功處理了請(qǐng)求,但沒(méi)有返回任何內(nèi)容
205:(重置內(nèi)容)服務(wù)器成功處理了請(qǐng)求,但沒(méi)有返回任何內(nèi)容
206:(部分內(nèi)容)服務(wù)器成功處理了部分 GET 請(qǐng)求
3開(kāi)頭:(請(qǐng)求被重定向)表示要完成請(qǐng)求,需要進(jìn)一步操作。通常,這些狀態(tài)代碼用來(lái)重定向
300:(多種選擇)針對(duì)請(qǐng)求,服務(wù)器可執(zhí)行多種操作。服務(wù)器可根據(jù)請(qǐng)求者(user agent)選擇一項(xiàng)操作,或提供操作列表供請(qǐng)求者選擇
301:(永久移動(dòng))請(qǐng)求的網(wǎng)頁(yè)已永久移動(dòng)到新位置。服務(wù)器返回此響應(yīng)(對(duì) GET 或 HEAD 請(qǐng)求的響應(yīng))時(shí),會(huì)自動(dòng)將請(qǐng)求者轉(zhuǎn)到新的位置
302:(臨時(shí)移動(dòng))服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求
303:(查看其他位置)請(qǐng)求者應(yīng)當(dāng)對(duì)不同的位置使用單獨(dú)的 GET 請(qǐng)求來(lái)檢索響應(yīng)時(shí),服務(wù)器返回此代碼
304:(未修改)自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)。服務(wù)器返回此響應(yīng),不會(huì)返回網(wǎng)頁(yè)內(nèi)容
305:(使用代理)請(qǐng)求者只能使用代理訪問(wèn)請(qǐng)求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應(yīng),還表示請(qǐng)求者應(yīng)使用代理
307:(臨時(shí)重定向)服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求,但請(qǐng)求者繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求
4開(kāi)頭:(請(qǐng)求錯(cuò)誤)這些狀態(tài)碼表示請(qǐng)求可能出錯(cuò),妨礙了服務(wù)器的處理
400:(錯(cuò)誤請(qǐng)求)服務(wù)器不理解請(qǐng)求的語(yǔ)法
401:(未授權(quán))請(qǐng)求要求身份驗(yàn)證。對(duì)于需要登錄的網(wǎng)頁(yè),服務(wù)器可能返回此響應(yīng)
403:(禁止)服務(wù)器拒絕請(qǐng)求
404:(未找到)服務(wù)器找不到請(qǐng)求的網(wǎng)頁(yè)
405:(方法禁用)禁用請(qǐng)求中指定的方法
406:(不接受)無(wú)法使用請(qǐng)求的內(nèi)容特性響應(yīng)請(qǐng)求的網(wǎng)頁(yè)
407:(需要代理授權(quán))此狀態(tài)代碼與 401 (未授權(quán))類似,但指定請(qǐng)求者應(yīng)當(dāng)授權(quán)使用代理
408:(請(qǐng)求超時(shí))服務(wù)器等候請(qǐng)求時(shí)發(fā)生超時(shí)
409:(沖突)服務(wù)器在完成請(qǐng)求時(shí)發(fā)生沖突。服務(wù)器必須在響應(yīng)中包含有關(guān)沖突的信息
410:(已刪除)如果請(qǐng)求的資源已永久刪除,服務(wù)器就會(huì)返回此響應(yīng)
411:(需要有效長(zhǎng)度)服務(wù)器不接受不含有效內(nèi)容長(zhǎng)度標(biāo)頭字段的請(qǐng)求
412:(未滿足前提條件)服務(wù)器未滿足請(qǐng)求者在請(qǐng)求中設(shè)置的其中一個(gè)前提條件
413:(請(qǐng)求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請(qǐng)求,因?yàn)檎?qǐng)求實(shí)體過(guò)大,超出服務(wù)器的處理能力
414:(請(qǐng)求的 URI 過(guò)長(zhǎng))請(qǐng)求的URI(通常為網(wǎng)址)過(guò)長(zhǎng),服務(wù)器無(wú)法處理
415:(不支持的媒體類型)請(qǐng)求的格式不受請(qǐng)求頁(yè)面的支持
416:(請(qǐng)求范圍不符合)如果頁(yè)面無(wú)法提供請(qǐng)求的范圍,則服務(wù)器返回此狀態(tài)代碼
417:(未滿足期望值)服務(wù)器未滿足“期望”請(qǐng)求標(biāo)頭字段要求
5開(kāi)頭:(服務(wù)器錯(cuò)誤)這些狀態(tài)代碼表示服務(wù)器在嘗試處理請(qǐng)求時(shí)發(fā)生內(nèi)部錯(cuò)誤。這些錯(cuò)誤可能是服務(wù)器本身的錯(cuò)誤,而不是請(qǐng)求出錯(cuò)。
500:(服務(wù)器內(nèi)部錯(cuò)誤)服務(wù)器遇到錯(cuò)誤,無(wú)法完成請(qǐng)求
501:(尚未實(shí)施)服務(wù)器不具備完成請(qǐng)求的功能。例如,服務(wù)器無(wú)法識(shí)別請(qǐng)求方法時(shí)可能會(huì)返回此代碼
502:(錯(cuò)誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無(wú)效響應(yīng)
503:(服務(wù)不可用)服務(wù)器目前無(wú)法使用(由于超載或停機(jī)維護(hù))。通常,這只是暫時(shí)狀態(tài)
504:(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,但是沒(méi)有及時(shí)從上游服務(wù)器收到請(qǐng)求
505:(HTTP 版本不受支持)服務(wù)器不支持請(qǐng)求中所用的 HTTP 協(xié)議版本
到此這篇關(guān)于SpringBoot統(tǒng)一api返回風(fēng)格的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot統(tǒng)一api返回內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java反射實(shí)現(xiàn)javabean轉(zhuǎn)json實(shí)例代碼
基于java反射機(jī)制實(shí)現(xiàn)javabean轉(zhuǎn)json字符串實(shí)例,大家參考使用吧2013-12-12Spring Security基于json登錄實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Spring Security基于json登錄實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Maven項(xiàng)目無(wú)法加載jdbc.properties的問(wèn)題解決
本文主要介紹了Maven項(xiàng)目無(wú)法加載jdbc.properties的問(wèn)題解決,文章首先分析了問(wèn)題的原因,然后提供了解決方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08springboot + vue 實(shí)現(xiàn)遞歸生成多級(jí)菜單(實(shí)例代碼)
這篇文章主要介紹了springboot + vue 實(shí)現(xiàn)遞歸生成多級(jí)菜單,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例
這篇文章主要介紹了Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例,簡(jiǎn)單工廠與抽象工廠都可以歸類于設(shè)計(jì)模式中的創(chuàng)建型模式,需要的朋友可以參考下2016-04-04Spring Boot Web 開(kāi)發(fā)注解篇
在 Spring Boot 快速入門中,只要在 pom.xml 加入了 spring-boot-starter-web 依賴,即可快速開(kāi)發(fā) web 應(yīng)用。下文給大家詳細(xì)介紹了spring boot web 開(kāi)發(fā)注解,感興趣的朋友參考下吧2017-08-08Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“)
這篇文章主要介紹了Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12