SpringCloudSpringBootmybatis分散式微服務雲架構(十二)返回JSON格式
在上述例子中,通過@ControllerAdvice統一定義不同Exception對映到不同錯誤處理頁面。而當我們要實現RESTful API時,返回的錯誤是JSON格式的資料,而不是HTML頁面,這時候我們也能輕鬆支援。
本質上,只需在@ExceptionHandler之後加入@ResponseBody,就能讓處理函式return的內容轉換為JSON格式。
下面以一個具體示例來實現返回JSON格式的異常處理。
建立統一的JSON返回物件,code:訊息型別,message:訊息內容,url:請求的url,data:請求返回的資料
public class ErrorInfo<T> {
public static final Integer OK = 0;
public static final Integer ERROR = 100;
private Integer code;
private String message;
private String url;
private T data;
// 省略getter和setter
}
建立一個自定義異常,用來實驗捕獲該異常,並返回json
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
Controller中增加json對映,丟擲MyException異常
@Controller
public class HelloController {
@RequestMapping("/json")
public String json() throws MyException {
throw new MyException("發生錯誤2");
}
}
為MyException異常建立對應的處理
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = MyException.class)
@ResponseBody
public ErrorInfo<String> jsonErrorHandler(HttpServletRequest req, MyException e) throws Exception {
ErrorInfo<String> r = new ErrorInfo<>();
r.setMessage(e.getMessage());
r.setCode(ErrorInfo.ERROR);
r.setData("Some Data");
r.setUrl(req.getRequestURL().toString());
return r;
}
}
啟動應用,訪問:http://localhost:8080/json,可以得到如下返回內容:
{
code: 100,
data: "Some Data",
message: "發生錯誤2",
url: "http://localhost:8080/json"
}
至此,已完成在Spring Boot中建立統一的異常處理,實際實現還是依靠Spring MVC的註解,更多更深入的使用可參考Spring MVC的文件。
相關文章
- SpringCloudSpringBootmybatis分散式微服務雲架構(八)開發Web應用(2)GCCloudSpring BootMyBatis分散式微服務架構Web
- SpringCloudSpringBootmybatis分散式微服務雲架構(七)開發Web應用(1)GCCloudSpring BootMyBatis分散式微服務架構Web
- springcloud微服務分散式雲架構簡介SpringGCCloud微服務分散式架構
- springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- 微服務分散式雲架構-springboot執行模式微服務分散式架構Spring Boot模式
- 【分散式微服務企業快速架構】SpringCloud分散式、微服務、雲架構快速開發平臺分散式微服務架構SpringGCCloud
- spring cloud微服務分散式雲架構--hystrix的使用SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Gateway入門SpringCloud微服務分散式架構Gateway
- (一)springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- spring cloud微服務分散式雲架構Spring Cloud ZuulSpringCloud微服務分散式架構Zuul
- spring cloud微服務分散式雲架構-Spring Cloud NetflixSpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Commons 普通抽象SpringCloud微服務分散式架構抽象
- spring cloud微服務分散式雲架構--服務註冊(consul)SpringCloud微服務分散式架構
- 微服務架構 | 11. 分散式事務微服務架構分散式
- 分散式架構和微服務架構的區別分散式架構微服務
- spring cloud微服務分散式雲架構- Config 快速開始SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- (十七)spring cloud微服務分散式雲架構-eureka 基礎SpringCloud微服務分散式架構
- 微服務架構下分散式session管理微服務架構分散式Session
- 微服務分散式架構之redis篇微服務分散式架構Redis
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- spring cloud微服務分散式雲架構-服務消費者FeignSpringCloud微服務分散式架構
- Spring Cloud分散式微服務雲架構構建SpringCloud分散式微服務架構
- Spring Cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- 微服務架構分散式事務管理問題微服務架構分散式
- spring cloud微服務分散式雲架構(四)-斷路器(Hystrix)SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-單點登入(SSO)SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構-Spring Cloud簡介SpringCloud微服務分散式架構
- Spring Cloud微服務分散式雲架構—整合專案簡介SpringCloud微服務分散式架構
- Spring Cloud微服務分散式雲架構 - 整合企業架構的技術點SpringCloud微服務分散式架構
- java分散式微服務雲架構- SrpingBoot AdminJava分散式微服務架構boot
- springCloud分散式微服務雲架構 第十二篇: 斷路器聚合監控SpringGCCloud分散式微服務架構
- spring cloud微服務分散式雲架構(三)-服務消費者(Feign)SpringCloud微服務分散式架構
- 整合spring cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- spring cloud微服務分散式雲架構-Spring Cloud 分散式的五大重點SpringCloud微服務分散式架構
- 微服務架構及分散式事務解決方案微服務架構分散式