01. 웹 API의 발전 과정
1. SOAP(Simple Object Access Protocol)이란?
SOAP이란 서로 다른 환경에서 실행되는 애플리케이션이 네트워크를 통해 정보를 교환할 수 있게 해주는 HTTP 기반의 통신 프로토콜을 의미한다. 이러한 SOAP는 Envelope, Header, Body 세 부분으로 구성되며, 각 부분은 XML 형식으로 구성되어 엄격한 구조와 명확한 명세를 가진다.
2. SOAP의 문제점
| SOAP의 문제점 | |
| 무겁고 제한된 데이터 형식 | 오직 XML 형식 만을 지원하여, 데이터 전송 양이 많아질 뿐만 아니라 네트워크의 속도 또한 저하됨 |
| 복잡한 명세 | 데이터를 주고 받는 규칙(WSDL)이 복잡하여, 개발자가 학습하고 구현하는데 오랜 시간이 걸림 |
| 하드웨어 자원 소모 | XML을 해석하는 과정에서 많은 CPU 자원과 메모리를 사용함 |
3. REST (Representational State Transfer)란?
REST란 웹 서비스 구조의 이름으로, 클라이언트 - 서버 웹의 본래 기능을 활용하자는 설계 원칙을 뜻한다.
| REST의 특징 | |
| 자유로운 형식 | XML 뿐만 아니라 JSON, Text, RSS 등 다양한 형식을 지원 |
| 무상태성 (Stateless) |
서버가 클라이언트의 상태를 기억하지 않으므로, 각 호출은 반복되는 정보와 문맥을 가져야 함 |
| 일관성 (Consistency) |
새로운 규칙을 만드는 대신 HTTP의 메서드와 상태 코드, 자원 중심 URL을 그대로 사용 |
| 확장성 (Scalability) |
자원 중심 설계이므로, 규칙을 준수한다면 쉽게 확장 가능 |
4. SOAP vs REST
| SOAP | REST | |
| 정의 | 프로토콜 (엄격한 규칙) | 아키텍처 스타일 (유연한 가이드라인) |
| 데이터 형식 | XML만 가능 | JOSN, XML, Text 등 다양한 형식 |
| 전송 효율 | 무겁고 느림 | 가볍고 빠름 |
| 보안성 | 매우 강력 | 기본 HTTP 보안에 의존 |
| 학습 곡선 | 높음 | 낮음 |
| 성공 사례 | 은행, 보험사 등 | 구글, 카카오 등 |
02. HTTP 요청의 흐름
@RestController에 들어온 클라이언트의 요청은 DispatcherServlet을 중심으로 처리된다.
| 전체 흐름 | 수행 주체 | |
| 요청 수신 | DispatcherServlet | 클라이언트의 HTTP 요청 수신 |
| 핸들러 매핑 | HandlerMapping | 해당 URL과 연결된 @RestController의 메서드를 찾아 전달 |
| 핸들러 어댑터 실행 | HandlerAdapter | 전달받은 컨트롤러의 해당 메서드를 실행 |
| 비지니스 로직 수행 | Controller → Service → Repository | 비지니스 로직 수행 및 데이터가 담긴 객체(DTO) 반환 |
| 응답 변환 | ReturnValueHandler | 해당 컨트롤러의 반환 값을 JSON으로 처리할 지 결정 |
| 메시지 컨버터 동작 | HttpMessageConverter | 자바 객체를 JSON 문자열로 변환 (직렬화) |
| 응답 전송 | DispatcherServlet | 변환된 JSON 데이터를 응답 바디에 담아 클라이언트에게 전송 |
'[Codeit] > Spring 백엔드 10기 위클리페이퍼' 카테고리의 다른 글
| [09] JPA의 N+1 문제, 그리고 트랜잭션의 ACID (0) | 2026.04.06 |
|---|---|
| [08] DDL과 DML, 그리고 역정규화 (0) | 2026.04.05 |
| [06] AOP와 MVC (0) | 2026.02.26 |
| [05] 웹 서버와 WAS, 그리고 Bean 등록 (0) | 2026.02.12 |
| [04] Spring Framework의 탄생 배경과 Java 라이브러리 (0) | 2026.02.05 |