From 1d7690a4fa22392e9edcf6672eeddd7b776328f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Mon, 28 Apr 2025 17:15:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AF=B9HttpRequestMethodNotSupportedExce?= =?UTF-8?q?ption=E5=BC=82=E5=B8=B8=E7=9A=84=E6=8B=A6=E6=88=AA=E5=8F=8B?= =?UTF-8?q?=E5=A5=BD=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gd/common/handler/GlobalExceptionHandler.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java b/src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java index db36e35..f0ead19 100644 --- a/src/main/java/com/iflytop/gd/common/handler/GlobalExceptionHandler.java +++ b/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) {