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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34479912/article/details/88798516

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
    @ResponseBody
    public 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后静态文件访问不到。

 

展开阅读全文

没有更多推荐了,返回首页