본문 바로가기
  • Let's study
BackEnd/Spring

[Spring] @PathVariable vs @RequestParam 차이와 사용 기준

by 코딩고수이고파 2026. 8. 7.

Spring에서 클라이언트의 요청 데이터를 받는 방법에는 여러 가지가 있다.

가장 많이 사용하는 것이 @PathVariable@RequestParam이다.

둘 다 값을 전달받는 용도이지만, 사용하는 상황은 다르다.

@PathVariable

@PathVariable은 URL 경로(Path)에 포함된 값을 가져올 때 사용한다.

예를 들어 게시글 번호처럼 반드시 필요한 식별자(id) 를 전달할 때 많이 사용한다.

@GetMapping("/question/{id}")
public String detail(@PathVariable int id) {
    ...
}

요청 URL

/question/3

실제로는 3이 id 변수에 저장된다.

왜 id는 Path에 넣는 것이 좋을까?

게시글 번호처럼 리소스를 식별하는 값은 URL 경로에 포함시키는 것이 REST API의 일반적인 설계 방식이다.

예를 들어 게시글 3번을 조회한다면

/question/3

처럼 표현하는 것이

/question?id=3

보다 의미가 명확하다.

  • 게시글 조회
  • 회원 조회
  • 상품 조회

처럼 대상을 식별하는 값은 @PathVariable을 사용하는 것이 권장된다.

@RequestParam

@RequestParam은 Query String 값을 받을 때 사용한다.

/question/list?page=2

처럼 요청이 들어왔다면

@GetMapping("/question/list")
public String list(@RequestParam int page) {
    ...
}

page에는 2가 저장된다.

언제 사용할까?

@RequestParam은 보통 검색 조건이나 옵션 값을 받을 때 사용한다. ex)

  • 검색어
  • 페이지
  • 정렬
  • 페이지 크기
/question/list?page=2
/question/list?keyword=spring
/question/list?sort=latest

이처럼 있어도 되고 없어도 되는 옵션 값에 적합하다.

기본값 지정하기

옵션 값은 전달되지 않는 경우도 많다.

이럴 때는 defaultValue를 사용할 수 있다.

@RequestParam(defaultValue = "1") int page

요청 값이 없으면 지정한 기본값이 자동으로 들어간다.

덕분에 null 체크를 따로 하지 않아도 된다.

@PathVariable과 @RequestParam 비교

구분 @PathVariable @RequestParam
위치 URL 경로(Path) Query String
사용 목적 리소스 식별(id 등) 검색, 정렬, 페이지 등 옵션
필수 여부 대부분 필수 선택적으로 사용하는 경우가 많음
예시 /question/3 /question/list?page=2

 

댓글