(Spring) @RequestBody, @ModelAttribute

lgw2236·2023년 6월 28일
0

Java

목록 보기
8/8
post-thumbnail

@RequestBody 란?

클라이언트가 전송하는 Json(application/json) 형태의 HTTP Body를 Java 객체로 변환시켜주는 역할을 하는 어노테이션.

  • 주 사용 용도 : JSON, XML과 같은 형식의 데이터를 처리합니다.

[ 예제 코드 - RequestBody ]

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)

@ModelAttribute 란?

클라이언트가 전송하는 폼(form) 형태의 HTTP Body와 요청 파라미터들을 생성자나 Setter로 바인딩하기 위해 사용되는 어노테이션.

  • 주 사용 용도 : HTML 폼 데이터나 URL 쿼리 파라미터와 같은 형식의 데이터를 처리합니다.

[ 예제 코드 - ModelAttribute ]

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는 요청 파라미터를 처리하기 위해 사용된다. 라고
간단하게 요약할 수 있을 것 같다.

profile
어제보다 오늘 더

0개의 댓글