@RequestParam vs @PathVariable 쓰임새, 사용법, 차이점

Kyle_Kim·2023년 6월 5일
0

1. @RequestParam과 @PathVariable의 쓰임과 차이

위 2개의 어노테이션은 http의 비연결성을 극복하고 데이터를 전달하기 위한 방법들 중 하나로, uri를 통해 전달된 값을 파라미터로 받아오는 역할을 합니다. 쓰임이 비슷하여 자칫 혼동될 수 있으니 비교해보도록 하겠습니다!
uri를 통해 값을 전달하는 방식은 2가지가 있습니다.

이 예시에서 쉽게 생각하면, 쿼리스트링을 사용하여 여러개의 값을 전달하는 첫번째 방식은 @RequestParam을 통해 받아오고, 두번째 방식은 @PathVariable을 사용하여 받아올 수 있습니다. 좀 더 자세하게 차이점을 알아보겠습니다.

@RequestParam은 쿼리 스트링으로 전해지고, 값이 전해지지 않는 경우는 bad request에러가 나온다.

- bad request에러를 방지 하기 위해서 default값을 정해 놓을 수 있다.

@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";
	}

하지만, 받아올 파라메터가 많다면 Map으로 한번에 받아 올 수 있다.

현재 Job Frenz프로젝트에서 사용중인 @RequestParam parameter

@GetMapping
    public List<AccountVo> getAccountList(@RequestParam Map param){
        return accountService.getAccountList(param);
    }

RequestParam으로 설정한 변수 값은 전달되지 못하면 4** bad request가 나온다.

4. 정리/요약

1) @RequestParam 과 @PathVariable은 둘 다 데이터를 받아오는 데에 사용한다!

2) @PathVariable은 값을 하나만 받아올 수 있으므로, 쿼리스트링 등을 이용한 여러 개 데이터를 받아올 때는 @RequestParam을 쓴다!

3) @RequestParam은 uri를 통해 전달된 값이 아니더라도, ajax 요청을 통해 body에 담아온 데이터를 여러 타입으로 받을 수 있다.

profile
Make Things Right

0개의 댓글