프론트 연동 중, 뜬금없는 에러가 발생했다.
프로필 이미지 조회 시에는 memberId를 필요로 하지 않는데, memberId가 잘못되었다는 것이다.


알고보니 매핑 구조가 비슷한 다른 api가 있어서, 내가 만든 api의 경로인 profile-image가 {memberId}로 인식된 것이었다.
@GetMapping("/{memberId}")
public ApiResponse<MemberResDto.Profile> getMemberProfile(
@PathVariable(name = "memberId") Long memberId) {
MemberResDto.Profile response = memberService.getMemberProfile(memberId);
return ApiResponse.onSuccess(SuccessCode.MEMBER_PROFILE_GET_OK, response);
}
@GetMapping("/profile-image")
public ApiResponse<MemberResDto.ProfileImage> getProfileImage(
@RequestHeader("Authorization") String token) {
MemberResDto.ProfileImage response = memberService.getProfileImage(token);
return ApiResponse.onSuccess(SuccessCode.MEMBER_PROFILE_IMAGE_OK, response);
}
이러한 매핑 오류를 Ambiguous Request Mapping라고 한다.
말 그대로 애매한 매핑으로, 같은 주소(경로)로 연결된 메서드가 둘 이상 있어서, 스프링이 누굴 써야 할지 모르겠을때의 생기는 문제다.
나의 경우 공식적으로 Ambiguous Request Mapping 예외가 발생한 것은 아니지만,{memberId}와 /profile-image가 같은 depth에 존재하면서 경로 해석이 모호해져 profile-image가 memberId로 인식되어 생긴 문제였다.
따라서 경로에 슬래쉬를 추가하여 경로를 @GetMapping("/profile/image")로 바꿨다.
https://everybitofme.tistory.com/2
https://kodong8774.tistory.com/111