Application Programming Interface의 줄임말이다.
즉, 응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스를 뜻한다.
API를 사용하면 내부 구현 로직을 알지 못해도 정의되어 있는 기능을 쉽게 사용할 수 있다.
💡 인터페이스: 어떤 장치간 정보를 교환하기 위한 수단이나 방법
대표적인 예시) 마우스, 키보드, 터치패드 등
REST는 Representational State Transfer의 줄임말로, 자원의 이름으로 구분하여 해당 자원의 상태를 교환하는 것을 의미한다.
REST는 서버와 클라이언트의 통신 방식 중 하나이며, 규약이라기보단 아키텍처에 가깝다. HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고 HTTP Method(Create, Read, Update, Delete)를 통해 자원을 교환하는 것이다.
자원이 있는 쪽이 Server, 요청하는 쪽이 Client이다. 클라이언트와 서버가 독립적으로 분리되어 있어야 한다.
🤔 여기서 말하는 독립이란?
하드웨어적인 독립도 독립이겠지만, 자원을 공유하는 교집합이 없어야한다는 의미이다. 즉, 서버와 클라이언트 각각 별도의 DB를 두어 서로 침범하지 않게끔 해줘야한다.
요청 간에 클라이언트 정보가 서버에 저장되지 않는다. 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.
HTTP 프로토콜을 그대로 사용하기 때문에 HTTP의 특징인 캐싱 기능을 적용하여 대량의 요청을 효율적으로 처리할 수 있다. 즉, 똑같은 요청이라면 동일한 결과물을 줄 수 있게끔 별도의 로직을 돌리지 않고 캐싱을 한다.
클라이언트는 서버의 구성과 상관 없이 REST API 서버로 요청한다. 여기서 서버는 다중 계층으로 구성될 수 있다. (로드밸런싱, 보안 요소, 캐시 등)
자바스크립트 영역에서 자주 사용된다. 자바를 쓴다면 거의 사용되지 않을 특징
요청을 받으면 서버에서 클라이언트로 코드 또는 스크립트(로직)을 전달하여 클라이언트의 기능을 확장한다.
정보가 표준 형식으로 전송되기 위해 구성 요소간 통합 인터페이스를 제공한다. HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능하게끔 설계한다.
REST 아키텍처의 조건을 준수하는 어플리케이션 프로그래밍 인터페이스를 뜻한다. 최근 많은 API가 REST API로 제공되고 있고, 일반적으로 REST 아키텍처를 구현하는 웹 서비스를 RESTful 하다고 표현한다.
Ex) https://thinkground.studio/member/589
URI에 행위가 들어가면 안 된다. HEADER를 통해 CRUD를 표현하여 동작을 요청해야한다.
HEADER를 통해 content-type을 지정하여 데이터를 전달해야한다. 대표적 형식으로는 HTML, XML, JSON, TEXT가 있다.
참고
어라운드허브 스튜디오