@RequestParam과 @PathVariable 차이
2022. 11. 7. 14:47ㆍSpring
이전 포스팅에 웹 계층 개발 부분을 정리하면서 '@RequestParam과 @PathVariable 차이'를 중간에 삽입해서 적었던 기억이 있습니다.
하지만 토이 프로젝트를 할 때나 다른 사람들의 코드를 볼 때 자주 헷갈리는 개념이므로 따로 빼서 포스팅하게 되었습니다.
Spring에서 @RequestParam과 @PathVariable차이
Controller 단에서 위 두 어노테이션은 uri를 통해 전달된 값을 파라미터로 받아오는 역할을 합니다.
쓰임과 차이점에 중점을 두면서 정리해보겠습니다.
http://localhost:8000/board?page=1&listSize=20 ← @RequestParam방식
http://localhost:8000/board/1 ← @PathVariable방식
@RequestParam
예시 코드
@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";
}
게시글 리스트를 받아오는 api입니다. get 요청을 받으면 쿼리 스트링을 통해 전달된 page 값과 listSize 값을 받아와서 @RequestParam이 파라미터인 int page와 int listSize에 각각 대입해줍니다.
괄호 안의 속성 값은 각각 이렇습니다.
- value = uri에서 바인딩하게 될 값
- required = true 일 시 , 필수적으로 값이 전달되어야 하며 없으면 에러
- defaultValue = 값이 없을 때 기본값으로 사용할 값
@PathVariable
예시 코드
@ResponseBody
@PostMapping("/board/{id}")
public ResponseDto<Integer> updateBoard(@PathVariable("id") int id, ) throws Exception {
Board board = new Board();
board.setId(id);
}
@PathVariable은 어떤 요청이든 간에 딱 하나만 쓸 수 있습니다. 주로 post 요청에 많이 씁니다.
정리
@RequestParam과 @PathVariable은 둘 다 데이터를 받아오는 데에 사용하고
@PathVariable은 값을 하나만 받아올 수 있으므로, 쿼리 스트링 등을 이용한 여러 개 데이터를 받아올 때는 @RequestParam을 사용합니다.
'Spring' 카테고리의 다른 글
[Spring Data JPA] 쿼리 메서드 기능 (0) | 2023.01.26 |
---|---|
스프링 빈 이란? 스프링 빈 등록하는 방법 (@Bean, @Configuration, @Component) (0) | 2022.11.13 |
스프링IoC 컨테이너 (Feat. 빈(Bean), 빈 스코프(Bean Scope)) (0) | 2022.10.24 |
Spring, Spring boot란? (컨테이너, DI, IoC) (2) | 2022.09.02 |
[타임리프] 자주 사용하는 기능 정리 (0) | 2022.08.17 |