REST tarzı web hizmeti talepleri

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

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:

  1. Bir URLRequest nesnesi oluşturun.

  2. Talep nesnesinin hizmet URL’sini ve HTTP yöntem fiilini belirleyin.

  3. Bir URLVariables nesnesi oluşturun.

  4. Hizmet çağrısı parametrelerini variables nesnesinin dinamik özellikleri olarak ayarlayın.

  5. variables nesnesini request nesnesinin data özelliğine atayın.

  6. Bir URLLoader nesnesiyle çağrıyı hizmete gönderin.

  7. 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>