위클리페이퍼7

BS8841·2025년 5월 26일

웹 API의 발전 과정에서 SOAP에서 REST로의 전환이 일어난 이유와 그 장단점

  1. 전환이 일어난 이유
  • SOAP는 XML의 무거움과 복잡성 때문에 개발과 유지보수가 어려움
  • REST는 HTTP의 기본 원칙을 따르며 JSON 사용 등으로 메시지를 경량화 할 수 있기 때문에 브라우저/모바일 앱 등 다양한 클라이언트에서 접근 용이
  • REST는 특정 기술 스택에 의존하지 않으며 다양한 데이터 포맷을 허용함
  • REST는 HTTP 메서드를 자연스럽게 사용하므로 이해 및 사용이 쉬움
  1. SOAP와 REST의 차이
항목SOAPREST
프로토콜자체 프로토콜(XML 기반)HTTP 기반
메시지 포맷XML만 지원JSON, XML, 기타
표준화 수준엄격한 스펙(WSDL, XSD 등)느슨한 설계 원칙
확장성보안/트랜잭션 등 내장필요 시 구현
사용 용도엔터프라이즈 시스템, 금융/보안 시스템모바일, 웹, 일반 API 서버
성능느림 (무거운 XML, 복잡한 파싱)빠름 (경량 JSON, 단순 구조)
  1. 장단점
  • 장점
    - 간결한 메시지
    • HTTP 기반으로 표준적인 통신 가능
    • 클라이언트-서버 구조 분리가 용이
    • 캐싱, 계층화된 시스템 적용이 가능
  • 단점
    • 보안, 트랜잭션 같은 고급 기능은 별도로 구현이 필요함

Spring Boot에서 @RestController로 들어온 HTTP 요청이 처리되어 응답으로 변환되는 전체 과정

  1. 요청에서 응답 처리 흐름 요약
    [Client]
    ↓ HTTP Request
    [DispatcherServlet] (Front Controller)

    [HandlerMapping] → @RestController의 메서드 매핑

    [HandlerAdapter] → 해당 Controller 실행

    [@RestController] → 비즈니스 로직 처리

    [HttpMessageConverter] → Java 객체 → JSON 응답 변환

    [DispatcherServlet]

    [Client] 응답

  2. HTTP Message Converter의 역할과 동작 시점

  • 요청
    @RequestBody 등으로 들어온 JSON 요청 데이터를 JAVA 객체로 변환할 때 사용
  • 응답
    @ResponseBody 또는 @RestController의 반환 객체를 JSON 등으로 변환할 때 사용
  • 변환 방식
    내부적으로 MappingJackson2HttpMessageConverter 등 사용
  • 동작 시점
    DispatcherServlet이 Controller 처리 후 응답을 만들 때 작동

MappingJackson2HttpMessageConverter 란?

  • Spring Framework에서 HTTP 요청/응답의 JSON 데이터를 자바 객체로 변환하거나 그 반대로 변환해주는 메시지 컨버터

  • 이름에서 알 수 있듯이 Jackson 2 라이브러리를 사용하여 JSON <-> Java 객체 간 매핑을 처리

  • @RestController, @ResponseBody, @RequestBody 같은 어노테이션이 붙은 메서드에서 자동으로 동작

  1. 예시
@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping("/{id}")
    public UserDto getUser(@PathVariable UUID id) {
        return userService.findById(id);
    }
}
  • 클라이언트가 /api/users/1로 GET 요청
  • DispatcherServlet → HandlerMapping이 UserController.getUser()를 찾음
  • HandlerAdapter가 메서드를 호출하여 Java 객체(UserDto) 반환
  • 반환 객체를 HttpMessageConverter가 JSON으로 변환
  • 응답으로 JSON 전달

HttpMessageConverter 란?

  • 스프링은 요청 본문(Request Body)과 응답 본문(Response Body)을 객체로 자동 변환하는 기능을 제공한다. 이를 HttpMessageConverter라 부르며, 일반적으로 JSON 변환에는 Jackson 라이브러리(Spring Web 스타터 의존성에 디폴트로 같이 제공됨)가 사용

0개의 댓글