API란?
Application Programming Interface(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.
개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다.
웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.
- 클라이언트 : 웹에서 정보에 엑세스하려는 사용자
- 리소스 : 다양한 애플리케이션이 클라이언트에게 제공하는 정보
REST란?
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.
REST는 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌으며, REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있다. 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.
REST는 HTTP 프로토콜을 통해 API를 설계하기 위한 아키텍쳐 스타일이다.
- HTTP URI를 통해 지원을 명시하고,
- HTTP Method를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있다.
- REST API : REST 아키텍처 스타일을 따르는 API
- RESTful 웹 서비스 : REST 아키텍처를 구현한 웹 서비스
- RESTful API : RESTful 웹 API를 나타낸다. REST API와 같은 의미로 사용할 수 있다.
REST의 특징
- Server-Client(서버-클라이언트 구조)
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Uniform Interface(인터페이스 일관성)
- Code on demand
REST API의 장점
- HTTP 프로토콜의 인프라를 사용하기 때문에 별도의 인프라를 구축할 필요가 없다.
- HTTP 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- Hypermedia API의 기본을 지키며 범용성을 보장한다.
- REST API 메시지가 의도하는 바를 쉽게 파악할 수 있다.(자기 서술적 메시지)
REST API의 단점
- 표준이 존재하지 않아 정의가 필요하다.
- HTTP Method 형태가 제한적이다.
- Header를 조작하기 위한 전문성이 요구된다.
- 일부 구형 브라우저 완벽 호환 X
REST API 설계 예시
- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
- 마지막에 슬래시(/)를 포함하지 않는다.
- 언더바(_)대신 하이픈(-)을 사용한다.
- 파일확장자는 URI에 포함하지 않는다.
- 행위를 포함하지 않는다.
Reference
RESTful API란 무엇입니까?
[네트워크] REST API란? REST, RESTful이란?
REST