본문 바로가기
IT/spring

스프링 HttpMessageConverter

by 뉴코딩맨 2023. 6. 30.
스프링 프레임워크(Spring Framework)에서는 HTTP 요청 및 응답의 데이터 변환을 처리하기 위해 HttpMessageConverter를 제공합니다. 이 기능을 통해 클라이언트와 서버 간에 다양한 데이터 형식으로 데이터를 주고받을 수 있습니다. 스프링의 HttpMessageConverter에 대해 자세히 알아보고, 예제를 통해 설명하겠습니다.

 

 
 

HttpMessageConverter란?

HttpMessageConverter는 스프링 MVC에서 요청(request) 및 응답(response)의 데이터 변환을 처리하는 인터페이스입니다. 클라이언트로부터 받은 요청 데이터를 서버에서 처리하기 위해 적절한 자바 객체로 변환하거나, 서버의 응답 데이터를 클라이언트가 이해할 수 있는 형식으로 변환하는 역할을 담당합니다. 스프링은 다양한 종류의 HttpMessageConverter를 제공하며, 각각의 데이터 형식에 맞게 데이터를 변환합니다.

 

HttpMessageConverter의 예시

다음은 JSON 형식의 데이터를 주고받는 예시를 보여줍니다.
 
@RestController
public class UserController {

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable("id") Long id) {
        // 사용자 정보를 데이터베이스에서 조회하여 반환
        User user = userService.getUser(id);
        return user;
    }

    @PostMapping("/users")
    public void createUser(@RequestBody User user) {
        // 클라이언트로부터 전달받은 JSON 데이터를 User 객체로 변환하여 처리
        userService.createUser(user);
    }
}
 
위의 예시에서 @RestController 어노테이션이 사용되었으며, @GetMapping과 @PostMapping 어노테이션을 통해 각각 GET과 POST 요청을 처리하는 핸들러 메소드가 정의되어 있습니다.
 
스프링은 기본적으로 JSON 형식의 데이터 변환을 위해 MappingJackson2HttpMessageConverter를 제공합니다. 따라서 클라이언트가 GET 요청을 보내면 getUser() 메소드에서 조회한 User 객체는 자동으로 JSON 형식으로 변환되어 응답으로 전달됩니다. 마찬가지로, 클라이언트가 POST 요청을 보내면 요청 본문의 JSON 데이터는 createUser() 메소드의 User 매개변수로 자동으로 변환됩니다.

 

 

 

다양한 HttpMessageConverter 활용하기

스프링은 JSON 이외에도 XML, 텍스트, 바이너리 등 다양한 데이터 형식을 처리할 수 있는 HttpMessageConverter를 제공합니다. 예를 들어, XML 형식의 데이터를 주고받기 위해서는 MappingJackson2XmlHttpMessageConverter를 사용할 수 있습니다. 또한, 스프링은 커스텀 HttpMessageConverter를 등록하여 특정한 데이터 형식을 처리할 수도 있습니다.
 

결론

스프링의 HttpMessageConverter는 스프링 MVC에서 HTTP 요청과 응답의 데이터 변환을 처리하는 핵심 기능입니다. 이를 통해 클라이언트와 서버 간에 다양한 형식의 데이터를 주고받을 수 있습니다. JSON을 포함한 다양한 데이터 형식을 지원하며, 필요에 따라 커스텀 HttpMessageConverter를 등록하여 데이터 변환을 추가할 수 있습니다.
 

'IT > spring' 카테고리의 다른 글

Spring JPA ORM (Object-Relational Mapping)  (0) 2023.07.01
Spring JPA  (0) 2023.06.30
스프링 Jackson 라이브러리  (0) 2023.06.30
스프링 LocaleResolver  (0) 2023.06.30
스프링 MessageSource  (0) 2023.06.30

댓글