RequestParam은 쿼리 파라미터를 받을 때 사용한다.
RequestParam은 예를 들어, 다음과 같은 URL 요청에서
/board?category=tech&page=2
위 URL에서 category=tech와 page=2는 쿼리 파라미터 인데, @RequestParam을 사용해서 이를 처리할 수 있다.
@GetMapping("/board")
public List<PostDto> getBoardPosts(
@RequestParam(value = "category", required = false) String category,
@RequestParam(value = "page", defaultValue = "1") int page) {
// 카테고리 필터링이나 페이지네이션 처리
return boardService.getPosts(category, page);
}
category게시글의 카테고리를 선택적으로 필터링하는 쿼리 파타미터이다.required = false로 설정해서 필수 항목이 아니며, 제공되지 않으면 전체 게시글을 보여줄 수 있다.page 파라미터를 통해 게시글을 여러 페이지로 나누어 볼 수 있게 처리한다.category 파라미터를 통해 특정 카테고리(예: 기술, 뉴스 등)에 맞는 게시글만 필터링이 가능하다.page 파라미터를 통해 게시글을 여러 페이지로 나누어 볼 수 있게 처리한다.@PathVariable은 URL 경로의 일부분을 동적으로 받아올 때 사용한다.
게시판에서 특정 게시글을 조회할 때 게시글 번호를 경로의 일부로 사용하면 자연스럽고 직관적인 URL이 된다.
/board/123
위 URL에서 123은 게시글의 ID를 나타내며, 이를 @PathVariable로 받아 처리할 수 있다.
@GetMapping("/board/{postId}")
public PostDto getPostDetail(@PathVariable Long postId) {
// postId에 해당하는 게시글 조회
return boardService.getPostById(postId);
}
postId: 경로에서 받아온 게시글 ID를 의미한다. 이 ID를 통해 게시글을 조회할 수 있다.postId를 통해 URL에서 특정 게시글을 조회할 때 사용한다. 예를 들어 /board/123는 ID가 123인 게시글을 보여준다.| 구분 | @RequestParam | @PathVariable |
|---|---|---|
| 주로 사용되는 상황 | 쿼리 파라미터로 필터링, 페이지네이션을 처리할 때 | 특정 리소스(예: 게시글, 사용자)를 식별할 때 |
| URL 형태 | /board?category=tech&page=2 | /board/123 |
| 역할 | 옵션으로 제공하는 추가적인 정보 (필터링, 검색 조건) | URL 경로의 일부로 리소스 ID를 직접 명시 |
| 필수 여부 | 필수 아님 (선택적으로 제공 가능) | 필수 (경로에 반드시 포함되어야 함) |
| 활용 예시 | 카테고리 필터링, 페이지네이션 | 게시글 상세 조회, 사용자 정보 조회 |
@RequestParam: 주로 필터링, 검색 조건을 전달 할 때 유용하다. 예를 들어 게시판에서 카테고리, 페이지 번호 등을 전달할 때 사용한다.@PathVariable: 자원을 명확히 식별할 때 유용하다. 특정 게시글의 상세 정보 페이지에 접근할 때 게시글 ID를 경로의 일부로 사용하는 것이 직관적이다.