본문 바로가기
Java/Spring Boot

[Spring Boot] RequestBody vs RequestParam vs PathVariable

by 깨준 2024. 10. 21.

1. RequestBody

클라이언트가 전송한 HTTP 요청의 본문(Body)을 Java 객체로 변환합니다. 일반적으로 JSON 또는 XML 데이터를 수신하는 데 사용한다.

@PostMapping("/api/users")
public ResponseEntity<User> createUser(@RequestBody User user) {
    // user 객체를 사용하여 처리
    return ResponseEntity.ok(user);
}

클라이언트가 전송한 JSON 데이터를 User 객체로 변환하여 메서드 매개변수로 전달한다. 이 방식은 POST, PUT, PATCH 요청에서 자주 사용한다.

= 사용자가 입력한 값(데이터)

2. RequestParam

URL 쿼리 매개변수를 메서드 매개변수로 바인딩한다. 주로 GET요청에서 사용되며, 쿼리 스트링에서 전달된 값을 수신하는 데 사용된다.

@GetMapping("/api/users")
public ResponseEntity<List<User>> getUsers(@RequestParam String role) {
    // role 매개변수를 사용하여 처리
    return ResponseEntity.ok(userService.findByRole(role));
}

role은 쿼리 매개변수로 전달된 값을 받는다. 예를 들어, /api/users?role=admin과 같은 요청이 있을 수 있습다. 기본값을 설정하거나 필수 여부를 지정할 수도 있다.

3. PathVariable

URL 경로에서 변수를 추출하여 메서드 매개변수로 바인딩한다. RESTful API에서 리소스 식별자(예: ID)를 전달할 때 주로 사용된다.

@GetMapping("/api/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    // id를 사용하여 처리
    return ResponseEntity.ok(userService.findById(id));
}

{id} 부분이 URL 경로에서 사용자 ID로 대체되어 메서드 매개변수인 id로 전달된다. 예를 들어, /api/users/1과 같은 요청이 있을 수 있다.

4. 정리

  • @RequestBody : JSON 처리
  • @RequestParam : query 처리
  • @PathVariable : URI 변수 처리