그 뭐냐 POST METHOD사용시
BODY는 기본적으로 사용하고
상황에 따라
지난시간에 했던거 짧은 요약
1️⃣ @RequestParam - Get + Query Parameter(Query String)
http://localhost:8080/tutor?name=wonuk&age=100@RequestParam, @ModelAttribute어노테이션 사용2️⃣ @RequestParam - POST + HTML Form ( x-www-form-urlencoded )
@RequestParam,@ModelAttribute 어노테이션 사용3️⃣ HTTP Request Body
HttpMessageConverter 인터페이스 활용@RequestBody어노테이션 사용Content-Type에 데이터 형태가 주어지면 그혈태에 맞게 읽어ㅇㅗㅁ공통점 : 사용자 지정 클래스로 Request의 Body 내용을 매핑한다.
@RestController
public class JsonController {
@PostMapping("/v4/request-body")
public String requestBodyJsonV4(Tutor tutor) {
Tutor requestBodyTutor = tutor;
return "tutor.getName() = " + requestBodyTutor.getName() + " tutor.getAge() = " + requestBodyTutor.getAge();
}
http://localhost:8080/v4/request-body+ x-www-form-urlencoded
📌 x-www-form-urlencoded
HTML에서 <form> 태그 처럼 작성된다.
한번에 같은 키값 여러개 XXXX
tutor.getName() = sparta tutor.gatAge() = 100
@RestController
public class JsonController {
@PostMapping("/v4/request-body-json")
public String requestBodyJsonV4(@RequestBody Tutor tutor) {
Tutor requestBodyTutor = tutor;
return "tutor.getName() = " + requestBodyTutor.getName() + " tutor.getAge() = " + requestBodyTutor.getAge();
}
저거 안써주면 자동으로 @ModelAttribute취급함.
http://localhost:8080/v4/request-body-json+ Json
tutor.getName() = sparta tutor.gatAge() = 100
✅ 들어온 그대로 반환하기

만약에 반환 형식을 사용자 지정 클래스 그대로 하고 반환하면
출력으로 나가는 값도 그대로 json이댐
이런 경우 View를 조회하지 않고 Response Body에 Data를 입력해서 직접 반환한다.
MappingJackson2HttpMessageConverter 를 사용한다. @ModelAttribute은 Form형태를 많이 취하는데, postman에서 확인하면 Body내용이 form 형태일 경우 Header에 Content-Type 변수가 없어짐< @ModelAttribute - Body = x-www-form-urlencoded >

< @RequestBody - Body = Json >

HTTPMessageConverter 작동 조건
1️⃣ 헤더안의 Content-Type 이 HTTPMessageConverter 가 제공하는 데이터 타입이어야 함
2️⃣ 함수안에서 받아오는 매개변수에@RequestBody표시가 되어있어야함
➡️ HTTPMessageConverter가이건 내가 바꿔야 겠구나인식함
그 외에는 @ModelAttribute 로 취급하는 듯