✅ REST API는 다음과 같은 약자
REST = Representational State Transfer
API = Application Programming Interface
✅ 전체 풀네임
REST API = Representational State Transfer 기반의 Application Programming Interface
✅ 용어 의미 요약
| 구성 | 의미 |
|---|---|
| Representational | 리소스(데이터)를 표현(Representation) 형태로 전달 (JSON, XML 등) |
| State | 클라이언트가 리소스의 상태(state)를 주고받음 |
| Transfer | 상태 정보를 HTTP를 통해 전송함 |
| API | 애플리케이션 간 명확한 인터페이스(통신 규칙)를 제공 |
✅ REST API의 핵심 특징
- HTTP 기반
- URL로 리소스 식별
GET,POST,PUT,DELETE같은 표준 메서드 사용- 무상태성 (Stateless)
- 클라이언트-서버 구조
REST vs SOAP vs GraphQL의 기술 철학, 구조, 사용 사례, 장단점
✅ REST vs SOAP vs GraphQL 비교표
| 항목 | REST | SOAP | GraphQL |
|---|---|---|---|
| 약자 | Representational State Transfer | Simple Object Access Protocol | Graph Query Language |
| 기반 프로토콜 | ✅ HTTP | ✅ HTTP, SMTP, FTP 등 | ✅ HTTP (주로 POST) |
| 데이터 포맷 | JSON, XML 등 (유연) | XML (고정) | JSON |
| 메시지 구조 | 리소스(URL) 기반 + HTTP 메서드 (GET, POST 등) | 명시적 XML 엔벨로프 구조 | 단일 Endpoint + 명시적 쿼리 문법 |
| 엔드포인트 구조 | 다수의 URL (리소스별) | 하나 또는 다수 (동작별) | 단일 Endpoint 사용 |
| 요청 방식 | HTTP 메서드로 정의 (GET, PUT 등) | XML 기반 고정 구조 | 클라이언트가 쿼리 작성 |
| 표준/계약 기반 | 비공식 (관습적 설계) | 공식 WSDL 계약 기반 | 스키마(GraphQL SDL) 명시 |
| 오버페칭/언더페칭 | ❌ 종종 발생 (필요 없는 필드 포함 등) | ❌ 정적 구조 → 유연성 낮음 | ✅ 클라이언트가 필요한 필드만 요청 |
| 무상태성(Stateless) | ✅ 기본 전제 | 🔄 가능하지만 상태 유지 지원도 있음 | ✅ 기본적으로 무상태 |
| 에러 처리 | HTTP 상태코드 기반 | SOAP Fault 구조 | 응답 내 에러 블록 포함 |
| 보안 | HTTPS, OAuth 등 외부 기술 조합 | ✅ WS-Security 내장 | HTTPS, 인증은 외부 처리 |
| 성능 | 보통 (설계에 따라 달라짐) | 느림 (XML 파싱 오버헤드) | 빠름 (필요 데이터만 전송) |
| 사용 예시 | 대부분의 웹 API (RESTful API) | 금융, 공공기관, 레거시 시스템 | 모바일/SPA, Facebook, GitHub API 등 |
| 학습 곡선 | 낮음 (직관적) | 높음 (복잡한 스펙) | 중간~높음 (스키마 설계 필요) |
✅ 요약 정리
| 구분 | REST | SOAP | GraphQL |
|---|---|---|---|
| 유연성 | ⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐ |
| 표준화 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 확장성 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| 모바일/프론트엔드 적합성 | ⭐⭐ | ⭐ | ⭐⭐⭐⭐ |
| 레거시/기업 시스템 적합성 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
✅ 추천 사용처
- REST: 범용적인 웹 API, 간단한 CRUD 서비스, 공개 API
- SOAP: 보안이 중요한 금융/정부 시스템, 레거시 시스템 통합
- GraphQL: 프론트엔드 유연성/효율성 중시하는 앱, 복잡한 데이터 요구가 있는 SPA
'Study > 디지털서비스' 카테고리의 다른 글
| 하베스트 Harvest (2) | 2025.05.01 |
|---|---|
| URI URL URN (0) | 2025.05.01 |
| 쿠버네티스 kubernates (1) | 2025.05.01 |
| 전가상화 반가상화 virtualization (0) | 2025.05.01 |
| 마이페이먼트, MyPayment (0) | 2025.05.01 |