Browse Source

feat:对HttpRequestMethodNotSupportedException异常的拦截友好返回

tags/freeze
白凤吉 3 months ago
parent
commit
1d7690a4fa
  1. 16
      src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java

16
src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java

@ -3,9 +3,11 @@ package com.iflytop.gd.common.handler;
import com.iflytop.gd.common.exception.AppException;
import com.iflytop.gd.common.result.Result;
import com.iflytop.gd.common.result.ResultCode;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@ -16,6 +18,20 @@ import java.util.stream.Collectors;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public Result<?> handleMethodNotSupported(HttpRequestMethodNotSupportedException ex, HttpServletRequest request) {
String method = request.getMethod();
String uri = request.getRequestURI();
String allowed = ex.getSupportedHttpMethods() != null
? ex.getSupportedHttpMethods().toString()
: "[]";
String msg = String.format(
"请求方法 '%s' 不支持 (URL: %s)。支持的方法有:%s",
method, uri, allowed);
log.error(msg, ex);
return Result.failed(ResultCode.METHOD_NOT_ALLOWED.getCode(), msg);
}
// 1) JSON Body 校验失败
@ExceptionHandler(MethodArgumentNotValidException.class)
public Result<?> handleBodyValid(MethodArgumentNotValidException ex) {

Loading…
Cancel
Save