Ambiguous handler methods mapped for HTTP path 오류
카테고리: Error
태그: methods
오늘 Controller쪽 PathVariable 넣어가며 개발중이엿는데 개발중에 이런 오류가 나왔다.
다행히도 수정 -> 테스트 -> 수정 -> 테스트 반복으로 작업하다보니 바로 문제가 뭔지알수있었다.
하나의 URL을 여러개의 콘트롤러에서 매핑할 수 없으니 중복되는 url이 없도록 하나의 콘트롤러에서만 사용하라는 것이엿다.
문제의 코드이다.
/**
* M4-3 예약 상세 조회 (유저)
*/
@GetMapping("/{mbId}/reservation/{reservationId}")
public ResponseEntity<UserReservationDto> getOneReservation(@PathVariable String mbId, @PathVariable String reservationId) {
UserReservationDto UserReservationDto = userReservationService.getOneReservation(UUID.fromString(mbId),UUID.fromString(reservationId));
return ResponseEntity.ok(UserReservationDto);
}
/**
* M4-4 예약 전체 조회 (유저)
*/
@GetMapping("/{mbId}/reservation/{status}")
public List<UserReservationDto> getAllReservation(@PathVariable String mbId, @PathVariable String status) {
return userReservationService.getAllReservation(UUID.fromString(mbId), status);
}
확인해보니 22번째줄과 34번째줄에 PathVariable를 넣어 동일하지 않다고 생각했는데 알아보니 / 를 넣어야지만 URI로 인식한다고한다. 위 상태에서 {status}를 URI로 사용하려면 아래와 같은코드로 변할것이다.
@GetMapping("/{mbId}/reservation/{status}/")
저렇게 되버리면 팀에서 정한 API규칙이 깨져서 아래와 같이 변경후 오류를 해결하였다.
@GetMapping("/{mbId}/reservation/all/{status}")
댓글남기기