핵심 인사이트
- 본질: RESTful API는 HTTP 프로토콜의 GET/POST/PUT/DELETE 메서드와 URI로 자원(Resource)을 표현하고, 무상태성(Stateless), 클라이언트-서버 분리, 캐시 가능성 등 REST 6가지 제약 조건을 따르는 API 설계 스타일이다.
- 가치: SOAP 대비 경량(JSON 기반), 구현 간결성, 다양한 클라이언트(웹·앱·IoT) 지원이 장점으로 현대 API 설계의 사실상 표준이다.
- 판단 포인트: HATEOAS (Hypermedia As The Engine Of Application State)는 REST의 마지막 성숙도 단계로, API 응답에 다음 가능한 액션의 링크를 포함하여 클라이언트가 API 문서 없이도 탐색 가능하게 한다. Richardson Maturity Model Level 3에 해당한다.
Ⅰ. 개요 및 필요성
REST (Representational State Transfer)는 로이 필딩(Roy Fielding)이 2000년 박사 논문에서 제안한 아키텍처 스타일이다. 무상태성(Stateless)은 각 요청이 독립적이며 서버가 클라이언트 상태를 저장하지 않음을 의미한다.
📢 섹션 요약 비유: REST는 도서관 대출 시스템이다. 책(자원)을 빌리고(GET), 반납하고(DELETE), 예약하는(POST) 각 행위가 명확히 분리되어 있다.
Ⅱ. 아키텍처 및 핵심 원리
┌────────────────────────────────────────────────┐
│ Richardson Maturity Model (REST 성숙도) │
│ Level 0: HTTP 터널 (SOAP over HTTP) │
│ Level 1: 자원(Resource) URI 사용 │
│ Level 2: HTTP 메서드(GET/POST/PUT/DELETE)사용 │
│ Level 3: HATEOAS (링크 기반 탐색) │
└────────────────────────────────────────────────┘
| HTTP 메서드 | CRUD | 의미 |
|---|---|---|
| GET | Read | 자원 조회 |
| POST | Create | 자원 생성 |
| PUT/PATCH | Update | 자원 수정 |
| DELETE | Delete | 자원 삭제 |
📢 섹션 요약 비유: HATEOAS는 앱의 내비게이션 메뉴다. API 응답에 다음에 갈 수 있는 곳이 링크로 포함된다.
Ⅲ. 비교 및 연결
| 구분 | REST | GraphQL |
|---|---|---|
| 쿼리 방식 | 엔드포인트별 고정 | 단일 엔드포인트 유연 쿼리 |
| 과다/과소 페치 | 발생 가능 | 최적화 가능 |
| 학습 곡선 | 낮음 | 높음 |
📢 섹션 요약 비유: REST vs GraphQL은 뷔페 vs 코스 메뉴다. REST는 정해진 메뉴(엔드포인트), GraphQL은 원하는 것만 골라 먹을 수 있다.
Ⅳ. 실무 적용 및 기술사 판단
OAuth 2.0 + RESTful API로 소셜 로그인(Google, Kakao)을 구현할 때 Authorization Code Flow, 토큰 갱신, CORS 설정이 핵심 고려사항이다.
기술사 시험에서 이 개념의 정의·구성·비교·기대효과를 논하는 문제가 출제된다.
📢 섹션 요약 비유: RESTful API는 웹의 공통 언어다. 어떤 클라이언트(웹, 앱, IoT)와도 같은 방식으로 대화할 수 있다.
Ⅴ. 기대효과 및 결론
RESTful API 설계로 클라이언트-서버 분리(프론트/백엔드 독립 개발), API 버전 관리, 수평 확장(무상태성 덕분에 로드 밸런서 투명 스케일링)이 달성된다.
📢 섹션 요약 비유: REST는 음식점 주문 시스템이다. 주문(POST), 주문 확인(GET), 취소(DELETE)가 각각 명확하다.
📌 관련 개념 맵
| 개념 | 설명 | 연관 키워드 |
|---|---|---|
| SOAP | REST 이전 XML 기반 API | 무거움 |
| GraphQL | REST 대안 유연 쿼리 | Facebook 개발 |
| OpenAPI | REST API 명세 표준 | Swagger |
👶 어린이를 위한 3줄 비유 설명
- RESTful API는 인터넷에서 프로그램끼리 대화하는 표준 규칙이에요. 택배 주문(POST), 배송 조회(GET), 취소(DELETE)처럼요.
- 무상태성은 서버가 이전에 뭘 했는지 기억하지 않아서, 어떤 서버에게 요청해도 동일한 응답을 받는 거예요.
- 현재 거의 모든 앱과 웹서비스가 RESTful API로 서로 소통해요.