RESTful 웹 서비스란?
- Posted at 2009/03/16 22:53
- Filed under Program/JAVA
RESTful 웹 서비스라는 것이 단순히 HTTP로 request를 받아서 결과를 XML 형태로 전송해주는 것이라고만 생각했는데 관련 문서를 찾아보니 잘못 생각하고 있었네요.
REST와 관련하여 몇가지 개념이 있는데 제가 알고 있는 개념인 HTTP를 이용하고 query string에 처리할 action에 대한 정보 등을 포함하는 방식을 REST-RPC 개념으로 설명하면서 진정한 의미의 REST한 서비스는 아니라고 합니다.
REST는 REpresentational State Transfer의 약자입니다.
이론적 배경은 다음 논문을 참고하세요.
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
일단 개발자에게 피부로 와 닿는 설명은 다음과 같습니다.
1. HTTP 프로토콜의 PUT, GET, POST, DELETE 등과 같은 Method를 의미 그대로 사용한다.
2. Resource에 대한 접근을 URI를 이용한다.
다음 HTTP request가 REST 웹 서비스의 예제입니다.
위의 HTTP request는 책 목록을 가져 오기 위한 요청입니다. 특정 책의 상세 정보를 요청하는 경우에는 다음과 같이 할 수 있습니다.
특정 책 정보를 삭제하는 경우는 다음과 같습니다.
REST와 관련하여 몇가지 개념이 있는데 제가 알고 있는 개념인 HTTP를 이용하고 query string에 처리할 action에 대한 정보 등을 포함하는 방식을 REST-RPC 개념으로 설명하면서 진정한 의미의 REST한 서비스는 아니라고 합니다.
REST는 REpresentational State Transfer의 약자입니다.
이론적 배경은 다음 논문을 참고하세요.
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
일단 개발자에게 피부로 와 닿는 설명은 다음과 같습니다.
1. HTTP 프로토콜의 PUT, GET, POST, DELETE 등과 같은 Method를 의미 그대로 사용한다.
2. Resource에 대한 접근을 URI를 이용한다.
다음 HTTP request가 REST 웹 서비스의 예제입니다.
GET /book HTTP/1.1
Host: www.jaso.co.kr
Accept: application/xml
Host: www.jaso.co.kr
Accept: application/xml
위의 HTTP request는 책 목록을 가져 오기 위한 요청입니다. 특정 책의 상세 정보를 요청하는 경우에는 다음과 같이 할 수 있습니다.
GET /book/isbn_0001 HTTP/1.1
Host: www.jaso.co.kr
Accept: application/xml
Host: www.jaso.co.kr
Accept: application/xml
특정 책 정보를 삭제하는 경우는 다음과 같습니다.
DELETE /book/isbn_0001 HTTP/1.1
Host: www.jaso.co.kr
Accept: application/xml
Host: www.jaso.co.kr
Accept: application/xml
물론 위와 같은 처리를 다음과 같이 URL의 query string에 넣어서 처리할 수도 있습니다.
http://www.jaso.co.kr/book?action=delete&book_id=isbn_0001
이런 방식을 REST-RPC라고 합니다.
굳이 이렇게 나누는 것은 REST한 서비스 구성을 자세히 보면 특정 패턴이 보이고 이 패턴을 이용하여 프로그램을 쉽고 표준적으로 할 수 있기 때문입니다. 표준적으로 할 수 있다는 것은 프레임워크나 경량의 컨테이너가 출현할 가능성이 높고 이런 프레임워크를 통해 아주 쉽게 개발할 수 있게 됩니다.
최근 자바 진영에서는 JSR 311에 JAX-RS: The Java API for RESTful Web Services라는 형태로 표준화 하고 있습니다. 이것을 지원하는 프레임워크도 일부 나오고 있습니다.
단순한 개념인 것 같지만 그 개념의 이론을 만들고 이론에 따르는 시스템들이 개발되어 나오고 다시 이것들이 솔루션으로 만들어져 나오는 이런 선순환 구조를 통해 소프트웨어 산업이 계속 발전하고 성장하는 것 같습니다.
Posted by 김형준
- Response
- No Trackback , No Comment
Trackback URL : http://www.jaso.co.kr/trackback/333






