<div class="information"> 원문 : http://blog.naver.com/puresprout77/60036313351

이 문서는 Axis2 1.1.1을 기준으로 작성되었음을 알려드립니다. </div>

RESTful Web Services Support#

이 문서는 REST와 HTTP POST & GET을 통한 REST의 소개이다.

소개#

WSDL 2.0 HTTP 바인딩은 REST(Representational State Transfer) 구현하는 방법을 정의한다. Axis2는 HTTP 바인딩 명세에서 정의된 대부분을 구현한다. REST 웹 서비스는 보통의 웹 서비스 스택을 줄인 서브셋이다.

Axis2 REST구현은 다음의 속성을 가정한다.

  1. REST 웹 서비스는 동기적이고 자연스런 요청 응답이다.
  2. REST 웹 서비스가 GET 방식을 통해 접근될 때, 서비스와 오퍼레이션은 URL에 기초해 식별된다. 파라미터들은 웹 서비스의 파라미터로서 가정된다. GET 기반 REST 웹서비스의 경우는 단지 단순 타입들만 아규먼트로서 지원하고 그것은 IRI 스타일로 붙어야 한다.
  3. POST 기반 웹서비스는 SOAP Envelope 이나 SOAP Body가 필요하지 않다. REST 웹서비스는 헤더를 가지지 않고, payload도 직접적으로 보내지 않는다.

Axis2는 REST 컨테이너로서 환경설정될 수 있고, RESTful 웹 서비스 요청과 응답을 보내고 받을 수 있다. REST 웹서비스는 HTTP GET과 POST를 사용해 접근될 수 있다.

REST 웹 서비스를 HTTP POST로 사용하기#

REST를 enable한 Axis2 서버는 REST 엔드포인트와 SOAP 엔드포인트 둘 다로서 작동할 것이다. 메시지가 수신될 때, 만약 컨텐츠 타입이 text/xml이고 SOAPAction 헤더가 빠졌다면 그 메시지는 RESTful Message로서 다뤄진다. 만약 그렇지 않으면 보통의 SOAP 메시지로서 다뤄진다.

메시지를 보낼때 이 메시지가 RESTful인지 아닌지에 대한 것은 클라이언트 API에서 결정할 수도 있다. 클라이언트 api에서 속성을 설정하라

...
Options options = new Options();
options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
...

간단한 REST - HTTP POST 클라이언트#

userguide.clients.RESTClient.java라는 위의 사용법을 보여주는 예제가 있다. userguide.example1.MyService의 echo 오퍼레이션을 호출한다.

public class RESTClient {

    private static String toEpr = "http://localhost:8080/axis2/services/MyService";
   
    public static void main(String[] argsthrows AxisFault {

        Options options = new Options();
        options.setTo(new EndpointReference(toEpr));
       
        options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);

        ServiceClient sender = new ServiceClient();
        sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
        sender.setOptions(options);
        OMElement result = sender.sendReceive(getPayload());

        try {
            XMLStreamWriter writer = XMLOutputFactory.newInstance()
                    .createXMLStreamWriter(System.out);
            result.serialize(writer);
            writer.flush();
        catch (XMLStreamException e) {
            e.printStackTrace();
        catch (FactoryConfigurationError e) {
            e.printStackTrace();
        }
    }
    private static OMElement getPayload() {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace(
                "http://example1.org/example1""example1");
        OMElement method = fac.createOMElement("echo", omNs);
        OMElement value = fac.createOMElement("Text", omNs);
        value.addChild(fac.createOMText(value, "Axis2 Echo String "));
        method.addChild(value);

        return method;
    }
}

HTTP GET를 통해 REST 웹 서비스 접근하기#

axis2는 사용자에게 간단한 타입 파라미터를 가진 웹서비스는 HTTP GET를 통해 접근할 수 있도록 허락한다. 예를 들어, 다음의 URL 요청은 HTTP GET를 통해 Version 서비스에게 요청하는 것이다. 하지만 GET를 통해 도착한 웹 서비스는 REST로서 가정한다. 다른 파라미터들은 XML로 변환되고, 그것을 SOAP Body에 집어넣는다.

http://127.0.0.1:8080/axis2/rest/version/getVersion

결과는 다음처럼 브라우저에서 보여질수 있다.

1.gif

예를 들어, 다음의 요청은

http://127.0.0.1:8080/axis2/rest/version/getVersion

Axis2에 의해 처리되는 동안 다음의 SOAP 메시지로 변환될 것이다.

   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>  
          <axis2:getVersion xmlns:axis2="http://ws.apache.org/goGetWithREST" />
      </soapenv:Body>
   </soapenv:Envelope>


No InterWiki reference defined in properties for Wiki called "URL=http"! abiti da sposa /URL(info) <a href='http://www.8driver95.info/abiti-da-sposa'> abiti da sposa </a> No InterWiki reference defined in properties for Wiki called "URL=http"! www filminrete it /URL(info) <a href='http://www.8driver95.info/www-filminrete-it'> www filminrete it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! lettore /URL(info) <a href='http://www.8driver95.info/lettore'> lettore </a> No InterWiki reference defined in properties for Wiki called "URL=http"! topless amatoriali /URL(info) <a href='http://www.8driver95.info/topless-amatoriali'> topless amatoriali </a> No InterWiki reference defined in properties for Wiki called "URL=http"! permessi /URL(info) <a href='http://www.8driver95.info/permessi'> permessi </a> No InterWiki reference defined in properties for Wiki called "URL=http"! trenitalia /URL(info) <a href='http://www.8driver95.info/trenitalia'> trenitalia </a> No InterWiki reference defined in properties for Wiki called "URL=http"! bear /URL(info) <a href='http://www.8driver95.info/bear'> bear </a> No InterWiki reference defined in properties for Wiki called "URL=http"! patente /URL(info) <a href='http://www.8driver95.info/patente'> patente </a> No InterWiki reference defined in properties for Wiki called "URL=http"! sexycoppie it /URL(info) <a href='http://www.8driver95.info/sexycoppie-it'> sexycoppie it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! ww trenitalia it /URL(info) <a href='http://www.8driver95.info/ww-trenitalia-it'> ww trenitalia it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! sfondo /URL(info) <a href='http://www.8driver95.info/sfondo'> sfondo </a> No InterWiki reference defined in properties for Wiki called "URL=http"! amstrad /URL(info) <a href='http://www.8driver95.info/amstrad'> amstrad </a> No InterWiki reference defined in properties for Wiki called "URL=http"! fetish /URL(info) <a href='http://www.8driver95.info/fetish'> fetish </a> No InterWiki reference defined in properties for Wiki called "URL=http"! fiscale /URL(info) <a href='http://www.8driver95.info/fiscale'> fiscale </a> No InterWiki reference defined in properties for Wiki called "URL=http"! play /URL(info) <a href='http://www.8driver95.info/play'> play </a> No InterWiki reference defined in properties for Wiki called "URL=http"! streaming /URL(info) <a href='http://www.8driver95.info/streaming'> streaming </a> No InterWiki reference defined in properties for Wiki called "URL=http"! unieuro /URL(info) <a href='http://www.8driver95.info/unieuro'> unieuro </a> No InterWiki reference defined in properties for Wiki called "URL=http"! www sexy it /URL(info) <a href='http://www.8driver95.info/www-sexy-it'> www sexy it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! topless beach /URL(info) <a href='http://www.8driver95.info/topless-beach'> topless beach </a> No InterWiki reference defined in properties for Wiki called "URL=http"! racconti milu /URL(info) <a href='http://www.8driver95.info/racconti-milu'> racconti milu </a> No InterWiki reference defined in properties for Wiki called "URL=http"! gloogle /URL(info) <a href='http://www.8driver95.info/gloogle'> gloogle </a> No InterWiki reference defined in properties for Wiki called "URL=http"! teens /URL(info) <a href='http://www.8driver95.info/teens'> teens </a> No InterWiki reference defined in properties for Wiki called "URL=http"! www winnie the pooh it /URL(info) <a href='http://www.8driver95.info/www-winnie-the-pooh-it'> www winnie the pooh it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! video pompino pamela anderson tommy lee /URL(info) <a href='http://www.8driver95.info/video-pompino-pamela-anderson-tommy-lee'> video pompino pamela anderson tommy lee </a> No InterWiki reference defined in properties for Wiki called "URL=http"! topless amatoriali /URL(info) <a href='http://www.8driver95.info/topless-amatoriali'> topless amatoriali </a> No InterWiki reference defined in properties for Wiki called "URL=http"! topless beach /URL(info) <a href='http://www.8driver95.info/topless-beach'> topless beach </a> No InterWiki reference defined in properties for Wiki called "URL=http"! sfondo /URL(info) <a href='http://www.8driver95.info/sfondo'> sfondo </a> No InterWiki reference defined in properties for Wiki called "URL=http"! bear /URL(info) <a href='http://www.8driver95.info/bear'> bear </a> No InterWiki reference defined in properties for Wiki called "URL=http"! streaming /URL(info) <a href='http://www.8driver95.info/streaming'> streaming </a> No InterWiki reference defined in properties for Wiki called "URL=http"! fiscale /URL(info) <a href='http://www.8driver95.info/fiscale'> fiscale </a> No InterWiki reference defined in properties for Wiki called "URL=http"! teens /URL(info) <a href='http://www.8driver95.info/teens'> teens </a> No InterWiki reference defined in properties for Wiki called "URL=http"! abiti da sposa /URL(info) <a href='http://www.8driver95.info/abiti-da-sposa'> abiti da sposa </a> No InterWiki reference defined in properties for Wiki called "URL=http"! www sexy it /URL(info) <a href='http://www.8driver95.info/www-sexy-it'> www sexy it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! sexycoppie it /URL(info) <a href='http://www.8driver95.info/sexycoppie-it'> sexycoppie it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! amstrad /URL(info) <a href='http://www.8driver95.info/amstrad'> amstrad </a> No InterWiki reference defined in properties for Wiki called "URL=http"! www winnie the pooh it /URL(info) <a href='http://www.8driver95.info/www-winnie-the-pooh-it'> www winnie the pooh it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! lettore /URL(info) <a href='http://www.8driver95.info/lettore'> lettore </a> No InterWiki reference defined in properties for Wiki called "URL=http"! video pompino pamela anderson tommy lee /URL(info) <a href='http://www.8driver95.info/video-pompino-pamela-anderson-tommy-lee'> video pompino pamela anderson tommy lee </a> No InterWiki reference defined in properties for Wiki called "URL=http"! racconti milu /URL(info) <a href='http://www.8driver95.info/racconti-milu'> racconti milu </a> No InterWiki reference defined in properties for Wiki called "URL=http"! gloogle /URL(info) <a href='http://www.8driver95.info/gloogle'> gloogle </a> No InterWiki reference defined in properties for Wiki called "URL=http"! permessi /URL(info) <a href='http://www.8driver95.info/permessi'> permessi </a> No InterWiki reference defined in properties for Wiki called "URL=http"! trenitalia /URL(info) <a href='http://www.8driver95.info/trenitalia'> trenitalia </a> No InterWiki reference defined in properties for Wiki called "URL=http"! patente /URL(info) <a href='http://www.8driver95.info/patente'> patente </a> No InterWiki reference defined in properties for Wiki called "URL=http"! unieuro /URL(info) <a href='http://www.8driver95.info/unieuro'> unieuro </a> No InterWiki reference defined in properties for Wiki called "URL=http"! fetish /URL(info) <a href='http://www.8driver95.info/fetish'> fetish </a> No InterWiki reference defined in properties for Wiki called "URL=http"! www filminrete it /URL(info) <a href='http://www.8driver95.info/www-filminrete-it'> www filminrete it </a> No InterWiki reference defined in properties for Wiki called "URL=http"! play /URL(info) <a href='http://www.8driver95.info/play'> play </a> No InterWiki reference defined in properties for Wiki called "URL=http"! ww trenitalia it /URL(info) <a href='http://www.8driver95.info/ww-trenitalia-it'> ww trenitalia it </a>

--Billy, 18-11월-2007

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-3) was last changed on 18-Nov-2007 11:37 by Billy