-
[TIL] Spring Boot 의 Ambiguous handler methods mapped for 에러TIL(Today I Learned) 2023. 2. 15. 20:05
*20230215의 회고
오늘도 어김없이 팀프로젝트 진행하면서 작성한 API 가 문제없이 잘 돌아가는지 포스트맨으로 테스트를 진행하던 중, 'Ambiguous handler methods mapped for ~~' 라는 에러 메세지를 마주하게 되었다.
구글링을 해본 결과, 중복된 API가 존재해서 이러한 오류가 발생했다고 한다. 그래서 내가 짠 코드를 살펴본 결과 다음과 같은 문제점이 있었다.
두 메서드 모두 @GetMapping 이며 "/gift-card/{파라미터}" 형식의 API를 가지고 있었다.
나는 @PathVariable로 파라미터를 받는 타입이 Enum 과 Long 으로 다르기 때문에 문제가 없을 거라고 안일하게 생각했다. 그러나 스프링 부트에서는 @PathVariable 로 받는 파라미터의 형식 까지는 구분할 수는 없어 보인다. 따라서 '카테고리 별 기프트 카드 조회' 메서드의 API를 아래와 같이 변경해주었다.
따라서 문제를 해결할 수 있었다. 다만 여기서 찜찜한 것은, 수정한 API 가 과연 RESTful 한지는 잘 모르겠다...ㅎㅎ 그리고 현재 GiftCardCategory 는 Enum 클래스이다. 따라서 category 는 Enum 타입이기에 pathvariable 로 대문자를 받게 된다. 이 또한 RESTful 하지는 않은걸로 알고 있다. 그렇다면 Converter 를 이용해서 소문자로 받은 문자를 대문자로 바꿔주는 과정을 거쳐야 할텐데, 이번 프로젝트는 내가 프론트도 구현하기 때문에 꼭 그 과정이 필요할지는 좀 더 생각해봐야 겠다. 오늘의 회고 끝!
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 20230302일의 기록 (0) 2023.03.02 [TIL] 카테고리 별 기프트 카드 조회 컨트롤러 수정하기 (0) 2023.02.16 [TIL] @Builder 와 @NoArgsConstructor, @AllArgsConstructor (0) 2023.02.14 [TIL] Builder 패턴 사용하기 (0) 2023.02.13 [TIL] Controller 에서 Entity 를 그냥 반환하면 안되는 이유 2가지 (0) 2023.01.30