3. REST(ful) API
API?
- 응용 프로그램(한글, 인터넷 익스플로러 등)에서 운영체제나 프로그램 언어에서 제공하는 기능을 제어할 수 있도록 하는 '인터페이스(매개체)'
* 인터페이스?
- 상호 간의 소통을 위해 만들어진 매개체 → ex) 가게 점원
- 예를들어 데이터 베이스에서 데이터를 가져오기 위해선 MYSQL과 같은 데이터 베이스 관리 시스템을 설치 후 들어가 해당 문법을 맞는 명령어를 입력해야 한다
- 하지만, API를 활용하면 직접 sql문을 작성하지 않아도 API를 통해 인터넷 익스플로러 같은 응용 프로그램에서 데이터 베이스의 데이터 처리 기능을 활용할 수 있다
REST?
- 월드와이드웹과 같은 분산 하이퍼미디어 시스템에서 운영되는 소프트웨어 아키텍처스타일
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것으로 데이터 통신에 관한 아키텍처 스타일(규칙과 제약조건)
· 자원의 이름 → URI
* URI vs URL
- URL(Location) → 네트워크 상에서 리소스의 위치
- URI(Indentifier) → 네트워크 상에서 정보들의 유일한 이름이나 위치
· 자원의 상태 → 정보
REST의 구성
- 자원(Resource) → URI
- 행위(Verb) → HTTP Method
- 표현(Representations) → JSON, XML
REST의 특징
1. Server-Client(서버-클라이언트 구조)
- 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다.
2. Stateless (무상태)
- HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성을 갖는다
- 서버가 클라이언트의 상태를 보존하지 않는 것
- Server는 각각의 요청을 완전히 별개의 것으로 인식하고 처리
- Server의 처리 방식에 일관성을 부여하기 때문에 서비스의 자유도가 높아진다
3. Cacheable (캐시 처리 기능)
- HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있음
- 대량의 요청을 효율적으로 처리할 수 있다
4. Layered System (계층 구조)
- 클라이언트와 서버가 분리되어 있기 때문에 중간에 프록시 서버, 암호화 계층 등 중간매체를 사용할 수 있어 자유도가 높다
5. Uniform Interface (인터페이스 일관성)
- Resource에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일
6. Self-Descriptiveness
- 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조
REST(ful) API 란?
- REST의 특징을 기반으로 구현한 API
REST API시 중심 규칙
1. 자원은 URI로 직관적이고 명시적으로 표현해야 한다.
2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, PATCH, DELETE)로 표현한다.