RESTful Services

Representational state transfer (REST)는 World Wide Web처럼 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 스타일이다. 요즈음 웹 서비스를 논할 때마다, 화제가 되는 REST는 Roy T Fielding이 2000년에 제창한, 네트워크 기반 어플리케이션을 위한 아키텍쳐 *스타일*로 표준이나 스펙이 아님에 유의한다.
Representational state transfer은 마치 리소스(Resource)가 요청(Request)에 따라 상태가 변화하는 것처럼 동작한다는 의미에서 작성된 용어이다.

REST(XML over HTTP) 특징 을 살펴보면 다음과 같다.
  • HTTP와 XML 이용

  • HTTP와 XML을 이용하여 데이터를 주고 받는 웹 서비스를 이용한다.
  • 소프트웨어 아키텍처 스타일

  • 표준 기술이 아닌, 소프트웨어 아키텍처 스타일이다. 아키텍처 스타일은 아키텍처적인 제한 및 제약 조건을 정의해놓은 집합이다. HTTP와 같은 기존의 기술을 이용하여 잘 설계된 분산 웹 어플리케이션을 만들수 있도록 하는 설계 가이드에 해당한다.
  • WWW(웹), Open API

  • 적용 예로 WWW(웹), Open API(ex. Google, Microsoft, Amazone, eBay, Yahoo 등)가 있다. 더 자세한 내용은 REST 적용 예 를 참고한다.
다음은 SOAP을 이용한 웹 서비스와 REST 방식의 웹 서비스를 비교한 그림이다. 그림에서와 같이 "http://***/movieservice/movies/001" 형태의 URL을 요청한 경우, 그 결과 데이터는 XML 형식으로 반환된다.

Apache CXF을 이용하여 RESTful 서비스를 구현하는 방법 에는 다음과 같이 3가지 방법이 있다.
  • JAX-RS (JSR-311)

  • JAX-RS(JSR-311) Spec. 을 이용하여 RESTful 서비스를 구현하는데, Apache CXF에서 Spec.에 대한 구현체를 제공하여 표준 방식으로 RESTful 서비스를 작성할 수 있게 한다. JAX-RS에서 제공하는 Annotation 설정을 이용한다.
  • HTTP Binding

  • 표준 방식이 아닌 방법으로 가장 쉽고 용이한 방식으로 RESTful 서비스를 작성할 수 있게 한다. JRA(Java REST Annotation) 설정 또는 Naming Convention 기반의 매핑 방식을 이용한다.
  • JAX-WS Provider/Dispatch API

  • 간단한 RESTful 서비스 작성을 지원한다. 표준 API를 사용하나 HTTP Binding 방식에 비해 유연한 구조가 아니다.
다음은 각각의 RESTful 서비스 구현 방법 별로 어떻게 사용하는지에 대한 사용법이다.

REST 적용 예

  • WWW(웹)
  • REST 적용 예시로 가장 많이 사용되는 것이 바로 WWW(웹)이다.
    설명
    상태를 유지하지 않는 클라이언트/서버 구조를 가진다.
    어디에서나 적용되는 인터페이스를 가진다. (e.g., GET, POST, PUT, DELETE)
    모든 자원은 URI를 이용하여 유일하게 지칭될 수 있다.
    자원들의 표현(Representation)들이 URI을 통해 서로 연결되어 있다.

  • Open API
    최근 들어 Open API 활용이 증가하고 있다.
    설명
    특정 기능 또는 컨텐츠를 가진 서비스 업체가 자신들의 서비스에 접근할 수 있도록 외부에 접근방법을 공개하는 것을 Open API라고 한다.
    Open API를 이용하여 새로운 서비스를 개발할 수 있다. 즉 Open API는 해당 서비스로 접근하기 위한 규약 또는 표준적인 인터페이스를 의미한다.
    Google, Microsoft, Amazon, eBay, Yahoo에서는 이미 여러 Open API를 공개하고 있다.

Resources