REST tarzı web hizmeti talepleriFlash 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:
Ö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> |
|