IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  자바 | SOA와 웹서비스 | 오픈 소스  >

RESTful한 웹 서비스 만들기

REST와 RESTlet 프레임워크에 대한 소개

developerWorks
Go to the previous page15 페이지 중 6 페이지Go to the next page

문서 옵션

샘플 코드


제안 및 의견
피드백

튜토리얼 평가

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


XML 문서 생성

자원의 표현 형식 부분에서 클라이언트와 서비스 간의 정보 공유 데이터 메커니즘으로 XML을 쓰기로 결정했었다. 그러므로 Restlet은 XML을 다룰 수 있어야 한다. GET의 경우에는 XML를 만들어야 하고 POST, PUT, DELETE의 경우에는 XML을 활용해야 한다.

그루비 활용하기

XML로 작업한다는 게 쉬운 일이 아니다. 대충만 놓고 봐도, 지겨울 수도 있고 에러가 빈번히 날 수도 있는 작업이다. 다행히도 그루비는 XML을 이용해 작업하는 일을 훨씬 더 쉽게 해준다.

XML을 생성하고 XML 문서를 다루는 지겨운 일을 하는 데에 그루비의 능력을 이용할 것이다. 그루비에서 XML을 이용해 작업하는 것만큼 쉬운 일은 없을 것이다. 예를 들어 XML 문서를 파싱하는 것은 식은 죽 먹기다. Listing 7의 XML 문서를 보자.


Listing 7. 파싱할 간단한 XML 문서
                    
<acme-races>
  <race name="Alaska 200 below" date="Thu Jan 01" distance="3.2" id="20">
    <uri>/races/20</uri>
    <description>Enjoy the cold!</description>
  </race>
</acme-races>

<race> 요소의 name 속성 값을 얻고 싶다고 가정하자. 할 일은 그루비의 XMLSlurper 클래스에 XML 문서의 인스턴스를 넣고 parse() 메서드를 호출한 다음 원하는 요소나 속성을 살펴보는 게 전부다. Listing 8에 나타내었다.


Listing 8. 그루비에서 XML 파싱
                    
def root = new XmlSlurper().parseText(raceXML)
def name = root.race.@name.text()

상세 설명을 보고 싶다면 root.race.description.text()를 호출하면 쉽게 할 수 있다.

XML 생성도 쉽다. Listing 7에서 보인 XML 일부분을 생성하고 싶다면 그루비의 MarkupBuilder 클래스 인스턴스를 생성한 다음 노드를 추가하는 게 전부다. Listing 9에 보였다.


Listing 9. XML 생성이 이보다 더 쉬울 수는 없을 것이다.
                    
def writer = new StringWriter()
def builder = new MarkupBuilder(writer)
builder."acme-races"() {
    race(name: "Alaska 200 below",  date: "Thu Jan 01", distance: "3.2", id: "20") {
        uri("/races/20")
        description("Enjoy the cold!")
    }
}
println writer.toString()

builder 인스턴스에 이름을 붙이는 것으로 요소가 XML 문서에 어떻게 추가되는지 주목하자. 그루비에서는 문자열 상수에 하이픈(-)을 허용하지 않기 때문에 acme-races에 인용 부호를 넣어야 했다. 결과적으로 acme-racesString으로 해서 문제를 멋지게 해결했다.

요소는 속성을 가질 수 있다. 속성 이름과 값은 그루비 맵을 만드는 것으로 생성되는데, 그루비 맵은 이 둘을 서로 연결한다(예를 들어 name:"Alaska 200 below").




위로



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