溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在SpringBoot中統(tǒng)一api的返回風格

發(fā)布時間:2021-03-08 11:28:20 來源:億速云 閱讀:266 作者:Leah 欄目:開發(fā)技術(shù)

怎么在SpringBoot中統(tǒng)一api的返回風格?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

例如

{
 "code": 200,
 "msg": "",
 "data": "Object ....",
}

而我們的登陸卻返回

密碼必須傳!等等返回值

顯然我們的返回格式不符合常規(guī)開發(fā),因為前臺并不知道這是錯誤信息還是正確返回信息!
所以我們簡單封裝一個返回類,代碼如下

添加base包,新建BaseResult類

import lombok.Data;

@Data
public class BaseResult {
  private int code;//200=成功,否則失敗
  private String msg;//失敗時的提示信息
  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各個狀態(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開頭:(請求被重定向)表示要完成請求,需要進一步操作。通常,這些狀態(tài)代碼用來重定向
300:(多種選擇)針對請求,服務(wù)器可執(zhí)行多種操作。服務(wù)器可根據(jù)請求者(user agent)選擇一項操作,或提供操作列表供請求者選擇
301:(永久移動)請求的網(wǎng)頁已永久移動到新位置。服務(wù)器返回此響應(yīng)(對 GET 或 HEAD 請求的響應(yīng))時,會自動將請求者轉(zhuǎn)到新的位置
302:(臨時移動)服務(wù)器目前從不同位置的網(wǎng)頁響應(yīng)請求,但請求者應(yīng)繼續(xù)使用原有位置來進行以后的請求
303:(查看其他位置)請求者應(yīng)當對不同的位置使用單獨的 GET 請求來檢索響應(yīng)時,服務(wù)器返回此代碼
304:(未修改)自從上次請求后,請求的網(wǎng)頁未修改過。服務(wù)器返回此響應(yīng),不會返回網(wǎng)頁內(nèi)容
305:(使用代理)請求者只能使用代理訪問請求的網(wǎng)頁。如果服務(wù)器返回此響應(yīng),還表示請求者應(yīng)使用代理
307:(臨時重定向)服務(wù)器目前從不同位置的網(wǎng)頁響應(yīng)請求,但請求者繼續(xù)使用原有位置來進行以后的請求

4開頭:(請求錯誤)這些狀態(tài)碼表示請求可能出錯,妨礙了服務(wù)器的處理
400:(錯誤請求)服務(wù)器不理解請求的語法
401:(未授權(quá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)當授權(quán)使用代理
408:(請求超時)服務(wù)器等候請求時發(fā)生超時
409:(沖突)服務(wù)器在完成請求時發(fā)生沖突。服務(wù)器必須在響應(yīng)中包含有關(guān)沖突的信息
410:(已刪除)如果請求的資源已永久刪除,服務(wù)器就會返回此響應(yīng)
411:(需要有效長度)服務(wù)器不接受不含有效內(nèi)容長度標頭字段的請求
412:(未滿足前提條件)服務(wù)器未滿足請求者在請求中設(shè)置的其中一個前提條件
413:(請求實體過大)服務(wù)器無法處理請求,因為請求實體過大,超出服務(wù)器的處理能力
414:(請求的 URI 過長)請求的URI(通常為網(wǎng)址)過長,服務(wù)器無法處理
415:(不支持的媒體類型)請求的格式不受請求頁面的支持
416:(請求范圍不符合)如果頁面無法提供請求的范圍,則服務(wù)器返回此狀態(tài)代碼
417:(未滿足期望值)服務(wù)器未滿足“期望”請求標頭字段要求

5開頭:(服務(wù)器錯誤)這些狀態(tài)代碼表示服務(wù)器在嘗試處理請求時發(fā)生內(nèi)部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
500:(服務(wù)器內(nèi)部錯誤)服務(wù)器遇到錯誤,無法完成請求
501:(尚未實施)服務(wù)器不具備完成請求的功能。例如,服務(wù)器無法識別請求方法時可能會返回此代碼
502:(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無效響應(yīng)
503:(服務(wù)不可用)服務(wù)器目前無法使用(由于超載或停機維護)。通常,這只是暫時狀態(tài)
504:(網(wǎng)關(guān)超時)服務(wù)器作為網(wǎng)關(guān)或代理,但是沒有及時從上游服務(wù)器收到請求
505:(HTTP 版本不受支持)服務(wù)器不支持請求中所用的 HTTP 協(xié)議版本

關(guān)于 怎么在SpringBoot中統(tǒng)一api的返回風格問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI