[Spring] HTTP Message Converter

wujin·2024년 7월 23일
post-thumbnail

HTTP 메시지 컨버터 (HTTP Message Converter)

  • HTTP Request와 Response를 변환하는데 사용되는 컴포넌트
  • 다양한 데이터 형식 간의 변환(직렬화, 역직렬화)을 자동으로 처리
  • HTTP 메시지 컨버터는 요청 본문(request body)을 객체로 변환하거나, 객체를 응답 본문(response body)으로 반환

1. 개념

  • 요청 메시지 컨버터 (Request Message Converter)
    • 클라이언트가 전송한 HTTP 요청의 본문을 자바 객체로 변환
    • 예를 들어, JSON 형식이 요청 본문을 자바 클래스의 객체로 변환
  • 응답 메시지 컨버터 (Response Message Converter)
    • 자바 객체를 HTTP 응답의 본문으로 변환
    • 예를 들어, 자바 객체를 JSON 형식으로 변환하여 클라이언트에게 전송

2. Spring에서의 메시지 컨버터

Spring Framework에서 메시지 컨버터는 주로 HttpMessageConverter 인터페이스를 구현하여 사용된다. Spring MVC는 요청과 응답의 데이터 변환을 위해 이 컨버터를 자동으로 관리한다.

  • MappingJackson2HttpMessageConverter
    • JSON 데이터를 객체로 변환하거나, 객체를 JSON으로 변환
  • XmlMapperHttpMessageConverter
    • XML 데이터를 객체로 변환하거나, 객체를 XML로 변환
  • StringHttpMessageConverter
    • 문자열 데이터 처리
  • FormHttpMessageConverter
    • 폼 데이터(application/x-www-form-urlencoded)를 객체로 변환

3. Spring MVC 구조에서 HTTP 메시지 컨버터의 실행 위치

  1. 요청 수신
    • 클라이언트로부터 HTTP 요청이 디스패처 서블릿에 도달
  1. 핸들러 매핑
    • 디스패처 서블릿은 요청 URL을 기반으로 적절한 핸들러(컨트롤러)를 조회
  1. 핸들러 어댑터 실행
    • 핸들러 매핑이 성공하면, 디스패처 서블릿은 핸들러 어댑터에게 요청 처리를 위임
    • 핸들러 어댑터는 핸들러(컨트롤러)를 호출하여 실제로 요청을 처리
  1. 요청 본문 변환
    • 핸들러 어댑터는 컨트롤러 메서드의 파라미터에 @RequestBody가 붙어있는 경우, 요청 본문을 적절한 자바 객체로 변환하기 위해 메시지 컨버터를 사용
    • 이 과정에서 HttpMessageConverter가 실행
  1. 컨트롤러 실행
    • 변형된 자바 객체가 컨트롤러 메서드의 파라미터로 전달되고, 컨트롤러 메서드 실행
  1. 응답 본문 변환
    • 컨트롤러 메서드가 값을 반환하면, 핸들러 어댑터는 반환 값을 HTTP 응답 본문으로 변환하기 위해 메시지 컨버터를 다시 사용
    • 이 과정에서 응답 객체는 적절한 형식(JSON, XML 등)으로 변환
  1. 응답 전송
    • 변환된 응답 본문은 디스패처 서블릿을 통해 클라이언트에게 전송

0개의 댓글