spring boot / cloud (二) 规范响应格式以及统一异常处理
生活随笔
收集整理的這篇文章主要介紹了
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 (二) 规范响应格式以及统一异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj3279 Fliptile
- 下一篇: 前端构建工具gulpjs的使用介绍及技巧