본문 바로가기

Web Develop Tech/Documents

용어 - REST(Representational State Transfer)

REST(Representational State Transfer)는월드 와이드 웹과 같은 분산하이퍼미디어시스템을 위한소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 그는 하이퍼텍스트 전송 프로토콜(HTTP)의 주요 저자들 가운데 한 사람이다. 그 뒤로 이 개념은 네트워킹 문화에 널리 퍼졌다.

엄격한 의미로REST는 네트워크 아키텍처 원리의 모음이다. 여기서 네트워크 아키텍처 원리란 리소스를 정의하고 리소스에 대한 주소를 지정하는 방법에 대한 개괄을 말한다. 간단한 의미로는, 도메인 지향 데이터를HTTP위에서SOAP이나 쿠키를 통한 세션 트랙킹 같은 부가적인 전송 레이어 없이, 전송하기 위한 아주 간단한 인터페이스를 말한다. 이 두 가지의 의미는 당연히 겹치는 부분과 충돌되는 부분이 있다. 필딩의REST아키텍처 형식을 따르면HTTP프로토콜을 사용하지 않은 채로 또 월드 와이드 웹에서 전송하지 않고도 아주 커다란 소프트웨어 시스템을 설계하는것도 가능하다. 또한, 리모트 프로시저 콜을 이용하는 대신에 간단한XMLHTTP인터페이스(REST원리에 부합하지는 않지만)를 이용해 설계하는 것도 가능하다. 현실 세계에서의 REST 용어에 대한 이러한 두 가지 의미는 기술 토론에서 종종 혼란을 야기한다.

필딩의REST원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭된다. 열정적인 REST 옹호자들은 스스로를 RESTafrians 이라고 부른다.


출처 : 위피백과 , http://ko.wikipedia.org/wiki/REST

참고 : http://www.crummy.com/writing/RESTful-Web-Services/ (영어)

REST의 기본 개체

REST는 다음 기본 개체를 정의한다.

  • 데이터 요소:데이터, 식별자(URI와 URL), HTML 문서, XML 문서, 이미지와 같은 데이터 표현
  • 컴포넌트:아파치(Apache) httpd와 마이크로소프트?? IIS(Internet Information Serivces) 같은 고유 서버, 스퀴드(Squid)와 CGI 같은 게이트웨이(gateways), 건틀렛(Gauntlet)과 넷스케이프(Netscape) 프록시 같은 프록시, 웹 브라우저나 모바일 기기 같은 사용자 에이전트
  • 커넥터:libwww 같은 클라이언트 커넥터, NSAPI 같은 서버 커넥터, 브라우저 캐시 같은 캐시 등

그림 1은 기본 REST 개체와 그것들이 전형적인 네트워크 시스템과 어떻게 상호작용하는지 보여준다. 이 때 커넥터에 의해 전달되거나 받게 되는 요청은 서버나 데이터베이스 같은 주어진 개체와 엮인다는 것에 주의하자. 커넥터는 주어진 프로토콜에서 전달하는 업무를 담당하므로 커넥터가 특정 프로토콜을 위해 존재하지 않는 한 개체는 어떤 프로토콜에서나 같은 방식으로 요청을 전달하거나 받는다.


그림 1. REST 개체 간 상호작용
REST 개체 간 상호작용

그림에서 볼 수 있듯이 이런 시스템의 커넥터는 컴포넌트 간에 통신할 수 있게는 프로토콜 포트로 구체화된다. REST 시스템에서 컴포넌트는 여러 개의 클라이언트 또는 서버 커넥터를 가지고 다른 컴포넌트와의 통신을 처리한다.

출처 : http://www.ibm.com/developerworks/kr/library/tutorial/x-restatompp/section2.html

ps.

뭐 이래 할 게 많어? ㅡㅡ