새소식

🍹 (주) 강의 주제/✏️ Spring은 어노테이션에 있다

[Spring] RequestBody와 ResponseBody의 사용 방법? 그리고 차이점!

728x90

🤔 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

🧭 References

[1] reference : https://docs.spring.io/

[2] Ads : https://apps.apple.com/us/app/beluga-classic-film-filters/id6744041061

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.