API
Application Programming Interface
- 응용 프로그램 (애플리케이션)에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말한다.
- 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
API를 레스토랑에 빗대어 표현하자.
- 손님(애플리케이션)이 자리에 앉아 웨이터(API)에게 주문을 한다. 웨이터는 주문 내역을 주방(API 제공자)에게 가져다 준다. 주방에서 요리를 해 웨이터에게 주면 웨이터가 손님에게 음식을 가져다준다.
- 웨이터(API)가 손님의 주문을 주방으로 전달하는 매개체 역할을 하는 것이다.
- 이때 손님은 주방에서 무슨 일이 일어나는지 잘 모르고 관심이 없을 것이다. 내가 쓰려는 API의 기능이 어떻게 구현하는지 몰라도 되고 그저 사용하면 된다.
- API는 외부 데이터에 접근하고 시스템과 상호작용할 수 있게 해준다.
REST
Representational State Transfer
REST 개념
자원을 고유한 이름으로 구분하여 해당 자원의 상태 및 정보를 주고 받는 모든 것
- 자원은 소프트웨어가 관리하는 모든 것을 말한다. (문서, 그림, 데이터, 소프트웨어 자체 등)
- 자원을 표현하기 위해 고유한 이름이나 ID를 붙인다
- 자원이 요청되면 자원의 상태/정보를 전달한다.
REST 구성요소
- 자원 (Resource): URI
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
- 자원을 구별하는 ID는
/groups/:group_id
와 같은 URI이다.
- Client는 URI를 이용해서 자원을 지정하고 해당 자원에 대한 행위을 Server에 요청한다.
- 행위 (Verb): HTTP Method (자원에 대한 행위)
- HTTP 프로토콜의 Method를 사용한다.
- HTTP 프로토콜은 GET, POST, PUT, DELETE 등의 메서드를 제공한다.
- CRUD Operation
- Create : 생성(POST)
- Read: 조회(GET)
- Update : 수정(PUT)
- Delete : 삭제(DELETE)
- 표현 (Representation of Resource)
- Client가 자원에 대한 행위을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
- 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 나타낼 수 있다. JSON 형식의 데이터를 주고 받는 것이 일반적이다.
REST API
- REST의 원리를 따르는 API
- 최근 OpenAPI (누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스 (하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.
참고: [Network] REST란? REST API란? RESTful이란