
Path Variable (경로 변수)
- URL 경로의 일부(Segment)로 데이터를 포함하여 전송하는 방식
- 특정 리소스(자원)를 식별할 때 사용 (예: 특정 게시물 ID, 특정 사용자 ID 등)
사용 방법
- URL 경로에 {변수명} 형태로 표시하고, @PathVariable 어노테이션으로 해당 값을 Controller 메서드의 매개변수로 받아온다.
- 예시 URL: http://localhost:8080/users/123 (여기서 123이 Path Variable)
- Controller 코드 예시:
@GetMapping("/users/{userId}") public String getUserProfile(@PathVariable String userId) { // userId 값을 사용하여 사용자 정보를 조회 return "User ID: " + userId; }
- 주요 특징:
- URL의 필수적인 부분입니다. 이 값이 없으면 리소스를 정확히 지정할 수 없습니다.
- 간결하고 RESTful API 디자인에 적합합니다.
Request Param (요청 매개변수)
- URL의 쿼리 스트링(Query String)에 데이터를 key=value 형태로 포함하여 전송하는 방식
- 주로 필터링, 정렬, 페이지네이션(페이징) 등 부가적인 옵션이나 검색 조건을 전달할 때 사용
사용 방법
- URL에 ? 뒤에 변수명=값 형태로 나열하고, @RequestParam 어노테이션으로 Controller 메서드의 매개변수로 받아다. 여러 개일 경우 &로 연결
- 예시 URL: http://localhost:8080/products?category=electronics&page=1 (여기서 category=electronics와 page=1이 Request Param)
- Controller 코드 예시:
@GetMapping("/products") public String getProducts( @RequestParam String category, @RequestParam(required = false, defaultValue = "1") int page) { // category와 page 값을 사용하여 상품을 검색 return "Category: " + category + ", Page: " + page; }
주요 특징:
- URL의 선택적인 부분일 수 있습니다 (required = false 또는 defaultValue 지정 가능).
- 순서가 중요하지 않고, 여러 개의 조건을 전달하기 편리합니다.
| 특징 | Path Variable (@PathVariable) | Request Param (@RequestParam) |
| 위치 | URL 경로의 일부 (/users/{id}) | URL 쿼리 스트링 (/products?category=electronics) |
| 용도 | 특정 리소스 식별 (고유한 값) | 리소스 필터링, 정렬, 검색 조건, 페이지네이션 (부가적인 값) |
| 필수 여부 | 일반적으로 필수 | 주로 선택적 (required = false, defaultValue 사용 가능) |
| 예시 | GET /posts/123 (123번 게시물 조회) | GET /posts?sortBy=date&order=desc (날짜 내림차순 정렬) |