20.01.08
Servicios web vía Rest en Flex y Air
Para aprender el funcionamiento de las llamadas REST en Flex y Air (algo totalmente nuevo para mí), he realizado una aplicación que se conecta con el servicio que nos ofrece MyStrands. Para el que no lo conozca, mystrands en una comunidad, en la que los usuarios puntúan a los artistas, sus discografías, debaten sobre ellos, etc. Dentro de MyStrands, tenemos una sección para desarrolladores, OpenStrands, en la cual se nos ofrece un api para obtener información de discografías, canciones, opiniones de los usuarios, etc. Para poder utilizar dicha api, será necesario registrarse para obtener un subscriberId, es decir, una clave personal de desarrollador para poder efectuar las llamadas al api, y descargarse la documentación para ver cómo realizar dichas llamadas.
Para este ejemplo he utilizado el framework de programación guasax. Dentro de la web de guasax, o en el blog de su autor, Ángel Blesa, podréis ver en detalle las posibilidades que ofrece. El motivo de haberlo utilizado en este ejemplo es para ver los pasos a la hora de realizar las llamadas de una forma mucho más limpia que sin utilizar ningún framework.
Para realizar las llamadas, declararemos los servicios a llamar en el Service Locator de la siguiente manera:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <guasax:ServiceLocator xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:guasax="es.guasax.services.*" > <mx:HTTPService id="nombre_del_servicio" url = "url que queremos llamar" method="get" contentType="application/x-www-form-urlencoded" showBusyCursor = "true" useProxy = "false" requestTimeout = "120" result="event.token.resultHandler( event )" fault="event.token.faultHandler( event )" > </mx:HTTPService> </guasax:ServiceLocator> |
Dentro del ServiceLocator, nos definiremos tantos HTTPService como necesitemos. Cada HTTPService tendrá una url para llamar a un servicio u a otro.
Para llamar a los servicios y procesar su respuesta. Cada llamada al servicio constará de tres funciones: una para realizar la llamada, otra para procesar la respuesta en caso de éxito en la llamada, y otra para procesar la respuesta en caso de error en la ejecución del servicio. Esto en guasax se conoce como una action y se implementa de la siguiente manera:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /** * Realiza la peticion del servicio */ public function llamadaServicio(...):void{ var params : Array = new Array(); params["nombre_parametro"] = "valor_parametro"; //tantos como sean necesarios ServiceLocator.getInstance().executeService( "nombre_servicio", //definido en el codigo anterior "", //Cadena vacia en este caso. Los httpservice en guasax no necesitan este parametro params, //Parametros que acabamos de definir llamadaServicioOnResult, //funcion en caso de exito llamadaServicioOnFault, //funcion en caso de error this); //Clase que recoge el resultado } /** * Funcion en caso de exito */ public function llamadaServicioOnResult(event:ResultEvent):void{ var resultado:XML = event.result as XML //Parseo del XML } /** * Funcion en caso de error */ public function llamadaServicioOnFault(event:FaultEvent):void{ Alert.show(event.message.toString()); //Mostramos el mensaje de error } |
Para ver mucho mejor todo esto podéis ver el siguiente ejemplo. Esta sin completar, pero para ver el funcionamiento de las peticiones REST es suficiente. En el buscador introducimos el nombre del artista o grupo que queremos buscar, y una vez lo tengamos en la lista de resultados, podemos consultar su discografía y posteriormente la información de cada disco en detalle, con las canciones que lo conforman y demás información.
Este ejemplo ha sido compilado con la beta3 del flex builder. Podéis ver y descargar el código fuente del proyecto pulsando con el botón derecho sobre la aplicación y dándole a view source.
Espero que sirva de ayuda. Saludos!!
ablesa said,
20.01.08 at 21:05
Que bueno Antonio! enhorabuena! un fenomeno.
s2.
victor said,
22.01.08 at 20:43
Impresionante ejemplo de uso de Flex y REST!! Me has dejado con la boca abierta, si vienen hasta los grupos que escucho yo, que no los conoce ni dios. Si incorporas esto al drag and drop y al reproductor de música yo me quito el winamp :-).
Un saludo jefe!!