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 |
'BackEnd > Spring' 카테고리의 다른 글
| [Spring] Validation으로 입력값 검증하기 (0) | 2026.08.11 |
|---|---|
| [Spring] HTML Form을 이용해 게시글 작성하기 (0) | 2026.08.10 |
| [Spring] 왜 Exception을 던질까? (0) | 2026.08.07 |
| [Spring] @Transactional이 내부 호출에서 동작하지 않는 이유 (0) | 2026.08.07 |
| [Spring] JPA 메서드 명명 규칙(Query Method) (0) | 2026.08.07 |
댓글