当前位置: 代码迷 >> 综合 >> Spring Boot关于Rest Api前后端分离404、500全局异常处理
  详细解决方案

Spring Boot关于Rest Api前后端分离404、500全局异常处理

热度:6   发布时间:2023-09-29 03:37:18.0

1、自定义返回json格式

/*** Created by 菜园子 on 2019/3/25.*/
public class Result {private int code;//0请求失败;1请求成功;其它服务异常private String msg;private Object data;public Result() {this.code = 0;this.msg = "请求失败";this.data = null;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}
}

2、定义异常处理类

/*** Created by 菜园子 on 2019/3/25.* 全局404/500异常捕捉处理工具*/
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler@ResponseBodypublic Result defaultErrorHandler(HttpServletRequest request,Exception e){Result result = new Result();result.setMsg(e.getMessage());if(e instanceof NoHandlerFoundException){result.setCode(404);}else {result.setCode(500);}return result;}
}

3、application配置文件中添加配置

spring:mvc:throw-exception-if-no-handler-found: true #出现错误时,直接抛出异常resources:add-mappings: false #不要为我们工程中的资源文件建立映射

第一个 spring.mvc.throw-exception-if-no-handler-found 告诉 SpringBoot 当出现 404 错误时, 直接抛出异常. 第二个 spring.resources.add-mappings 告诉 SpringBoot 不要为我们工程中的资源文件建立映射. 这两个配置正是 RESTful 服务所需要的

 

注意:如果SpringBoot项目中static下存放静态文件,即非前后端分离模式,设置spring.resources.add-mappings=false后静态文件访问不到。

 

  相关解决方案