클라이언트가 전송하는 Json(application/json) 형태의 HTTP Body를 Java 객체로 변환시켜주는 역할을 하는 어노테이션.
client 요청 데이터
{ "username": "gunwoo", "email": "gunwoo@example.com" }
user Class 객체
public class User { private String username; private String email; }
user Controller
@PostMapping("/users") public ResponseEntity<User> createUser(@RequestBody User user) { // @RequestBody는 MessageConverter를 통해 Json 형태의 HTTP Body를 Java 객체(User Class)로 변환시킨다. System.out.println("Received User: " + user); return ResponseEntity.ok(userService.createUser(user)); }
@RequestBody으로 변환된 user 객체 확인
Received User: User(username=gunwoo, email=gunwoo@example.com)
클라이언트가 전송하는 폼(form) 형태의 HTTP Body와 요청 파라미터들을 생성자나 Setter로 바인딩하기 위해 사용되는 어노테이션.
client 요청 데이터
<userForm> username=gunwoo email=gunwoo@example.com
user Class 객체
public class User { private String username; private String email; }
user Controller
@PostMapping("/users") public ResponseEntity<User> createUser(@ModelAttribute("user") User user) { // @ModelAttribute는 HTML Form 형태의 HTTP Body와 요청 파라미터들을 객체(User Class)에 바인딩시킨다. System.out.println("Received User: " + user); return ResponseEntity.ok(userService.createUser(user)); }
@ModelAttribute로 변환된 user 파라미터 확인
Received User: User(username=gunwoo, email=gunwoo@example.com)
오늘 RequestBody와 ModelAttribute 어노테이션에 대해
간단하게 정리해 보았는데,
@RequestBody는 요청 본문의 데이터를 처리하기 위해 사용하고,
@ModelAttribute는 요청 파라미터를 처리하기 위해 사용된다. 라고
간단하게 요약할 수 있을 것 같다.