@RequestParam vs @PathVariable의 차이점

젼이·2024년 10월 14일

@RequestParam이란?


RequestParam은 쿼리 파라미터를 받을 때 사용한다.

RequestParam은 예를 들어, 다음과 같은 URL 요청에서

/board?category=tech&page=2

위 URL에서 category=techpage=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이란?

@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를 통해 게시글을 조회할 수 있다.
  • URL 경로에 게시글 ID가 포함되어 있어, 사용자가 직관적으로 해당 게시글에 접근이 가능하다.

활용

  • 게시글 상세 조회: postId를 통해 URL에서 특정 게시글을 조회할 때 사용한다. 예를 들어 /board/123는 ID가 123인 게시글을 보여준다.



차이점 정리 (게시판 예시)

구분@RequestParam@PathVariable
주로 사용되는 상황쿼리 파라미터로 필터링, 페이지네이션을 처리할 때특정 리소스(예: 게시글, 사용자)를 식별할 때
URL 형태/board?category=tech&page=2/board/123
역할옵션으로 제공하는 추가적인 정보 (필터링, 검색 조건)URL 경로의 일부로 리소스 ID를 직접 명시
필수 여부필수 아님 (선택적으로 제공 가능)필수 (경로에 반드시 포함되어야 함)
활용 예시카테고리 필터링, 페이지네이션게시글 상세 조회, 사용자 정보 조회

언제 사용해야 할까?

  • @RequestParam: 주로 필터링, 검색 조건을 전달 할 때 유용하다. 예를 들어 게시판에서 카테고리, 페이지 번호 등을 전달할 때 사용한다.
  • @PathVariable: 자원을 명확히 식별할 때 유용하다. 특정 게시글의 상세 정보 페이지에 접근할 때 게시글 ID를 경로의 일부로 사용하는 것이 직관적이다.
profile
신입 개발자 임니당 : > (2025.02.05~)

0개의 댓글