REST API
웹의 장점을 최대한 활용한 아키텍처로, HTTP(S)에서 손 쉽게 구현. 특정 언어나 기술에 종속 되지 않음.
REST API 6가지 원칙
- Uniform interface
- 자원에 대한 식별이 가능해야함(고유해야 한다)
- HTTP method를 통해 자원을 조작해야함(ex. get을 통해 데이터 가져오기 등)
- Stateless
- HTTP 특징
- REST는 HTTP위에서 구현되기 때문에, REST 또한 무상태성을 가짐
- 클라이언트의 상태가 서버에 저장되지 않고, 각 요청에 대한 응답을 전송받는 것으로 요청 종료
- Cacheable
- REST는 HTTP 위에서 구현되기 때문에, HTTP 강력한 특징인 캐싱 기능을 활용할 수 있음
- 다양한 캐싱 전략에 따라, 서버의 부하를 감소시킬 수 있음
- 즉, 네트워크 리소스 및 인프라 리소스를 경감시킬 수 있음
- Self-Descriptiveness
REST API 단점
- overfetching
- 필요한 정보값보다 더 많은 정보값이 로딩될 수 있음(ex. 네이버 영화 API에서 사용하고자 하는 데이터는 한 개 이지만, response에 대한 조작이 불가능 하기 때문에, 모든 정보를 다 받아야 한다)
- underfetching
- 필요한 정보보다 부족한 정보 로딩으로 인해 추가 API 요청이 필요(ex. 영화 전반 정보를 모두 요청하고 싶으나, TMDB에 영화 상세 정보, 영화 배우 정보 등의 API로 분산되어 있어 추가 요청이 필요)
- Endpoint
- 서비스 규모가 커질수록 엔드포인트가 늘어나 관리하기 어려워짐(사용하는 URL의 엔드포인트가 많아질 수 있음)
- 서비스 pivot 및 업데이트로 기존 API 엔드포인트가 삭제되거나 변경될 경우, 클라이언트 or 업데이트 안 한 유저에게 문제가 생길 수 있음(이거 때문에 보통 API는 버전을 나눠서 관리)