반응형

REST API란?


WEB API(HTTP API)와 REST API의 구분


먼저 API는 Application Programming Interface의 약자로 ... 다 필요없고 java.sun.com에 있는 API문서를 보면 쉽게 알 수 있습니다. 만약 java에서 우리가 절대값을 어떻게 구해야 하는지 알고 싶다면 java API문서중 Math클래스의 abs()메서드를 사용하면 된다는 것을 알 수 있듯이 프로그래밍을 할 때 필요한 인터페이스를 API라고 합니다.


REST API는 핵심 컨텐츠 및 기능을 외부에서 활용할 수 있도록 제공되는 인터페이스를 뜻합니다. 웹 브라우저 뿐 아니라  다양한 클라이언트가 생기면서 대응하기 위해 REST API가 널리 사용되기 시작되었습니다. 

이런 REST API는 6가지 특징을 반드시 지켜야 합니다.


1. client - server

2. stateless

3. cache

4. uniform interface

5. layered system

6. code-on-demanad(optional)


위와 같은 내용을 반드시 지켜야만 REST하다고 말할 수 있습니다. HTTP프로토콜을 사용하면 client-server, stateless, cache, lared system, code-on-demand와 같은 경우는 쉽게 구현가능합니다. 하지만 uniform interface와 같은 경우는 약간 어렵습니다.

uniform interface는 다음과 같은 특징을 가집니다.

1. 리소스가 URI로 식별되야 한다.

2. 리소스를 생성, 수정, 추가할때 HTTP메시지에 표현을 해서 전송해야 한다.

3. 메세지는 스스로 설명할 수 있어야 한다.

4. 어플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.


1번과 2번같은 경우는 어려운 부분은 아니지만 3, 4번은 API로는 쉽지가 않습니다. 응답 결과에 보통 JSON을 사용하게 되는데, 이 JSON메세지가 어디에 전달되는지 그리고 JSON메세지를 구성하는 것이 어떤 의미를 표현해야만 메세지 스스로 설명할 수 있다고 말하는데, 말도 복잡하고 실제로도 어렵습니다.


4번과 같은 경우는 웹 페이지 자체에 링크가 있는 것을 말하는데 API에서 이러한 기능을 제공하는 것도 쉽지 않습니다.


이러한 uniform interface를 지원하는 것이 어렵기 때문에 많은 서비스가 REST에서 바라는 것을 모두 지원하지 않고 API를 만들게 됩니다. 즉, 일반적으로 REST의 특징을 모두 제공하지 않으면서 REST API로 불리는 것, REST의 특징 모두 제공하지 않으면서 Web API, HTTP API 두가지로 나누어 집니다. 

반응형

+ Recent posts