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 스타일 웹 서비스 호출을 프로그래밍하는 단계는 일반적으로 다음과 같습니다.
-
URLRequest 객체를 만듭니다.
-
요청 객체에 대해 서비스 URL 및 HTTP 메서드를 설정합니다.
-
URLVariables 객체를 만듭니다.
-
서비스 호출 매개 변수를 변수 객체의 동적 속성으로 설정합니다.
-
변수 객체를 요청 객체의 데이터 속성에 할당합니다.
-
요청을 URLLoader 객체와 함께 서비스로 보냅니다.
-
서비스 호출이 완료되었음을 나타내기 위해 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>