[WeeklyPaper] SOAP→REST, RestController

Jerry·2025년 8월 18일

Q. 웹 API의 발전 과정에서 SOAP에서 REST로의 전환이 일어난 이유와 그 장단점에 대해 설명해주세요.

A.

SOAP에서 REST로의 전환 배경

  • SOAP는 엄격한 XML 기반 프로토콜로, 복잡한 구조와 무거운 메시지 포맷으로 인해 처리 오버헤드가 컸습니다.
  • 웹의 성장과 함께 더 가벼운 통신 방식의 필요성이 대두되었습니다.

REST의 장점

  • HTTP 프로토콜의 특성을 활용하여 별도의 프로토콜이 불필요합니다.
  • JSON 등 가벼운 데이터 포맷 사용으로 처리가 용이합니다.
  • 웹의 기존 인프라(캐시 등)를 활용할 수 있습니다.
  • 단순한 인터페이스로 인해 학습 곡선이 낮습니다.

REST의 한계

  • 표준화된 에러 처리 방식이 부재합니다.
  • 대규모 엔터프라이즈 환경에서 SOAP의 일부 기능(트랜잭션, 보안 등)을 구현하기 어렵습니다.
  • 모든 REST 제약조건을 완벽히 만족시키기 어렵습니다.

Q. Spring Boot에서 @RestController로 들어온 HTTP 요청이 처리되어 응답으로 변환되는 전체 과정을 설명해주세요. 특히 HTTP 메시지 컨버터가 동작하는 시점과 역할을 포함해서 설명해주세요.

A.

요청의 시작과 컨트롤러 매핑

클라이언트로부터 HTTP 요청이 들어오면 가장 먼저 DispatcherServlet이 이를 받습니다. DispatcherServlet은 프론트 컨트롤러로서 모든 웹 요청의 진입점 역할을 합니다. 이후 RequestMappingHandlerMapping을 사용하여 요청 URL과 HTTP 메서드를 기반으로 적절한 컨트롤러 메서드를 찾습니다. 이 과정에서 해당 요청을 처리할 수 있는 핸들러 어댑터가 선택되어 실제 컨트롤러 메서드 호출을 준비합니다.

요청 데이터의 변환 과정

컨트롤러 메서드가 선택된 후, 해당 메서드의 파라미터를 처리하는 과정이 시작됩니다. 특히 @RequestBody 어노테이션이 있는 경우, HTTP 메시지 컨버터가 동작하여 요청 본문을 Java 객체로 변환합니다. 이때 요청의 Content-Type 헤더를 확인하여 적절한 메시지 컨버터가 선택되는데, JSON 요청의 경우 일반적으로 MappingJackson2HttpMessageConverter가 사용됩니다. URL 경로 변수나 쿼리 파라미터도 이 시점에서 적절한 타입으로 변환되어 메서드 파라미터에 바인딩됩니다.

응답 생성과 변환

컨트롤러 메서드가 실행되어 비즈니스 로직을 처리한 후, 반환값이 생성됩니다. @RestController 어노테이션이 있거나 메서드에 @ResponseBody가 있는 경우, 반환된 객체는 뷰 리졸버를 거치지 않고 직접 HTTP 응답 본문으로 변환됩니다. 이때도 HTTP 메시지 컨버터가 동작하는데, 클라이언트의 Accept 헤더를 기반으로 적절한 메시지 컨버터가 선택됩니다. ResponseEntity를 사용하면 HTTP 상태 코드나 응답 헤더와 같은 세부적인 응답 제어가 가능합니다.

HTTP 메시지 컨버터의 역할

HTTP 메시지 컨버터는 요청과 응답 과정에서 핵심적인 역할을 수행합니다. 요청 시에는 HTTP 요청 본문을 Java 객체로 역직렬화하고, 응답 시에는 Java 객체를 HTTP 응답 본문으로 직렬화합니다. 특히 Spring Boot에서는 Jackson 라이브러리를 기본으로 사용하여 JSON 형식의 데이터를 처리합니다. 메시지 컨버터는 Content-Type과 Accept 헤더를 기반으로 자동으로 선택되며, @ResponseBody@RequestBody 어노테이션과 긴밀하게 연동되어 동작합니다.

profile
Backend engineer

0개의 댓글