WEB

[WEB] HTTP API, REST API, RESTful API

steadyMan 2022. 8. 17. 23:35

HTTP API, REST API, RESTful API 무언가 비슷해 보이는 이 세 개의 API의 차이점에 대해 

어렴풋이 인지 하고 있지만 개념적으로 정리가 필요하여 정리 글을 작성합니다.

API(Application Programming Interface)


지도 API, 날씨정보 API, 카카오 API 등등 여러 API에서 제공하는 기능을 자주 사용하는데 API란 뭘까?

애플리케이션(응용프로그램)에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다 - 위키백과-

즉 사용하는 쪽과 제공하는 쪽 사이에서 상호작용을 도와주는 매개체라고 생각된다. 

마치 손님과 주방장 사이의 웨이터와 같다고 생각하면 된다.

HTTP API


HTTP 프로토콜을 통신방식으로 사용하여 서로 정해둔 스펙으로 데이터를 주고 받으며 통신하는 API를

HTTP API라 한다. 즉 사용자는 HTTP 통신을 통해 원하는 정보 혹은 기능을 제공받는다.

Rest


REST는 Representational State Transfer의 약자로 로이필딩에 의해 만들어졌는데  HTTP의 장점을 최대한 활용하는 걸 목적으로 응용 프로그램 사이의 결합도를 낮추게끔 설계하는 아키텍처이다.

자원을 HTTP URI을 통해 명시하고 HTTP Method(GET, POST, PUT, DELETE)를 통해 자원에 대한 CRUD를 적용하는 아키텍처를 의미합니다. 

즉 모든 자원에 HTTP URI를 부여하고 HTTP Method를 통해 자원을 관리하는 개념으로 생각하면된다.

Rest API


HTTP API와 Rest API 거의 같은 의미로 사용되는데 HTTP API에 REST의 특징들이 포함되어있다면

REST API라 볼 수 있다.

REST 인터페이스의 원칙에는 다음 4가지 제약조건이 있는데 이를 모두 만족해야 REST 하다고 할 수 있다. 

- 자원의 식별

- 메시지를 통한 리소스 조작

- 자기 서술적 메서지

- 애플리케이션의 상태에 대한 엔진으로써 하이퍼미디어

주로 JSON 데이터가 사용된다.

 

제약조건들이 완벽하게 지켜지면서 개발되는 것을 RESTful API 라고API라고 하는데 해당 조건을 지키지 않아도 REST API라고 하기 때문에 거의 같은 의미로서 사용되고 있다. 


 

URI 설계에 있어 리소스 식별이 가장 중요하다. 좋은 URI 설계개념이 있기 때문에

다음에는 Rest 한 URI 설계에 대해서 정리하자!