HTTP요청 본문(body) 데이터 JSON을 JAVA 객체(VO)에 맵핑하는 스프링 어노테이션
dataVO.setName(request.getParameter("name"));
: 직접 request.getParameter("name") 작성하여 파라미터를 추출 or 직접 파싱을 수행하지 않아도 된다
@RequestBody가 붙은 파라미터가 있으면 HTTP 요청의 미디어 타입과 파라미터의 타입을 먼저 확인해야 한다
: 다양한 미디어 타입( JSON, XML, multipart/form-data 등)으로 전송 될수 있기 때문에 어떤 방식으로 파싱해야하는지 결정해야 한다
: 어노테이션으로 지정된 파라미터의 타입을 먼저 확인하여, 해당 타입으로 데이터를 변환할 수 있는지 확인해야 한다
해당 미디어 타입과 파라미터 타입을 처리할 수 있다면, HTTP 요청의 본문 부분(Body)을 통째로 변환해서 지정된 메소드 파라미터로 전달해준다
POST /users HTTP/1.1
Content-Type: application/json
{
"id": 1,
"name": "John Doe",
"email": "johndoe@example.com"
}
---------------------------------------
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 요청 본문에서 전달된 User 객체를 사용하여 새로운 사용자를 생성
}
JAVA 객체(VO)를 HTTP 응답의 본문(body) 데이터로 매핑하는 스프링 어노테이션
HTTP 응답 본문에 직접 작성되기 때문에, 반환값은 반드시 HTTP 응답 본문에 작성 가능한 데이터 타입이어야 한다
기본적으로 Jackson 라이브러리를 사용하여 객체를 JSON 형식으로 변환하여 반환
객체의 필드명이 JSON 형식의 Key 값, 필드의 값이 JSON 형식의 Value 값
: 따라서 반환되는 객체는 반드시 JSON 형식으로 변환이 가능한 객체여야 한다
@Controller
public class MyController {
@GetMapping("/user")
@ResponseBody
public User getUser() {
User user = new User();
user.setId(1);
user.setName("John");
return user;
}
}
--------------------------------------
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"name": "John",
}