위 2개의 어노테이션은 http의 비연결성을 극복하고 데이터를 전달하기 위한 방법들 중 하나로, uri를 통해 전달된 값을 파라미터로 받아오는 역할을 합니다. 쓰임이 비슷하여 자칫 혼동될 수 있으니 비교해보도록 하겠습니다!
uri를 통해 값을 전달하는 방식은 2가지가 있습니다.
이 예시에서 쉽게 생각하면, 쿼리스트링을 사용하여 여러개의 값을 전달하는 첫번째 방식은 @RequestParam을 통해 받아오고, 두번째 방식은 @PathVariable을 사용하여 받아올 수 있습니다. 좀 더 자세하게 차이점을 알아보겠습니다.
일반적인 예제
@GetMapping({"board", "board?page={page}&listSize={listSize}"})
public String getBoardList(Model model
, @RequestParam(value = "page", required = false, defaultValue = "1") int page
, @RequestParam(value = "listSize", defaultValue = "10") int listSize
) throws Exception {
.
.
.
return "board/boardList";
}
현재 Job Frenz프로젝트에서 사용중인 @RequestParam parameter
@GetMapping
public List<AccountVo> getAccountList(@RequestParam Map param){
return accountService.getAccountList(param);
}
1) @RequestParam 과 @PathVariable은 둘 다 데이터를 받아오는 데에 사용한다!
2) @PathVariable은 값을 하나만 받아올 수 있으므로, 쿼리스트링 등을 이용한 여러 개 데이터를 받아올 때는 @RequestParam을 쓴다!
3) @RequestParam은 uri를 통해 전달된 값이 아니더라도, ajax 요청을 통해 body에 담아온 데이터를 여러 타입으로 받을 수 있다.