API(Application Programming Interface)
두 개 이상의 프로그램(소프트웨어 시스템)이 통신하기 위해 따라야 하는 규칙
브라우저의 Web API, fetch, setTimeout등의 함수들 또한 브라우저의 해당 기능들을 부르는 API이다.
호출할 수 있는 API의 명세가 기록된 문서를 API spec.이라고 한다.
REST
존재하는 모든 자원(이미지, 동영상, 텍스트 등 데이터)에 고유한 URI를 부여하여 해당 자원에 대한 주소를 부여하는 것으로 웹 서비스를 만드는데 사용되는 제약(constraint)의 모음이라고 생각하면 된다.
API 디자인에 있어서 HTTP 프로토콜을 의도에 맞게 사용하도록 정의된 아키텍쳐 스타일로 설계시 고려해야 하는 중요한 항목 두 가지는
자원 (Resource) : URI
- REST에서 정보의 가장 핵심적인 추상화는 Resource이다.
행위 (Verb) : HTTP 메서드
표현 (Representations)
참고로 URI는 URL에 대한 상위 개념으로, URI(Uniform Resource Identifier)가 URL(Uniform Resource Locator)을 포함한다.
REST API(RESTful API)
웹 생태계에서 사용되는 API (REST: REpresentational State Transfer)
웹 데이터 전송 방식 중 하나
API의 엔드포인트 구조를 구현하는 방식
HTTP 프로토콜에서 제공하는 기본 method들(GET, POST, PUT, DELETE)을 사용해서 두 머신이 네트워크를 통해 데이터를 주고 받는 방식이다.
REST 방식을 구현하는 웹 서비스를 RESTful한 웹 서비스라고 한다.(그래서 제약들을 모두 만족해서 만들면 RESTful하다 고 한다)
API에서 전송하는 자원(resource)을 URI로 표현하고 해당 자원에 행하고자 하는 의도를 HTTP메소드로 정의 각 엔드포인트는 리소스를 표현하는 고유의 URI 주소를 가지고 있으며, 해당 리소스에 행할 수 있는 행위를 표현하는 HTTP메소드를 처리할 수 있게 된다.
이 모든 일련의 과정을 'RESTful API방식으로 웹 데이터가 전송된다'고 표현한다.
3 단계로 이루어진 REST API 구현 성숙도를 뜻한다.
단계가 높을 수록 RESTful하다 고 하며 성숙도가 높다는 것은 사용하는 개발자의 사용성(Usability)이 높다는 의미이기도 하다.
다만 성숙도가 반드시 높을 필요는 없으며 연구 결과에 따르면 level2까지만 구현해도 충분하다고 한다.