
방탈출 카페 검색을 위해 동적 쿼리를 사용하는 api를 테스트 하는 도중
2023-05-19 01:23:48.763 WARN 30972 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'loc' for method parameter type List is not present]
2023-05-19 01:24:23.279 WARN 30972 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'keyword' for method parameter type String is not present]
WARN 30972 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'keyword' for method parameter type String is not present]
에러가 발생하였다 .. !
내가 만들고자 하는 api는 다음과 같다.
https://{{host}}/cafe/search?loc=홍대&keyword=비밀
: 지역이 홍대이면서 방탈출 카페 이름에 비밀이 포함되는 카페 list 반환
https://{{host}}/cafe/search?loc=홍대&loc=건대&keyword=비밀
: 지역이 홍대 또는 건대이면서 카페 이름에 비밀이 포함되는 list 반환
https://{{host}}/cafe/search
: 검색 조건이 없으므로 전체 list 반환
이때 마지막 https://{{host}}/cafe/search 같은 경우 loc와 keyword로 받은 파라미터가 없으므로
해당 오류가 발생하였다.
해결 방법
기존 코드
@GetMapping("/cafe/search")
public Result cafeSearchList(@RequestParam List<String> loc, @RequestParam String keyword,
@PageableDefault(size = 12, sort = "name") Pageable pageable) {
Page<CafeDTO> cafeSearchList = cafeService.cafeSearchList(loc, keyword, pageable);
return new Result(cafeSearchList);
}
@RequestParam 의 required 속성의 default 값은 true 인데 이를 false로 바꾸면 된다 !
(예시 : @RequestParam(required = false) List<String> loc )
false값으로 사용하게 되면 해당 Parameter를 반드시 받지 않아도 된다.
@GetMapping("/cafe/search")
public Result cafeSearchList(@RequestParam(required = false) List<String> loc,
@RequestParam(required = false) String keyword,
@PageableDefault(size = 12, sort = "name") Pageable pageable) {
Page<CafeDTO> cafeSearchList = cafeService.cafeSearchList(loc, keyword, pageable);
return new Result(cafeSearchList);
}
'escape-room' 카테고리의 다른 글
| [AWS] DNS 설정하기 : 도메인과 EC2 탄력적 IP 연결 (with. 가비아) (0) | 2023.05.19 |
|---|---|
| [QueryDSL/JPA] 동적 쿼리 작성하기 (Join 사용 X) (0) | 2023.05.19 |
| [IntelliJ] 자주 쓰는 IntelliJ 단축키 (0) | 2023.05.18 |
| [Spring] Pageable 설정하기 (글로벌 설정, 개별 설정) (0) | 2023.05.18 |
| [AWS] EC2 배포 관련 명령어 (1) | 2023.05.17 |