REST tarzı web hizmetleri temel eylemleri belirleyecek HTTP yöntemi fiilleri ve eylem ayrıntılarını belirtecek URL değişkenleri kullanır. Örneğin, bir öğeyi alma talebi GET fiilini ve bir yöntem adı ile öğe kimliği belirtmek üzere URL değişkenlerini kullanabilir. Ortaya çıkan URL dizesi şunun gibi olabilir:
http://service.example.com/?method=getItem&id=d3452
REST tarzı bir web hizmetine ActionScript ile erişmek için, URLRequest, URLVariables ve URLLoader sınıflarını kullanabilirsiniz. Bir AIR uygulamasındaki Javascript kodunda bir XMLHttpRequest de kullanabilirsiniz.
ActionScript’te bir REST tarzı web hizmeti çağrısı programlamak tipik olarak aşağıdaki adımları içerir:
-
Bir URLRequest nesnesi oluşturun.
-
Talep nesnesinin hizmet URL’sini ve HTTP yöntem fiilini belirleyin.
-
Bir URLVariables nesnesi oluşturun.
-
Hizmet çağrısı parametrelerini variables nesnesinin dinamik özellikleri olarak ayarlayın.
-
variables nesnesini request nesnesinin data özelliğine atayın.
-
Bir URLLoader nesnesiyle çağrıyı hizmete gönderin.
-
URLLoader tarafından hizmet çağrısının tamamlandığını belirtmek üzere gönderilen
complete
olayını işleyin. Bir URLLoader nesnesi tarafından gönderilebilecek çeşitli hata olaylarını dinlemek de akıllıcadır.
Örneğin, çağrı parametrelerini talep edene geri ileten bir test yöntemini açığa çıkaran bir web hizmeti düşünün. Hizmeti çağırmak için aşağıdaki ActionScript kodu kullanılabilir:
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 );
}
Bir AIR uygulaması içindeki Javascript’te, aynı talebi XMLHttpRequest nesnesini kullanarak yapabilirsiniz:
<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>