반응형
Spring 프레임워크에서 @RequestParam과 @PathVariable 어노테이션은 모두 컨트롤러 메서드에서 요청 파라미터를 처리하는 데 사용되지만, 그 목적과 사용 방식이 다릅니다. 각각의 차이점을 자세히 설명하겠습니다.
@RequestParam
- 용도: HTTP 요청 파라미터를 메서드 매개변수에 바인딩할 때 사용합니다. 주로 쿼리 스트링 또는 폼 데이터에서 파라미터를 추출할 때 사용됩니다.
- 사용 예: URL에 포함된 쿼리 파라미터나 폼 데이터에서 값을 추출할 때.
- 기본값: 제공하지 않으면 기본값을 설정할 수 있습니다. 파라미터가 필수가 아닐 경우 required = false로 설정할 수 있습니다.
예시코드:
@GetMapping("/api/users")
public String getUserByRequestParam(@RequestParam("id") String userId) {
// id 파라미터를 통해 전달된 값을 사용
return "User ID: " + userId;
}
- 요청 URL: /api/users?id=123
@PathVariable
- 용도: URI 경로의 일부를 메서드 매개변수에 바인딩할 때 사용합니다. RESTful API에서 자원의 식별자를 URL 경로의 일부로 포함시킬 때 주로 사용됩니다.
- 사용 예: URL 경로에 포함된 변수 값(경로 변수)을 추출할 때.
- 기본값: 기본값을 설정할 수 없으며, 경로 변수는 필수입니다.
예시코드:
@GetMapping("/api/users/{id}")
public String getUserByPathVariable(@PathVariable("id") String userId) {
// 경로 변수로 전달된 값을 사용
return "User ID: " + userId;
}
- 요청 URL: /api/users/123
차이점 요약
- 위치:
- @RequestParam: 쿼리 스트링 또는 폼 데이터에서 추출합니다.
- @PathVariable: URL 경로에서 추출합니다.
- 형식:
- @RequestParam: ?key=value 형식으로 전달됩니다.
- @PathVariable: 경로의 일부로 전달됩니다.
- 필수 여부:
- @RequestParam: 기본값을 설정하거나 required = false로 설정할 수 있습니다.
- @PathVariable: 경로 변수는 필수이며, 기본값을 설정할 수 없습니다.
예시 비교
@RequestParam 사용:
// URL: /api/items?id=100&name=book
@GetMapping("/api/items")
public String getItem(@RequestParam("id") int id, @RequestParam("name") String name) {
return "Item ID: " + id + ", Item Name: " + name;
}
@PathVariable 사용:
// URL: /api/items/100/book
@GetMapping("/api/items/{id}/{name}")
public String getItem(@PathVariable("id") int id, @PathVariable("name") String name) {
return "Item ID: " + id + ", Item Name: " + name;
}
이 두 어노테이션을 잘 활용하면, HTTP 요청에서 필요한 데이터를 유연하게 추출하여 사용할 수 있습니다.
@RequestParam
- 용도: 쿼리 스트링 또는 폼 데이터에서 요청 파라미터 추출.
- 예시: @RequestParam("id") String id (URL: /api/users?id=123)
@PathVariable
- 용도: URL 경로의 일부에서 경로 변수 추출.
- 예시: @PathVariable("id") String id (URL: /api/users/123)
차이점 요약
- 위치: @RequestParam은 쿼리 스트링, @PathVariable은 URL 경로.
- 형식: @RequestParam은 ?key=value, @PathVariable은 경로 변수.
- 필수 여부: @RequestParam은 기본값 설정 가능, @PathVariable은 필수.
반응형
'Web > 스프링부트(SpringBoot Framework)' 카테고리의 다른 글
(2) Kafka, Spring Boot, 리액트를 사용하여 쇼핑몰 사용자의 결제정보 실시간 처리 구현하기 (0) | 2024.07.19 |
---|---|
(1) Kafka, Spring Boot, 리액트를 사용하여 쇼핑몰 사용자의 결제정보 실시간 처리 구현하기 (0) | 2024.07.18 |
(2) @Autowired와 @AllArgsConstructor 차이점 (0) | 2024.07.15 |
(1) @AllArgsConstructor과 @NoArgsConstructor 차이점 (0) | 2024.07.15 |
(2) 스프링부트, JPA로 구현한 로그인을 시도한 사용자의 접속 시간 저장 (0) | 2024.07.11 |