항상 RESTful한 API를 개발해야지 하면서도
RESTful이 뭐냐고 물어보면 GET,POST....로 얼버무렸던 나....
나는 API 서버를 제대로 구현해 본 적이 있던가?
API의 주된 목적은 인터페이스 이다. 그렇다면 과연 인터페이스
가 뭘까?
인터페이스는 두 개의 시스템, 대상, 조직, 또는 그 박의 대상들이 만나도 상호작용하는 지점이다.
그렇다면 우리가 흔하게 부르는 API 특히, 웹 API
는 함수를 통해서 데이터를 입력하고, 또는 출력하는 피드백을 제공할 수 있어야 한다. 이러한 함수들은 애플리케이션끼리 정보를 검색, 전달하거나 특정한 작업을 유도할 수 있어야 한다.
요약
- 웹 API는 HTTP 프로토콜을 사용하여 소프트웨어를 재사용 가능한 블록으로 변화시켰다
API
는 애플리케이션을 개발자하는 개발자들이 여러분의 서비스를 소비할 수 있게 해주는 인터페이스- 퍼블릭 API이든 프라이빗 API이든 어떤 API를 만들더라도 API 디자인을 고려해야 한다
- 좋은 API를 디자인하기 위해서는 인터페이스 뿐만 아닌 모든 컨텍스트를 고려해야 한다.
REpresentational
State
Transfer
처음으로 돌아가보자...
어떻게 인터넷에서 정보를 공유하는 것인가?
A. 정보들을 하이퍼텍스트로 연결한다
REST API는?
- REST 아키텍쳐 스타일을 따르는 API
그렇다면 REST는?
REST
분산 하이퍼미디어 시스템(예: 웹)을 위한 아키텍쳐 스타일
클라이언트는 원하는 자원과 그 표현을 요청하고 서버는 표현을 선택해 전송한다. 서버는 자원이 아닌 자원의 표현을 응답으로 보낸다.
!! 여기서 HATEOAS를 짚고 넘어가자
HATEOAS(Hypermedia As the Engine Of Applacation State)란 무엇인가?
- 애플리케이션의 상태는 Hyperlink를 이용해 전이되어야한다
link의 href를 통해 애플리케이션 상태를 이동할 수 있다.
따라서 이 모든 REST 제약조건을 모두 만족을 해야 RESTful API이다.