日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring boot / cloud (二) 规范响应格式以及统一异常处理

發布時間:2025/4/16 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot / cloud (二) 规范响应格式以及统一异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring boot / cloud (二) 規范響應格式以及統一異常處理

前言

為什么規范響應格式?

我認為,采用預先約定好的數據格式,將返回數據(無論是正常的還是異常的)規范起來,有助于提高團隊間接口對接的效率(前端和后端,后端和后端等).

思路

  • 自定義統一的ResposeBody類 : 用于統一響應格式

  • 自定義統一的Error類 : 用于統一異常格式

  • 自定義異常 : 區分不同場景的異常

  • 實現ExceptionHandler : 用于攔截處理異常

實現

1.創建ErrorResult類

public class ErrorResult implements Serializable {........省略//異常發生時間private Date exceptionDate;//異常類名private String exceptionType;//異常描述private String exceptionMessage;//異常堆棧private String exceptionStackTrace;........省略}

2.創建RestResponse類

使用泛型,來適應不同類型的結果集

響應代碼和響應描述,可自定義枚舉來規范

注意,一定有留有無參的構造函數,否則json轉換會報錯

public class RestResponse<T> implements Serializable {........省略//響應IDprivate String id = UUID.randomUUID().toString();//響應代碼private String code = "SUCCESS";//響應描述private String message = "操作成功";//響應體private T result = null;//錯誤體private ErrorResult error = null;//構造函數public RestResponse() {super();}//構造函數public RestResponse(ErrorCode errorCode, ErrorResult error) {super();this.code = errorCode.name();this.message = errorCode.value();this.error = error;}........省略}

3.自定義異常

檢查型異常

public class SystemException extends Exception {........省略 }

運行時異常

public class SystemRuntimeException extends RuntimeException {........省略 }

其他類型異常,如:認證異常,權限異常,參數校驗異常,等等,按需定義

public class AuthException extends RuntimeException {........省略 }

4.創建ExceptionMapping類

@ControllerAdvice public class ExceptionMapping {........省略 }

定義私有的方法構造ErrorResult

private ErrorResult buildError(Exception exception) {ErrorResult error = new ErrorResult();error.setType(exception.getClass().getName());error.setMessage(ExceptionUtils.getMessage(exception));error.setStackTrace(ExceptionUtils.getStackTrace(exception));error.setDate(new Date());return error; }

按照異常類型,攔截處理異常,攔截的優先級遵循類的集成關系,優先攔截子類異常

@ExceptionHandler(value = 要攔截的異常.class) @ResponseStatus(響應狀態) @ResponseBody public RestResponse<String> exception(要攔截的異常 exception) {return new RestResponse<>(ErrorCode.ERROR, buildError(exception)); }

這里提醒注意點,如果想要攔截404錯誤的話,需要在spring boot中做如下設置

spring.mvc.throw-exception-if-no-handler-found=true spring.resources.add-mappings=false

代碼倉庫 (博客配套代碼)

  • udf-starter : 基礎項目,腳手架,框架

  • udf-sample : 集成樣例

結束

然后相關思路和原則,大家可自行搜索契約優先,由于本身不想在文章中引入太多教條性的東西,主要都是以解決問題的思路為主,所以不深入討論.


想獲得最快更新,請關注公眾號

轉載于:https://www.cnblogs.com/itkk/p/7442119.html

總結

以上是生活随笔為你收集整理的spring boot / cloud (二) 规范响应格式以及统一异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。