목차
1. API란
2. HTTP API
3. REST API
API(Application Programming Interface)
애플리케이션에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
즉, 애플리케이션이 어떤 프로그램이 제공하는 기능을 사용할 수 있게 만든 매개체이다.
API는 컴퓨터나 소프트웨어를 서로 연결한다.
API의 한 가지 목적은 서버 시스템이 동작하는 방식에 관한 내부의 프로세스를 숨기는 것으로, 내부의 세세한 부분이 나중에 변경되더라도 프로그래머가 유용하게 사용할 수 있고 일정하게 관리할 수 있는 부분들만 노출시킨다.
HTTP를 사용하여 프로그램끼리 소통하는 API를 말한다.
대부분의 API는 HTTP라는 통신 규칙으로 소통하는 API이다.
HTTP를 사용하지 않는 API
저사양, 저전력 환경에 적합한 MQTT, CoAP 프로토콜 등이 있다.
API는 통신 프로토콜 레벨이 아닌, Class나 Function와 같은 소스코드 레벨이 될 수도 있다.
REST(Representational State Transfer)란 네트워크 아키텍처 스타일이다.
'네트워크 아키텍처 스타일'이란 네트워크 자원을 정의하고 처리하는 방법 전반을 일컫는다.
2000년도에 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개되었다.
로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워 하며 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다.
즉, REST는 HTTP를 잘 활용하기 위한 원칙이라고 할 수 있고 REST API는 이 원칙을 준수해 만든 API이다.
Representational State Transfer
: 자원의 표현으로 상태를 전달하는 것
HTTP METHOD(GET, POST, PUT, DELETE, PATCH, etc)
로 표현된다.GET /members/delete/1
위와 같은 방식은 REST를 제대로 적용하지 않은 URI이다.
URI는 자원을 표현하는데 중점을 두어야 한다. delete와 같은 행위에 대한 표현이 들어가서는 안된다.
DELETE /members/1
위의 잘못된 URI를 HTTP METHOD를 통해 수정하였다.
HTTP API와 REST API는 사실 거의 같은 의미로 사용되고 있다.
정확한 차이점으로는 REST API는 HTTP 프로토콜을 따르면서 아래의 4가지 가이드 원칙을 지켜야 한다.
이러한 제약 조건들을 완벽하게 지키면서 개발하는 것을 RESTful API라고 한다.
그러나 실무에서는 이런 방법으로 개발하는 것이 현실적으로 어렵고 구현하기 어렵다.
그러나 이미 많은 사람들이 이 조건들을 모두 지키지 않아도 REST API라고 하기 때문에 HTTP API와 같은 의미로 사용되고 있다.
정확한 REST API의 의미는 위 4가지 원칙을 모두 지키는 것임을 잊지말자.