본문 바로가기

IT 기술/용어 및 개념

REST API

반응형

REST(REpresentational State Transfer)는 Web을 보다 효율적으로 사용하기 위해 Roy Fielding이 2000년에 그의 박사학위 논문에서 제안한 소프트웨어 아키텍쳐 스타일입니다. REST의 가장 큰 특징은 ROA(Resource Oriented Architecture)로 텍스트, 이미지, 동영상 등을 모두 하나의 자원으로 규정하여 각 자원에 고유한 URI(UniformResource Identifier)를 부여하여, 자원에 대한 CRUD(Create, Read, Update, Delete)를 각각 HTTP의 메서드(POST, GET, PUT, DELETE)를 이용해서 처리하는 것입니다. REST는 오늘날 Open API를 만드는데 널리 사용되고 있습니다. RESTful API를 설계할 때 사용하는 기본적인 Content type은 XML, JSON이 있습니다. 

 

REST는 Resource, Method, Message 3가지 요소로 구성됩니다. 예를 들어서, "이름이 Money인 DB table을 삭제하라"라는 호출이 있을 때, Resource는 DB table, Method는 삭제하라, Message는 이름이 Meney인 DB table이 됩니다. 이를 RESTful로 표현하면 다음과 같습니다.

 

HTTP DELETE, http://homepage/dbtable/Money/

 

'HTTP DELETE, http://homepage/dbtable/Money'는 resource를 URI형태로 표현한 것이고 DELETE는 method가 됩니다.

 

REST의 가장 큰 장점은 HTTP를 사용하는 어떠한 플랫폼에도 적용이 가능하고, Content 표현은 XML 혹은 JSON을 사용하기 때문에 특정 언어에 종속적이지 않기 때문에 범용으로 사용이 가능하다는 것입니다. 이러한 특징을 Uniform Interface라고 합니다. REST로 API를 제공하게 되면 당연히 Client-Server 구조를 갖게 됩니다. 이 때 REST Server는 API제공 및 API를 이용한 로직 처리와 저장을 합니다. REST Client는 사용자 인증 및 세션 정보등을 직접 관리합니다. 이러한 특징을 Stateless라 하는데, Client context를 서버에 저장하지 않는다는 의미입니다. 이렇게 Client의 상태정보를 저장하지 않으면 Server는 Client를 신경쓸 필요가 없어지고 API call만 처리해주면 되기 때문에 구현이 단순해진다는 장점이 있습니다. 마지막으로 소개할 REST의 특징은 Cache 사용이 가능하다는 것입니다. HTTP resource들을 caching하게 되면, 반복되는 api call에 대해 빠르게 수행이 가능해집니다. Cache는 HTTP의 Last-Modified 또는 E-Tag를 사용해서 구현할 수 있습니다. 아래 그림과 같이, Client가 GET Method를 Last-Modified 값과 같이 보냈을 때, 내용의 변화가 없으면 Server에서 304 Not Modified를 리턴합니다. 그러면 Client는 Cache에 저장된 값을 그대로 사용합니다.

 

(출처 : http://bcho.tistory.com/953)

 

지금까지 REST의 정의와 특징에 대해서 알아보았습니다. 감사합니다.

 

 

 

 

 

 

반응형