中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

springboot 接口 404 500 頁面 用 json格式返回

發布時間:2020-07-14 20:27:22 來源:網絡 閱讀:361 作者:fhspringcloud 欄目:編程語言

在開發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
?
@ControllerAdvice
public?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

双峰县| 砀山县| 贵德县| 安图县| 美姑县| 九寨沟县| 德昌县| 尉氏县| 莲花县| 衢州市| 乡宁县| 奇台县| 韶关市| 博湖县| 济阳县| 元阳县| 九台市| 东方市| 安泽县| 庐江县| 自治县| 藁城市| 梅河口市| 紫金县| 东丽区| 曲周县| 隆子县| 蒙山县| 和顺县| 赣州市| 阿拉善右旗| 竹溪县| 旬阳县| 梁河县| 金沙县| 鹤山市| 蒙城县| 类乌齐县| 西充县| 肥城市| 台南县|