跳转到主要内容
메인 컨텐츠로 가기

한국 developerWorks  >  XML | 자바 | SOA와 웹서비스  >

REST 서비스 작성하기

자바 기술과 Atom Publishing Protocol로 REST 서비스 만들기

developerWorks
Go to the previous page10 페이지 중 3 페이지Go to the next page

문서 옵션

샘플 코드


제안 및 의견
피드백

튜토리얼 평가

이 컨텐츠를 개선하기 위한 도움을 주십시오.


The Atom Publishing Protocol

APP는 HTTP 기반 프로토콜로 자원을 발행, 삭제, 갱신하는 기능을 한다. APP는 발행, 갱신 등이 가능한 자원과 피드를 포함하는 인트로스펙션(introspection) 문서와 컬렉션(collection) 문서의 인스턴스를 전달하기 위해 HTTP 프로토콜이 제공하는 (GET, PUT, POST, DELETE 같은) 기본 기능을 사용하는 개념을 강조한다. 자원과 피드가 발견된 후 관련된 URI는 발행과 수정에 사용된다. 멤버 피드에는 블로그 엔트리, 포드캐스트, 위키 문서, 달력 이벤트 등이 있다. APP는 또한 데이터베이스 서버, 문서와 내용 관리 서비스, 소프트웨어 저장소 같은 폭넓은 데이터 저장 서비스를 위한 프론트 엔드 API로 쓰이고 연구되고 있다.

APP는 REST 개념과 기술을 사용하여 의미적으로 풍부한 콘텐츠 교환에 쓰이는 여러 메커니즘을 정형화기 위해 인기있는 아톰 배급 포맷(Atom Syndication Format) 위에 구축된다. 프로토콜은 컬렉션이라 알려진 웹 자원 컨테이너에서 작동한다. 컬렉션은 인트로스펙션 문서에서 발견되는 것을 나타낸다. 모든 컬렉션에는 멤버 자원이 들어 있다. 이것들은 생성, 접근, 수정, 삭제를 위한 최종 타깃이다. 컬렉션과 이 멤버 자원 간의 상호작용은 일반적인 HTTP 동사(verb)를 기반으로 한다.

  • GET: 컬렉션이나 멤버 자원 표현을 찾아오는 데 쓰인다.
  • POST: 새 멤버 자원을 만드는 데 쓰인다.
  • PUT: 멤버 자원을 갱신하는 데 쓰인다.
  • DELETE: 멤버 자원을 삭제하는 데 쓰인다.

APP의 기본 개체

APP는 다음과 같은 기본 개체를 정의한다.

  • 인트로스펙션 문서: 인트로스펙션 문서는 application/atomserv+xml 미디어 타입을 가지고 컬렉션의 임의 서버 정의 그루핑인 workspaces를 기술한다. 컬렉션은 하나 이상의 작업공간에 나타날 수 있다. Listing 1은 전형적인 인트로스펙션 문서의 예다.


    Listing 1. 전형적인 인트로스펙션 문서
                                
    <?xml version="1.0" encoding="utf-8" ?> 
    <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
    - <workspace>
        <atom:title>Main Site</atom:title> 
        - <collection href="http://localhost:8080/atompub/services/collections/main">
            <atom:title>My Main Page</atom:title> 
            <accept>application/atom+xml;type=entry</accept> 
            <categories fixed="yes" /> 
          </collection>
          <collection href="http://localhost:8080/atompub/services/collections/pics">
            <atom:title>My Pictures</atom:title> 
            <accept>*/*</accept> 
            <categories fixed="yes" /> 
          </collection>
      </workspace>
    - <workspace>
        <atom:title>Documents</atom:title> 
        - <collection href="http://localhost:8080/atompub/services/collections/docs">
            <atom:title>My Documents</atom:title> 
            <accept>application/atom+xml;type=entry</accept> 
            <categories fixed="yes" /> 
          </collection>
      </workspace>
    </service>
    

    위에 보인 인트로스펙션 문서는 두 개의 작업공간으로 서비스를 정의한다. 첫 번째 작업공간은 "Main Site"라 부르는데 "My Main Page"와 "My Picture"라는 두 개의 컬렉션을 정의한다. "My Main Page" 컬렉션은 http://localhost:8080/atompub/services/collections/main에, "My Pictures" 컬렉션은 http://localhost:8080/atompub/services/collections/pics에 있다. 두 번째 작업공간인 "Documents"는 "My Documents"라는 하나의 컬렉션을 가지고 있고 이는 http://localhost:8080/atompub/services/collections/docs에 있다.

  • URI: 자원 식별자
  • IRI: 국제 자원 식별자 (참고자료 참조)
  • 멤버 자원: IRI나 URI가 지정하는 엔트리 자원 또는 미디어 자원으로 알려진 데이터 객체 또는 서비스. 엔트리 자원은 아톰 엔트리 문서로 표현된다. 미디어 자원은 어떤 미디어 타입에서든 표현을 가질 수 있다. 미디어 자원은 미디어 링크 엔트리를 사용하여 컬렉션 내에서 기술된다.
  • 표현: 요청이나 응답에 의해 전달되는 주어진 자원의 상태
  • 컬렉션: 특정 URI에 의해 식별된 멤버 자원의 컨테이너. 컬렉션은 아톰 피드로 표현된다. 컬렉션에서 새 엔트리를 만들려면 클라이언트는 컬렉션의 URI에 HTTP POST 요청을 보낸다. 새 엔트리에는 특정 URI가 부여되어 위치 레퍼런스로 사용된다. 컬렉션에서 엔트리를 수정하려면 클라이언트는 그 URI를 사용하여 자원을 찾아오고 수정을 한 후 PUT을 사용하여 자원의 수정된 표현을 서버로 옮긴다. 컬렉션에서 멤버 자원을 삭제하려면 멤버 자원의 URI로 HTTP DELETE 요청을 보낸다. 컬렉션의 모든 멤버는 컬렉션 문서에 따라 updated 속성을 가져야 한다.
  • 작업공간: 명명된 컬렉션 그룹
  • 서비스 문서/요소: 인트로스펙션 문서의 최상위 요소로 하나 또는 그 이상의 컬렉션 기능과 위치를 기술하고 작업공간으로 묶음
  • 카테고리 문서: 컬렉션에서 허용되는 카테고리를 기술하는 문서

다음 장에서는 자바 기술을 확장하여 REST 기반 시스템에서 APP를 지원하는 방법에 대해 알아보겠다.




위로



Go to the previous page10 페이지 중 3 페이지Go to the next page
    IBM 소개 개인정보 보호정책 문의