티스토리 뷰

DevOps/네트워크

REST 란?

철철22 2018. 7. 4. 09:00
반응형

REST 란?
REpresentational State Transfer 의 약자로, 통신 규약이나 표준 또는 스펙이 아니라 분산 하이퍼미디어 시스템을 위한 www 같은 소프트웨어 아키텍처의 한 형식이며 네트워크 상에서 클라이언트와 서버 사이의 통신 방식이다. REST 라는 용어는 2000년 로이필딩(Roy Fielding) 박사의 논문에서 처음 소개되었다.


REST 방식의 웹 서비스를 쉽게 이해하기 위해서 어떻게 메시지를 주고 받게 되는지 동작 아키텍처를 살펴보면,
(1) 기존의 SOAP을 이용한 일반적인 웹 서비스 방식은 다음과 같습니다. 


(2) 반면, REST는 URL을 요청하게 됩니다. 
복잡한 SOAP 메시지를 호출하지 않아도 URL을 이용해서 데이터를 간단하게 요청한다는 것이죠.

SOAP vs REST

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



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를 보더라도 직관적으로 어떤 기능을 제공하는지 알 수 있도록 명명하도록 한다.


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 할때



출처: http://naleejang.tistory.com/81http://mkil.tistory.com/353


반응형

'DevOps > 네트워크' 카테고리의 다른 글

HSMS 프로토콜  (0) 2018.11.09
get / post  (0) 2018.07.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함