91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

springboot中rest接口404,500 返回 json格式

發布時間:2020-05-28 08:25:48 來源:網絡 閱讀:1189 作者:16521544193 欄目:編程語言

在開發rest接口時,我們往往會定義統一的返回格式,列如:

{??"status":?true,??"code":?200,??"message":?null,??"data":?[
????{??????"id":?"101",??????"name":?"jack"
????},
????{??????"id":?"102",??????"name":?"jason"
????}
??]
}

但是如果調用方請求我們的api時把接口地址寫錯了,就會得到一個404錯誤,在傳統的web系統中我們可自定義404錯誤頁面,展示更友好。

在spring boot中其實也是返回了一個json格式的數據,如下:

{??"timestamp":?1492063521109,??"status":?404,??"error":?"Not?Found",??"message":?"No?message?available",??"path":?"/rest11/auth"}

告訴我們哪個地址是沒找到,其實也挺友好的,但是因為我們上面自定義的數據格式跟下面的不一致,當用戶拿到這個返回的時候是無法識別的,其中最明顯的是status字段。

我們自定義的是boolean類型,表示是否成功

這邊返回的就是http的狀態碼

所以我們需要在發生這種系統錯誤時也能返回我們自定義的那種格式

定義一個異常處理類

import?javax.servlet.http.HttpServletRequest;import?javax.servlet.http.HttpServletResponse;import?org.slf4j.Logger;import?org.slf4j.LoggerFactory;import?org.springframework.web.bind.annotation.ControllerAdvice;import?org.springframework.web.bind.annotation.ExceptionHandler;import?org.springframework.web.bind.annotation.ResponseBody;

官網?:www.1b23.com?
@ControllerAdvicepublic?class?GlobalExceptionHandler?{????private?Logger?logger?=?LoggerFactory.getLogger(GlobalExceptionHandler.class);?
????/**
?????*?系統異常處理,比如:404,500
?????*?@param?req
?????*?@param?resp
?????*?@param?e
?????*?@return
?????*?@throws?Exception
?????*/
????@ExceptionHandler(value?=?Exception.class)????@ResponseBody
????public?ResponseData?defaultErrorHandler(HttpServletRequest?req,?Exception?e)?throws?Exception?{
????????logger.error("",?e);
????????ResponseData?r?=?new?ResponseData();
????????r.setMessage(e.getMessage());????????if?(e?instanceof?org.springframework.web.servlet.NoHandlerFoundException)?{
?????????????r.setCode(404);
????????}?else?{
?????????????r.setCode(500);
????????}
????????r.setData(null);
????????r.setStatus(false);????????return?r;
????}
}

ResponseData是我們返回格式的實體類

這種在發生錯誤時這邊會捕獲到,然后封裝好返回格式,返回給調用方

最后關鍵的一步是在spring boot的配置文件中加上如下配置:

#出現錯誤時,?直接拋出異常spring.mvc.throw-exception-if-no-handler-found=true#不要為我們工程中的資源文件建立映射spring.resources.add-mappings=false

然后我們調用一個不存在的接口時,返回的錯誤信息就是我們自定義的那種格式了

{??"status":?false,??"code":?404,??"message":?"No?handler?found?for?GET?/rest11/auth",??"data":?null}

?


向AI問一下細節

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

AI

仙居县| 舟山市| 英吉沙县| 石柱| 吉安县| 右玉县| 左云县| 宁夏| 尉犁县| 莎车县| 开远市| 顺昌县| 海晏县| 辉县市| 楚雄市| 香河县| 如东县| 进贤县| 封丘县| 新乡县| 岳阳市| 平阴县| 滨州市| 井冈山市| 渑池县| 绥芬河市| 鸡东县| 常州市| 香河县| 迭部县| 贵州省| 夏津县| 福海县| 鄱阳县| 定边县| 广州市| 山西省| 曲阜市| 呼伦贝尔市| 宣汉县| 胶州市|