최대 1 분 소요

문제 상황

java.lang.IllegalStateException: Ambiguous handler methods mapped for ‘/api/v1/malls/7/0/A/0’

API를 호출하자마자 500 에러와 함께 위 로그가 남겨져 있었다.
호출한 API URI는 /malls/{mallId}/{categoryId}/{gender}/{filterId}고, 중괄호를 친 부분은 값이 들어간다.
/api/v1/malls/7/0/A/0는 이 API를 호출하면서 사용했던 주소다.

해결

로그를 보면 Ambiguous handler methods라고 써져 있듯이, 어떤 API를 호출해야할지 모르겠다는 뜻이다.
찾아보니 API URI 구조가 똑같은게 2개나 있었다😅 이래서 malls/7/0/A/0를 호출하면 에러가 발생한다.

  • API 1번 : /malls/{mallId}/{categoryId}/{gender}/{filterId}
  • API 2번 : /malls/{mallId}/{subCategoryId}/{gender}/{filterId}

때문에 다음처럼 API 2번의 URI를 /malls/sub/...로 수정했다.

//@GetMapping("/malls/{mallId}/{subCategoryId}/{gender}/{filterId}")
@GetMapping("/malls/sub/{mallId}/{subCategoryId}/{gender}/{filterId}")
public ResponseEntity<?> productWithSubCategoryOfMall(@PathVariable("mallId") @NotEmpty Long mallId,
                                                      @PathVariable("subCategoryId") @NotEmpty Long subCategoryId,
                                                      @PathVariable("gender") @NotEmpty String gender,
                                                      @PathVariable("filterId") @NotEmpty Long filterId,
                                                      Pageable pageable) {
  
}

카테고리:

업데이트:

댓글남기기