스프링 기초부터 다시 공부하며 이전에 정리하지 않은 내용을 정리합니다...!
HttpMessageConverters는 스프링 프레임워크에서 제공하는 인터페이스 입니다.
HttpMessageConverters는 요청본문(Request body)에서 넘어온 json,xml형식의 데이터를 객체로 변환하거나 객체를 요청본문(Request body)에 넣어주는 역할을 합니다.
json {"name":"sebin"} --> User
Controller 는 요청이 들어오면 ViewResolver(BeanNameViewResolver)를 동작하면서 논리적 view이름과 동일한 id의 view구현체를 검색하고 이를 가져오게 됩니다.
하지만 @ResponseBody어노테이션이 붙어있다면 요청이 들어왔을때 ViewResolver를 동작하는 것이 아니라 HttpMessageConverter를 동작하고 객체를 요청본문으로 변환하는 작업을 진행합니다.
@Controller
public class MemberController{
@GetMapping("hello-api")
@ResponseBody
public Member JoinApi(@RequestBody Member member) {
return member;
}}
@RestController는 @Controller와 @ResponseBody 가 합쳐진 구조라 생각하면 됩니다.
@Controller대신 @RestController가 클래스에 붙어있다면 모든 메서드에 @ResponseBody가 붙어있다고 생각하면 됩니다.
@RestController
public class MemberController{
@GetMapping("hello-api")
public Member JoinApi(@RequestBody Member member) {
return member;
}}
String HttpMessageConverters
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}