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

