웹 개발

@PathVariable VS @RequestBody VS @RequestParam 사용하는 경우

Blue_bull 2025. 4. 25. 11:52

@PathVariable을 사용하는 경우

URL 경로에 포함된 리소스 식별자를 받을 때 사용.
REST API에서는 "어떤 리소스에 접근할 것인지"를 URL로 표현하기 때문.

예시:

GET /users/42
@GetMapping("/users/{id}")
public ResponseEntity<?> getUser(@PathVariable Long id)

id는 리소스를 식별하는 값이므로 @PathVariable로 받기.


@RequestBody를 사용하는 경우

JSON이나 Form 데이터 같은 복잡한 입력 데이터를 처리할 때 사용.
주로 POST, PUT, PATCH처럼 서버에 데이터를 전송하거나 수정할 때 사용.

예시:

POST /users
Content-Type: application/json

{
  "name": "홍길동",
  "email": "user@example.com"
}
@PostMapping("/users")
public ResponseEntity<?> createUser(@RequestBody UserDto userDto)

복잡한 객체를 한번에 받고 싶을 때 @RequestBody로 JSON을 파싱해서 자동으로 바인딩.


요약

목적 예시 URL 사용

리소스 식별 (단일 값) /posts/10 @PathVariable
리소스 생성/수정 (다양한 값) /posts + JSON @RequestBody
검색/필터링 옵션 /posts?category=java @RequestParam