본문 바로가기
Spring | Spring Boot

@ModelAttribute와 @RequestBody 차이점

by 주연이가 주연이다. 2024. 2. 17.

@ModelAttribute와 @RequestBody 차이점

@ModelAttribute

URL의 쿼리 파라미터나 HTML Form 형식으로 HTTTP 요청 파라미터가 전송되는 경우.

예를 들어, 사용자가 폼에 데이터를 입력하고 제출하는 경우, 사용자가 입력한 데이터는 HTTP 요청 파라미터로 전송된다.

@PostMapping("/users")
public String processForm(@ModelAttribute("user") User user) {
    // user 객체는 HTTP 요청 파라미터를 바인딩하여 생성됨
    ...
}

이렇게 @ModelAttribute를 사용하면 HTTP 요청 파라미터를 User 객체에 자동으로 바인딩할 수 있다.

@RequestBody

HTTP 메세지 바디Json 등의 형태로 전송되는 경우.

사용자가 웹 페이지에서 JSON 형태의 데이터를 보내는 경우, 사용자가 보낸 데이터는 HTTP 메세지 바디에 포함되어 전송된다.

@PostMapping("/users")
public String addUser(@RequestBody User user) {
    // user 객체는 HTTP 요청 본문의 JSON 데이터를 파싱하여 생성됨
    ...
}

이렇게 @RequestBody를 사용하면 HTTP 요청 바디의 JSON 데이터를 User 객체로 자동으로 변환할 수 있다.

즉, @ModelAttribute는 HTTP 요청 파라미터를 객체에 바인딩하는데 사용되며, @RequestBody는 HTTP 메세지 바디의 데이터를 객체로 변환하는데 사용된다.

만약 Json이 HTTP 메세지 바디로 넘어오는데 @RequestBody가 아닌 @ModelAttribute를 사용하면 HTTP 메세지 바디가 아닌 요청 파라미터를 처리하게 된다.


[참고] 인프런 김영한 : 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

728x90
반응형

'Spring | Spring Boot' 카테고리의 다른 글

[Spring] @Configuration과 CGLIB의 관계  (0) 2024.02.04
Spring AOP 개념 정리  (0) 2023.12.20