최근 웹 2.0 의 폭발적인 발전에 따라 restful 웹 서비스가 전통적인 soap 기반 웹 서비스의 대안으로 대두되고 있으며 , 그들의 활용이 기존의 saop기반 웹 서비스의 사용을 추월할 것으로 예상된다.


restful 웹 서비스란 http와 rest(Representation state transfer )의 원리를 사용하여 구현된 간단한 웹서비스로 정의 된다


먼저 restful 웹서비스의 기본 개념부터 살펴보자 .


rest는 웹의 창시자 중 한사람인 roy fielding 의 박사 학위 논문에 의해 소개되엇고


그는 현재의 웹 아키텍처가 웹이 지닌 본래의 설계 우수성을 충분히 활용하지 못하고 있다고 판단하고 웹이ㅡ 장점을 최대한 활용할수 있는 네트워크 기반의 아키텍처를 제안했는데 이것이 바로 rest다

이런 rest 아키텍처 스타일에 따라 정의 되고 이용되는 서비스나 이용을 restul 웹 서비스라고 한다.


기본 구성요소로는 resource, method , representation, stateless 로 구성된다.


1. resource


자원을 표한하는것으로 http uri 에 의해 표현되면 웹사이트 블로그 이미지 음악 이용자 지도 검색 결과등 웹에서 다른 이들과 공유하고자 하는 모든 자원을 의미한다.


예를 들면 123라는 ID를 가지는 특정 부품을 uri 로 표한하면


http://www.korea.co.kr/item/123표현이 가능하고 이제품에 대한 주문은


www.korea.co.kr/order/123로 표현한다.


2. http메소드 (metoud)


rest 구조에서 리소스는 http의 기본 메소드인 get put post delete 만으로 접근할수 있다.


접근하기위한 이러한 4개의 http 메소드는 아래의 설명과 같이 일반 Cuud(Create, Read, Update, Delete) 오퍼레이션에 대응된다.


HTTP 메소드 CRUDE 오퍼레이션 의미


POST CREATE 생성


GET READ 검색


PUT UPDATE 수정


DELETE DELETE 삭제


그렇다면 해당 리소스에 대한 HTTP 메소드가 어떻게 사용되는지 예를 들어보자


1234라는 부품정보를 가져오고 싶을때


URL : http://www.korea.com/item/123

Method: Get


2345라는 부품정보를 생성하고 싶을때


URL: http://www.korea.com/item

Method: Post

<item>2345</item>


1234라는 부품 정보를 4321 로 변경하고 시퓨을때


Url : http://www.korea.com/items/1234

Method: Put

<item>4321</item>



4321 이라는 부품정보를 삭제하고 싶을때

URL: http://www.korea.com/times/4321

Method : delete


3. 표현 (represntation)


http 기본 메소드로 전달되는 리소스는 다양한 방식으로 표현 되는데 이는 xml json html 텍스트 이미지 등이 가능하며 클라이언트에서 원하는 형식으로 표현하면 서버에서 이를 처리 하게 된다. 리소스이 다양한 표현 방식은 http accept 헤더값 또는 url 파라미터로 지정하면된다.


예를 들면 표현은 url 을 가지고 결정할수 있으며 혹은 http 헤더의 contents_negotiation 을 이용하여 결정할수 있다


4. 스테이트리스 (Stateless)


리소스와 그를 지칭하는 url http 메소드로 단일화된 인터페이스 다양한 리소스 표현 등과 더블어 빼 놓을수 없는 restful 웹서비스의 특성이 스테이트리스 이다.


http 의 특성을 상속하여 rest역시 스테이트리스 특성을 가지게 되는데 스테이트리스란 웹서비스 제공 서버측에서 클라이언트의 상태 정보를 저장 관리 하지 않는 것을 의미한다.


즉 모든 http 요청은 완벽한 고립 상태에서 발생한다 . 클라이언트가 http 요청을 할때 서버에 그요청을 수행할수 있는 모든 정보를 주어야 하며 이전의 요청에 의존해서는 안된다. 즉서버의 가능한 어떤 상태도 리소스이고 url 를 가져야 한다. 이는 예를 들어 ftp 와 http 의 근복적인 차이이다.


ftp는 workding directory 개념이 있으며 http 에비해 훨씬 복잡하다. http는 그 단순함이 스테이트리스로 부터 나온 것이다.


스테이트리스의 장점은 상태의 대한 저장을 하지 않으므로 확장성이 좋아지고 캐쉬하기에 적합한 구조이다.


그러나 웹서비스 제공시 응용상태와 리소스의 상태관리가 필요할수 있으며 이를 위해서는 서버와 클리이언트 간에 이들상태를 명시적으로 전달하는 방법을 이용해야 한다.




<RestFul 통신 형태 >

 

출처 : http://blog.naver.com/asjgi?Redirect=Log&logNo=70140021951

 

 

+ Recent posts