500 Error
) 해결문제 현상: /point/charge
페이지 접근 시 HTTP 500 에러 발생
에러 메시지:
No converter for [class me.singingsandhill.holmesai.infrastructure.response.ApiResponseData]
with preset Content-Type 'text/html'
원인 분석:
@RestControllerAdvice
가 HTML 뷰를 반환하는 컨트롤러(@Controller
)까지 예외를 가로채면서, 응답 타입을 JSON으로 고정 처리함HttpMessageConverter
예외 발생@RestControllerAdvice
는 @RestController
뿐 아니라 @Controller
에도 적용 가능ApiResponseData
)로 반환 시도 → Thymeleaf와 충돌// ❌ 기존 (모든 컨트롤러 대상 - HTML 컨트롤러도 포함됨)
@RestControllerAdvice(basePackages = "me.singingsandhill.holmesai.presentation.controller")
// ✅ 변경 (오직 @RestController만 대상)
@RestControllerAdvice(annotations = {RestController.class})
annotations
속성을 사용해 @RestController
만 지정 → HTML 뷰용 컨트롤러는 예외 핸들링 대상에서 제외됨항목 | 결과 |
---|---|
/point/charge HTML 페이지 로딩 | ✅ 정상 200 응답 및 템플릿 렌더링 |
Thymeleaf 템플릿 해석 | ✅ 정상 처리 |
REST API 예외 응답 | ✅ JSON 포맷 통일 유지 (ApiResponseData ) |
REST API 정상 응답 | ✅ 정상 동작 유지 |
예외 핸들링 제외 (HTML 템플릿)
PageController
, TossPayController
예외 핸들링 적용 (REST API)
AuthController
, OrderController
, PointController
, ProductController
, OrderLogController
@Controller
)와 REST API(@RestController
)의 관심사를 분리