본문 바로가기

Spring/Spring Web MVC

HttpMessageConverters

반응형

HttpMessageConverters

HttpMessageConverters는 스프링 프레임워크에서 제공하는 인터페이스이다.

HTTP 요청 본문을 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경할 때 사용한다. 사용하는 HttpmessageConverter는 여러가지가 있고, 우리가 어떤 요청을 받았는지, 응답을 보내는지에 따라서 메세지컨버터가 달라진다.

  • @RequestBody
  • @ResponseBody
    • 아래에서 User(객체)를 리턴할 때는 기본적으로 JsonMessageConverter가 사용이되고, String타입을 이턴할 때는 StringMessageConverter가 사용이 된다. int도 마찬가지로 StringMessageConverter이다.
    • @RestController면 @ResponseBody는 생략해도 된다.
      • MessageConverter를 타고 객체를 응답 본문으로 바꾼다.
    • 그냥 @Controller를 사용할 경우에는 @ResponseBody를 넣어야 MessageConverter가 적용이된다.
      • @Controller에서 @ResponseBody를 선언하지 않으면 BeanNameViewResolver에 의해서 ViewName에 해당하는 뷰를 찾으려고 시도한다.
@PostMapping("/user")
public @ResponseBody User create(@RequestBody User user) {
  ...
  return new User( ... );
}

출처: https://ict-nroo.tistory.com/98 [개발자의 기록습관]

@EnableWebMvc > DelegatingWebMvcConfiguration(@Configuration) > WebMvcConfigurationSupport

addDefaultHttpMessageConverters가 기본 컨버터들을 입력해줍니다. > HandlerAdapter가 사용함 > Argument를 Resolving할 때 사용함

현재 요청에 따른 컨버터를 선택해서 컨버전을 해주는 것

Json으로 올 경우 헤더에 컨텐츠 타입이 있음 > 컨텐츠 타입을 보고 Json을 컨버트 할 수 있는 컨버터를 사용해야겠다는 것을 알 수 있음 > jackson2Present... 기본 dependency임 > Spring starter web에 있음

반응형

'Spring > Spring Web MVC' 카테고리의 다른 글

Apache2와 httpd  (0) 2021.06.09
ResponseEntity란?  (0) 2021.03.28
URI 패턴  (1) 2021.03.03
Spring RestTemplate  (0) 2021.02.25
RESTful API  (0) 2021.02.25