[Spring MVC(Rest API)] @RequestBody,@ResponseBody _ HTTP

홍영창·2025년 4월 8일

먼저 HTTP는 서버와 클라이언트 간의 단방향 통신이다.

HTTP의 특징

  1. 단방향 통신: 클라이언트 → 서버로 요청 → 서버 → 클라이언트로 응답.
  2. 요청-응답 사이클이 독립적이고, 연결이 매번 끊어집니다.

그렇다면 서버에서 클라이언트로 응답할떄 어떤식으로 할까?

@RequestBody

HTTP 요청 본문(body)에서 데이터를 읽어서 자바 객체로 변환하는 데 사용됩니다.
클라이언트 -> 서버 요청을한다 (요청)

public class UserController {

    // POST 요청에서 JSON 데이터를 받아서 처리
    @PostMapping("/createUser")
    public String createUser(@RequestBody User user) {
        // 클라이언트가 보낸 JSON 데이터를 자바 객체로 변환
        System.out.println("User name: " + user.getName());
        System.out.println("User age: " + user.getAge());

        return "User: " + user.getName() + " 생성!";
    }
}

이제 반대로 클라이언트가 서버에게 요청할떄 어떻게 할까?

@ResponseBody

자바 객체를 HTTP 응답 본문에 직렬화하여 클라이언트에 반환하는 데 사용됩니다.
보통 JSON이나 XML 형태로 응답이 반환됩니다.
서버 -> 클라이언트 요청을한다 (응답)

public class UserController {

    // GET 요청에 대해 JSON 응답 반환
    @GetMapping("/getUser")
    @ResponseBody
    public User getUser() {
        // 서버에서 객체를 JSON 형식으로 응답
        return new User("Alice", 25);
    }
}

동기 처리에서 많이 사용하는이유

@RequestBody,@ResponseBody모두 동기처리에 더 많이 사용하는 이유
요청, 응답 하는 과정을 진행하는동안엔 아무런 작업을 하지 않고 요청, 응답이 완료하기 전까지는 아무런 동작도 하지않고 응답이 완료한후 다른 작업을 하는 과정이 동기 처리 과정이기 떄문에 자연스럽게 동기처리에 더 많이 사용한다.

profile
안녕하세요.

0개의 댓글