Representational State Transfer의 약자로 전반적인 웹 어플리케이션에서 상호작용하는데 사용되는 웹 아키텍쳐 모델이다. 즉 자원을 주고 받는 웹 상에서의 통신 체계에 있어서 범용적인 스타일을 규정한 아키텍쳐라고 할 수 있다.
그럼, REST는 웹 상에서 서버와 클라이언트가 자원을 주고받는데 사용되는 아키텍처 모델이라고 할 수 있겠군
Application Programming Interface의 약자로 기존에 있는 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용하고자 할 때 사용하는 인터페이스 및 규격을 말한다. 따라서 REST API는 REST 아키텍처 기반으로 API를 설계한 것을 말하며 대부분의 서비스가 REST API를 말한다
그럼, API는 서버와 클라이언트가 자원을 주고 받는데 사용되는 인터페이스고 이를 구현할 때 REST 기반으로 구현한 API가 REST API군
HTTP의 특징과 비슷하게 서버는 클라이언트를 고려하지 않고 API 요청에 대해서만 처리한다.
REST의 자원 명세 규칙을 잘 치킨 API는 HTTP 메소드와 함께 그 자체로 의미를 지니기 때문에 요청 자체로 어떤의미를 지니는지 알아보기 쉽다.
REST는 HTTP 표준을 기반으로 만들어졌기 때문에 HTTP의 특징인 캐싱을 사용할 수 있다. 서버에서 GET
메소드에 대한 응답으로 헤더의 Last-Modified
속성을 명시해주면, 클라이언트는 데이터의 변화가 없을 때 캐싱된 값을 사용한다. ( 서버의 부하가 줄어들겠군? )
REST가 HTTP의 표준만 따른다면 어떠한 기술이던지 접목하여 사용할 수 있기 때문에 플랫폼이나 언어의 제약에 구애받지 않는다. 요즘은 REST API를 정의할 때 JSON을 많이 사용하지만 XML도 가능하다.
REST 서버가 API를 제공하는 방식이기 때문에 클라이언트와 독립적으로 동작한다. 따라서, 서로간의 의존성이 줄어들고 클라이언트와 서버를 최대한 독립적으로 개발할 수 있도록 도와준다.
클라이언트는 계층형 구조가 불가능하지만 REST 서버의 경우, 보안/로드 밸런싱/암호화 등을 추가할 수 있고 Proxy 및 게이트웨이 등의 중간매체를 사용할 수 있다.
URL 과 HTTP Method만 보고 어떤 요청을 하는지 알 수 있어야 해~
/students/1
/locations/seoul/schools/3
여기서 locations
는 Collections를 seoul
은 Document를 표현한다.
즉, 자원에 대한 명세는 URL에 명사를 사용해서 표현하고 행위는 HTTP Method를 이용한다.
요청에 대한 응답의 상태코드 또한 명확하게 들려주는 것이 잘 설계된 REST API이다.