REST 스타일 웹 서비스 요청

Flash Player 9 이상, Adobe AIR 1.0 이상

REST 스타일 웹 서비스는 HTTP 메서드 동사를 사용하여 기본 액션을 지정하고 URL 변수를 통해 액션의 세부 사항을 지정할 수 있습니다. 예를 들어 항목에 대한 데이터를 가져오는 요청은 GET 동사와 URL 변수를 사용하여 메서드 이름과 항목 ID를 지정할 수 있습니다. 결과 URL 문자열은 다음 예처럼 나타날 수 있습니다.

http://service.example.com/?method=getItem&id=d3452

ActionScript로 REST 스타일 웹 서비스에 액세스하려면 URLRequest, URLVariables 및 URLLoader 클래스를 사용할 수 있습니다. AIR 응용 프로그램 내의 JavaScript 코드에서 XMLHttpRequest를 사용할 수도 있습니다.

ActionScript에서 REST 스타일 웹 서비스 호출을 프로그래밍하는 단계는 일반적으로 다음과 같습니다.

  1. URLRequest 객체를 만듭니다.

  2. 요청 객체에 대해 서비스 URL 및 HTTP 메서드를 설정합니다.

  3. URLVariables 객체를 만듭니다.

  4. 서비스 호출 매개 변수를 변수 객체의 동적 속성으로 설정합니다.

  5. 변수 객체를 요청 객체의 데이터 속성에 할당합니다.

  6. 요청을 URLLoader 객체와 함께 서비스로 보냅니다.

  7. 서비스 호출이 완료되었음을 나타내기 위해 URLLoader에서 전달한 complete 이벤트를 처리합니다. 또한 URLLoader 객체에서 전달할 수 있는 다양한 오류 이벤트를 수신하는 것이 좋습니다.

예를 들어 웹 서비스가 호출 매개 변수를 요청자에게 되돌려주는 테스트 메서드를 제공하는 경우 다음가 같은 ActionScript 코드를 사용하여 서비스를 호출할 수 있습니다.

import flash.events.Event; 
import flash.events.ErrorEvent; 
import flash.events.IOErrorEvent; 
import flash.events.SecurityErrorEvent; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.net.URLRequestMethod; 
import flash.net.URLVariables; 
 
private var requestor:URLLoader = new URLLoader(); 
public function restServiceCall():void 
{ 
    //Create the HTTP request object 
    var request:URLRequest = new URLRequest( "http://service.example.com/" ); 
    request.method = URLRequestMethod.GET; 
     
    //Add the URL variables 
    var variables:URLVariables = new URLVariables(); 
    variables.method = "test.echo"; 
    variables.api_key = "123456ABC"; 
    variables.message = "Able was I, ere I saw Elba.";             
    request.data = variables; 
     
    //Initiate the transaction 
    requestor = new URLLoader(); 
    requestor.addEventListener( Event.COMPLETE, httpRequestComplete ); 
    requestor.addEventListener( IOErrorEvent.IOERROR, httpRequestError ); 
    requestor.addEventListener( SecurityErrorEvent.SECURITY_ERROR, httpRequestError ); 
    requestor.load( request ); 
} 
private function httpRequestComplete( event:Event ):void 
{ 
    trace( event.target.data );     
} 
 
private function httpRequestError( error:ErrorEvent ):void{ 
    trace( "An error occured: " + error.message );     
}

AIR 응용 프로그램 내의 JavaScript에서는 XMLHttpRequest 객체를 사용하여 동일한 요청을 수행할 수 있습니다.

<html> 
<head><title>RESTful web service request</title> 
<script type="text/javascript"> 
 
function makeRequest() 
{ 
    var requestDisplay = document.getElementById( "request" ); 
    var resultDisplay  = document.getElementById( "result" ); 
     
    //Create a conveninece object to hold the call properties 
    var request = {}; 
    request.URL = "http://service.example.com/"; 
    request.method = "test.echo"; 
    request.HTTPmethod = "GET"; 
    request.parameters = {}; 
    request.parameters.api_key = "ABCDEF123"; 
    request.parameters.message = "Able was I ere I saw Elba."; 
    var requestURL = makeURL( request ); 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open( request.HTTPmethod, requestURL, true); 
    xmlhttp.onreadystatechange = function() { 
        if (xmlhttp.readyState == 4) { 
            resultDisplay.innerHTML = xmlhttp.responseText; 
        } 
    } 
    xmlhttp.send(null); 
     
    requestDisplay.innerHTML = requestURL; 
} 
//Convert the request object into a properly formatted URL 
function makeURL( request ) 
{ 
    var url = request.URL + "?method=" + escape( request.method ); 
    for( var property in request.parameters ) 
    { 
        url += "&" + property + "=" + escape( request.parameters[property] ); 
    } 
     
    return url; 
} 
</script> 
</head> 
<body onload="makeRequest()"> 
<h1>Request:</h1> 
<div id="request"></div> 
<h1>Result:</h1> 
<div id="result"></div> 
</body> 
</html>