SpringBoot/SpringMVC Restful接口全局异常处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot/SpringMVC Restful接口全局异常处理相关的知识,希望对你有一定的参考价值。
背景
当下restful接口编程风格流行,大家争相晋仿,笔者最近的开发框架自定义了校验客户端传过来JSON的工具类。
在接收到客户端json参数时可以校验是否存在非法sql注入参数。
由于接口返回400,前端没处理,直接导致前端无响应。
现在要对其进行改造,让前端可以正常接获得异常信息。
解决方法
新建一个controller异常处理增强类
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import static com.h2.mes.common.RestfulResponseMessage.SYSTEM_ERROR;
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
final String errorMessage = ex.getMessage();
final String[] msgs = errorMessage.split(";");
return ResponseEntity.ok(RestfulResponseMessage.errorResult(SYSTEM_ERROR,msgs[0]));
其中
RestfulResponseMessage.errorResult(SYSTEM_ERROR,msgs[0])
是封装的自定义异常信息方法
改善后效果
参考资料:https://www.toptal.com/java/spring-boot-rest-api-error-handling
https://www.springboottutorial.com/spring-boot-exception-handling-for-rest-services
以上是关于SpringBoot/SpringMVC Restful接口全局异常处理的主要内容,如果未能解决你的问题,请参考以下文章
基于jawr的springboot+springmvc+thymeleaf的web静态文件压缩方案
SpringBoot/SpringMVC Restful接口全局异常处理
Java项目:嘟嘟图片展览馆管理系统(java+Springboot+SpringMVC+JPA+Jsp+maven+mysql)