Application Programming Interface(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.
💻 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다.
💡 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.💡
클라이언트는 웹에서 정보에 접근하려는 사용자이며, API를 사용하는 사람이거나 소프트웨어 시스템일 수 있다.
리소스는 애플리케이션이 클라이언트에게 제공하는 정보이다. 즉, http 요청의 대상이다. 리소스는 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터일 수 있다. 클라이언트에 리소스를 제공하는 시스템을 서버라고도 한다.
REST: 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻한다.
REST API 설계 시 가장 중요한 항목
1) Uniform (유니폼 인터페이스)
: URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일
2) Stateless (무상태성)
: 작업을 위한 상태 정보를 따로 저장하고 관리하지 않아서 API 서버는 들어오는 요청만을 단순히 처리하면 된다. ⇒ 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.
3) Cacheable (캐시 가능)
: HTTP라는 기존 웹표준을 그대로 사용하는 특징을 가지고 있어서 캐싱 기능을 적용하는 것이 가능하다.
4) Client - Server 구조
: REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트 (세션, 로그인 정보) 등을 직접 관리하는 구조로 각각의 역할이 확실히 구분된다. → 서로의 의존성이 줄어들게 된다.
5) 계층형 구조
: 다중 계층으로 구성될 수 있다.
⇒ 서버가 응답으로 주는건 representation data고, 리소스는 ‘환영의 의미를 담은 문서’를 말한다.
웹 애플리케이션의 상태의 변경은 representation의 transfer을 통해 이루어지는 것이 REST이고, REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.
https://aws.amazon.com/ko/what-is/restful-api/
https://dev-coco.tistory.com/97
https://blog.npcode.com/2017/04/03/rest의-representation이란-무엇인가/