From ee8a1682400090792622182d589a8976afab479e Mon Sep 17 00:00:00 2001 From: jade Date: Tue, 7 Jul 2026 10:25:07 +0900 Subject: [PATCH] fix: Allow public access to docs API and handle NoResourceFoundException smoothly --- .../io/shinhanlife/axhub/common/mcp/config/WebConfig.java | 3 ++- .../axhub/common/mcp/exception/GlobalExceptionHandler.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/config/WebConfig.java b/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/config/WebConfig.java index a45596a..b2229d6 100644 --- a/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/config/WebConfig.java +++ b/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/config/WebConfig.java @@ -22,7 +22,8 @@ public class WebConfig implements WebMvcConfigurer { .addPathPatterns("/rpc/**", "/mcp/api/v1/**") // /rpc/, /mcp/api/v1/ 로 시작하는 모든 API는 API Key 검사 수행! .excludePathPatterns( "/test/**", "/health", "/error", "/mcp/api/v1/admin/**", - "/swagger-ui/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**" // Swagger UI 경로는 인증 제외 + "/swagger-ui/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**", // Swagger UI 경로는 인증 제외 + "/mcp/api/v1/tools/docs/markdown", "/favicon.ico" ); } diff --git a/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/exception/GlobalExceptionHandler.java b/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/exception/GlobalExceptionHandler.java index a9f6e2d..9075541 100644 --- a/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/exception/GlobalExceptionHandler.java +++ b/axhub-common/src/main/java/io/shinhanlife/axhub/common/mcp/exception/GlobalExceptionHandler.java @@ -11,6 +11,12 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; @RestControllerAdvice // 이 어노테이션이 전역 적용의 핵심입니다! public class GlobalExceptionHandler { + @ExceptionHandler(org.springframework.web.servlet.resource.NoResourceFoundException.class) + public ResponseEntity handleNoResourceFound(org.springframework.web.servlet.resource.NoResourceFoundException e) { + log.warn(" [Gateway Not Found] 요청하신 리소스를 찾을 수 없습니다: {}", e.getResourcePath()); + return ResponseEntity.notFound().build(); + } + @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity handleIllegalArgument(IllegalArgumentException e) { log.warn(" [Gateway Bad Request] 잘못된 요청: {}", e.getMessage());