🤔 Question
👉 Spring에서 @RequestBody와 @ResponseBody는 무엇일까요?
👉 아주 쉽게 말하면, @RequestBody는 "클라이언트가 보낸 데이터 읽기", @ResponseBody는 "서버가 데이터를 그대로 돌려주기"입니다.
👉 REST API 개발에서는 거의 필수로 사용되는 어노테이션입니다.
📩 @RequestBody란?
👉 @RequestBody는 클라이언트가 보낸 요청 본문(body)에 담긴 데이터를 자바 객체로 변환해줍니다.
👉 주로 JSON 형식의 데이터를 받을 때 사용합니다.
👉 마치 택배 상자를 열어서 그 안의 물건을 꺼내는 역할이라고 생각하면 됩니다.
📩 @RequestBody 예제 코드
👉 클라이언트가 아래와 같은 JSON을 보낸다고 가정해봅시다.
{
"name": "Tom",
"age": 10
}
👉 이를 받는 Spring Controller 코드는 다음과 같습니다.
@PostMapping("/user")
public void saveUser(@RequestBody UserDto userDto) {
System.out.println(userDto.getName());
System.out.println(userDto.getAge());
}
👉 JSON 데이터가 자동으로 UserDto 객체로 변환됩니다.
👉 이 변환을 담당하는 것이 바로 Jackson 라이브러리입니다.
📤 @ResponseBody란?
👉 @ResponseBody는 메서드의 반환값을 화면(View)이 아니라 데이터 그대로 클라이언트에게 전달합니다.
👉 즉, 반환 객체를 JSON 형태로 변환해서 응답합니다.
👉 편지 내용을 포장하지 않고 그대로 전달하는 역할입니다.
📤 @ResponseBody 예제 코드
@GetMapping("/user")
@ResponseBody
public UserDto getUser() {
return new UserDto("Tom", 10);
}
👉 위 코드는 UserDto 객체를 JSON 형태로 변환하여 클라이언트에 전달합니다.
👉 만약 @ResponseBody가 없다면, Spring은 화면 이름으로 해석하려고 시도합니다.
🔄 @RestController와의 관계
👉 @RestController는 클래스 레벨에 @ResponseBody가 자동으로 붙어 있는 상태입니다.
👉 그래서 @RestController를 사용하면 메서드마다 @ResponseBody를 붙일 필요가 없습니다.
👉 반면, @RequestBody는 여전히 메서드 파라미터에 직접 선언해야 합니다.
⚖️ @RequestBody vs @ResponseBody 차이
✔ @RequestBody : 요청(Request) 데이터 → 자바 객체
✔ @ResponseBody : 자바 객체 → 응답(Response) 데이터
👉 하나는 들어오는 데이터, 하나는 나가는 데이터를 담당합니다.
☔ 정리
👉 @RequestBody는 JSON 요청을 객체로 변환해주는 역할입니다.
👉 @ResponseBody는 객체를 JSON 응답으로 변환해주는 역할입니다.
👉 REST API를 만든다면 두 어노테이션은 거의 매일 사용하게 됩니다.
If I was of any help to you, please buy me coffee 😿😢😥
If you have any questions, please leave them in the comments
[2] Ads : https://apps.apple.com/us/app/beluga-classic-film-filters/id6744041061