Spring boot 之統一API in out格式設置
此篇介紹如何透過@RestControllerAdvice實現統一的Request與Response格式。
RestControllerAdvice:
@RestControllerAdvice即為@ControllerAdvice + @ResponseBody,
RestControllerAdvice若無進行設置,則可對所有Controller進行統一的處理。
統一格式:
Request:
RequestBodyAdvice能夠在request傳遞給相對應的Controller之前進行特殊的處理,如驗證等相關操作。
Response:
若有需要特殊處理可透過ResponseBodyAdvice,但大多數都會透過ControllerAdvice進行處理。
Exception處理:
下面則透過@RestControllerAdvice來實現一個簡單的統一格式案例,
此案例使用了Lombok來幫助我們簡化程式碼:
首先建立統一的Request與Response格式如下:
此處將request 切分為兩個部分,Info與Data。
Info負責放置共用系統資訊
Data負責放置需處理之相關參數
此處將response 切分為兩個部分,Return_Info與Return_Data。
Return_Info負責放置API回傳之共用系統資訊
Return_Data負責放置API回傳之相關參數
接著建立一個Controller如下:
而後進行配置此controller傳入傳出之參數名稱格式
狀態碼訂定:
建立自定義之Exception:
使用@ExceptionHandler來處理全域之Exception:
配置request相關設定:
此處進行了驗證,若request中的key值若不為ABCDEFG時,回應驗證錯誤。
下面進行測試驗證:
當key = ABCDEFG:
當key != ABCDEFG:
透過RestControllerAdvice可以方便的管理input與output,也可透過ExceptionHandler來集中管理Exception處理,讓開發更加簡便。
感謝分享!