REST API (Representational State Transfer API)
REST API는 웹의 장점을 최대한 활용할 수 있는 네트워크 아키텍처 스타일인 REST를 따르는 인터페이스를 의미합니다. 단순히 데이터를 주고받는 것을 넘어, 자원(Resource)을 이름으로 구분하고 그 자원의 상태를 주고받는 방식입니다.
1. REST API의 3요소
REST API는 크게 세 가지 구성 요소로 이루어집니다.
- 자원 (Resource) - URI: 모든 자원은 고유한 ID인 URI(Uniform Resource Identifier)를 가집니다.
- 예:
/users/123(ID가 123인 사용자)
- 예:
- 행위 (Verb) - HTTP 메서드: 자원에 대해 수행할 작업을 HTTP 메서드로 표현합니다.
- GET: 조회 (Read)
- POST: 생성 (Create)
- PUT/PATCH: 수정 (Update)
- DELETE: 삭제 (Delete)
- 표현 (Representation): 서버가 클라이언트에게 보내는 데이터의 형식입니다. 주로 JSON이나 XML을 사용합니다.
2. REST의 주요 특징
- 무상태성 (Stateless): 서버는 클라이언트의 상태(세션 등)를 별도로 저장하지 않습니다. 각 요청은 필요한 모든 정보를 담고 있어야 합니다.
- 캐시 가능 (Cacheable): HTTP의 기존 캐싱 기능을 그대로 활용할 수 있어 대량의 트래픽을 효율적으로 처리합니다.
- 계층화 구조 (Layered System): 클라이언트는 대상 서버에 직접 연결되었는지, 중간 매개체(프록시, 로드밸런싱 등)와 연결되었는지 알 수 없습니다.
- 인터페이스 일관성 (Uniform Interface): 아키텍처를 단순화시키고 분리하여, 서비스가 독립적으로 발전할 수 있게 합니다.
3. RESTful한 설계란?
단순히 REST를 사용하는 것을 넘어, REST의 원칙을 제대로 지킨 API를 RESTful하다고 합니다.
* 잘못된 예: GET /get_user_info/123 (동사를 URI에 포함)
* RESTful한 예: GET /users/123 (명사로 자원을 식별하고 메서드로 행위를 표현)