規範響應格式以及統一異常處理

2021-08-07 14:51:30 字數 1718 閱讀 6694

我認為,採用預先約定好的資料格式,將返回資料(無論是正常的還是異常的)規範起來,有助於提高團隊間介面對接的效率(前端和後端,後端和後端等).

##思路

##實現

###1.建立errorresult類

public

class

errorresult

implements

serializable

###2.建立restresponse類

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

響應**和響應描述,可自定義列舉來規範

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

public

class

restresponse

<

t>

implements

serializable

//建構函式

public

restresponse

(errorcode errorcode, errorresult error)

........省略

}

###3.自定義異常

檢查型異常

public

class

systemexception

extends

exception

執行時異常

public

class

systemruntimeexception

extends

runtimeexception

其他型別異常,如:認證異常,許可權異常,引數校驗異常,等等,按需定義

public

class

authexception

extends

runtimeexception

@controlleradvice

public

class

定義私有的方法構造errorresult

private

errorresult builderror

(exception

exception)

按照異常型別,攔截處理異常,攔截的優先順序遵循類的整合關係,優先攔截子類異常

@exceptionhandler

(value = 要攔截的異常.class)

@responsestatus

(響應狀態)

@responsebody

public restresponseexception

(要攔截的異常 exception)

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

spring.mvc.throw-exception-if-no-handler-found=true
##結束

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

日誌說明以及格式統一規範

fatal error warn info debug trace,級別越高儲存優先順序越高,原則上對於error及以上級別的日誌永久保留,對於此級別以下的,級別越高保留時間越長。request response 系統操作行為 讀寫檔案 定時任務等 不符合業務邏輯預期 列印關鍵的引數,要能從這些引數...

統一異常處理

為什麼需要做統一異常處理 因為如果不做統一處理,返回與前端的資料會非常亂,前端不好處理 並且不做統一處理,controller層就要寫很多的重複 統一格式 實現步驟 新建result物件 也就是請求返回的整體物件,包括code,msg,data public class result public ...

統一異常處理

1,建立統一異常處理類package com.xindong.common.handler 統一異常處理類 controlleradvice public class globalexceptionhandler exceptionhandler badsqlgrammarexception.cla...