[Web] REST API


  • API : Application Programming Interface
  응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스. 주로 파일제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. 
  • REST API
REST는 REpresentational State Transfer 이라는 용어의 약자로서 2000년도에 로이 필딩의 논문에서 최초로 등장하였다. REST API란 핵심 컨텐츠 및 기능을 외부 사이트에서 활용할 수 있도록 제공되는 인터페이스이다. 쉬운 예를 들어, 네이버에서 블로그에 글을 저장하거나, 글 목록을 읽어갈 수 있도록 외부에 기능을 제공하거나 우체국에서 우편번호를 조회할 수 있는 기능을 제공하거나 구글에서 구글 지도를 사용할 수 있도록 제공하는 것들을 말한다. 
  웹 브라우저 뿐만 아니라 앱 등 다양한 클라이언트가 등장하면서 그러한 클라이언트들에 대응하기 위해 REST API가 널리 이용되기 시작했다. 서비스 업체들이 다양한 REST API를 제공함에따라, 클라이언트는 이러한 API들을 조합한 어플리케이션을 만들 수 있게 되었고 이를 Mahsup(매시업) 이라고 한다.
  • REST API의 조건
    • client-server
    • stateless
    • cache
    • uniform interface
    • layered system
    • code-on-demand(optional)
여기서 스타일이란 제약조건의 집합을 의미한다. HTTP 프로토콜을 사용한다면 나머지 조건은 쉽게 구현 가능하다. 하지만 uniform interface에 대해서는 어려움이 있다. uniform interface가 되기 위해서는,
    • 리소스가 URI로 식별될 것
    • 리소스를 생성, 수정, 추가하고자 할 때 HTTP메시지로 전송할 것
    • 메시지는 스스로 설명 할 수 있어야 한다 (self-descriptive message)
    • application의 상태는 Hyperlink를 이용해 전이되어야 한다. 
이 중 세번째와 네번째 조건이 웹과는 다르게 API로 쉽지 않은 부분이다. 
  보통 응답결과에는 JSON메시지를 사용하게 되는데, 이 JSON메시지가 어디에 전달되는지 그리고 JSON메시지를 구성하는 것이 어떤 의미를 표현해야만 self-descriptive message 라고 할 수 있는데 쉽지가 않다. 
그렇기 때문에 많은 서비스가 REST가 바라는 것을 모두 지키지 않고 Web API(혹은 HTTP API)를 사용한다. REST의 모든 것을 제공하지 않으면서 REST API라고 하는 경우도 있고 혹은 Web API/HTTP API 라고 부르는 경우도 있다.





No comments:

Powered by Blogger.