본문 바로가기
Tip & Tech/Tech

REST란? REST 개념 파헤치기

by 나비와꽃기린 2016. 11. 3.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


1. REST 란??


Representational State Transfer의 줄임말로 네트워크 상에서 클라이언트와 서버 사이의 통신 방식중 하나이다.


(참조 url :: http://www.hoons.net/lecture/view/391)

(참조 url :: http://greatkim91.tistory.com/79)

(참조 url :: http://naleejang.tistory.com/81 )




REST 방식의 웹 서비스를 쉽게 이해하기 위해서 어떻게 메시지를 주고 받게 되는지 동작 아키텍처를 살펴보면,


(1) 기존의 SOAP을 이용한 일반적인 웹 서비스 방식은 다음과 같습니다. 




(2) 반면, REST는 URL을 요청하게 됩니다. 

복잡한 SOAP 메시지를 호출하지 않아도 URL을 이용해서 데이터를 간단하게 요청한다는 것이죠.





2. SOAP vs REST


이런 면에서 SOAP XML 구조를 모두 읽어 들여야 해서 사용하기에 무거울 수 있다지만반면 REST 서비스는 간결하고 일관된 인터페이스 구조를 지니고 있어 단순하고 간결하게 사용이 가능합니다..

SOAP와 REST의 비교 표를 보면 더 이해하기 쉽습니다.


SOAP

REST

장점

단점

장점

단점

1. 언어, 플랫폼 그리고 통신에 중심적


2. 분산 컴퓨팅 환경을 다루기 위한 설계


3. 웹서비스를 위해 보급된 많은 표준과(WSDL,WD-*)과 벤더에서 제공하는 도구들


4. 에러처리에 대한 내용이 기본으로 내장


5. 확장성

1. 개념적으로 REST보다 어렵고 무거움


2. 개발하기 어렵고 보통 도구가 필요함

1. 언어플랫폼에 중립적


2. SOAP보다 개발하기 단순함


3. 학습곡선이 작고 도구가 거의 필요없음


4. 간결함


5. 웹에 가까운 설계와 철학

1. POINT TO POINT 통신 모델을 가정함. 둘 이상을 대상으로 상호작용하는 분산환경에는 유용하지 않음


2. 보안 표준이 없음


3. HTTP 통신 모델에 의존





3. REST 구성요소


Resource

REST에서 가장 중요한 개념은 바로 유일한 ID를 가지는 Resource가 서버에 존재하고, 클라이언트는 각 Resource의 상태를 조작하기 위해 요청을 보낸다는 것이다. 일반적으로 Resource는 user, friends, group 등과 같은 명사형의 단어이고, HTTP에서 이러한 Resource 를 구별하기 위한 ID는 '/groups/{groupId}/member/101'와 같은 URI이다.


Method

GET, DELETE 등과 같이 Resource를 조작할 수 있는 동사형의 단어를 Method라고 한다. 클라이언트는 URI를 이용해서 Resource를 지정하고 해당 Resource를 조작하기 위해서 Method를 사용한다. HTTP에서는 GET, POST, PUT, DELETE 등의 Method를 제공한다. 


Representation of Resource

클라이언트가 서버로 요청을 보냈을 때, 서버가 응답으로 보내주는 Resource의 상태를 Representation이라고 한다. REST에서 하나의 Resource는 여러 형태의 Representation으로 나타내어 질 수 있다. 예를 들어 xml, json, text, rss 등으로 전달할 수 있다.


URI 구성

- URI는 ‘/groups’, ‘/users’ 등과 같이 직관적으로 어떤 정보를 제공하는지 알 수 있는 단어들로 구성

- URI는 ‘/groups/{groupId}/member/101’와 같이 URI path가 계층적인 구조를 가지도록 구성

- URI의 상위 path는 하위 path의 집합을 의미하는 단어로 구성. 예를 들어 ‘/groups/101/member/12532’의 경우 ‘groups’는 ‘101’ 등의 그룹의 집합이므로 ‘/groups’ 만으로도 그룹 목록이라는 정보를 제공할 수 있는 유효한 URI가 된다.

- CREATE / DESTORY/UPDATE/DELETE 등의 기본 CRUD 처리는 URI에 명시적으로 표현하도록 하여 URI를 보더라도 직관적으로 어떤 기능을 제공하는지 알 수 있도록 명명하도록 한다.






4. RESTful Web Service HTTP methods


REST는 근래에 들어 HTTP와 JSON을 함께 사용하여 OPEN API를 구현하는 방법으로 사용되고 있다.

대부분의 OPEN API는 REST 아키텍처를 기반으로 설계 및 구현되고 있으며 이런 REST원리를 따르는 시스템을 Restful이란 용어로 가르켜 사용되어지고 있다.

다음은 REST에서 사용하는 CRUD에 대한 메소드이다.


GET : 리소스 자원을 read 할때

POST : 리소스 자원을 create 할때

PUT : 리소스 자원을 update 하거나 create 할때

DELETE : 리소스 자원을 delete 할때

HEAD : header 정보를 read 할때