Está en la página 1de 14

Integracin de Sistemas Informticos

Mster Universitario en Ingeniera Informtica

Sesin Experimental 2.1


Acceso a servicios mediante APIs REST

Tipos de APIs
Existen dos tipos de APIs que permiten ofrecer un software como servicio (SaaS, Software as a Service): REST
Utilizacin de los mtodos GET y POST del protocolo HTTP para realizar peticiones. Ej.: http://search.twitter.com/search.json?q=uc3m

Libreras cliente
Libreras de cdigo para distintos lenguajes de programacin que facilitan la conexin con el servicio. Ej.: http://dev.lexalytics.com/wiki/pmwiki.php?n=Main.Welcome
3
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Protocolos de Acceso
Dos mecanismos:
Mediante claves de acceso
El cliente solicita una clave travs del sitio web del producto, que introduce en cada una de sus peticiones. http://www.openamplify.com/quickstart

Mediante el protocolo open source OAuth


Protocolo abierto que proporciona autorizaciones de acceso seguro a APIs mediante un mtodo simple y estndar tanto para aplicaciones de escritorio como para aplicaciones web.

4
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Proporciona 3 APIs: Search API: Permite definir bsquedas mediante palabras en Twitter, permitiendo filtrar por usuario. Bsicamente se sigue proporcionando por motivos de compatibilidad.

REST API: Da acceso a toda la funcionalidad bsica de Twitter, a las mismas funciones que un usuario puede utilizar desde su cuenta. Podra servir, por ejemplo, para construir un cliente de Twitter. Streaming API: Ofrece un enganche directo al canal de mensajes de Twitter. Para aplicaciones intensivas en datos (que aplican tcnicas de minera o anlisis de datos)
5
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Cosas que todo desarrollador sobre Twitter debera saber (I)
El campo id del tweet da problemas en JavaScript, usar id_str. Existen limitaciones de uso (150 peticiones por hora si no se est registrado) La API se basa en HTTP: los mtodos GET permiten recuperar datos de Twitter y los mtodos POST envan, modifican o destruyen datos en Twitter.
6
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Cosas que todo desarrollador sobre Twitter debera saber (II)
Exceptuando Streaming API, el resto respetan la filosofa REST. Soporta XML, JSON, RSS y Atom. Los valores de los parmetros deben convertirse a UTF-8 y codificados mediante URL encoded. Ms en: https://dev.twitter.com/docs/things-every-developershould-know
7
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Cmo conseguir una clave de acceso?
Emplea el protocolo OAuth Dos pasos:
Obtener un token de acceso (para actuar en nombre de un usuario) Autorizar las peticiones HTTP que la aplicacin enva a Twiter

Se crea una cuenta de desarrollador y en la seccin MyAplications y se crea una nueva aplicacin. En la pgina de datos para la aplicacin se encuentran las claves necesarias y los tokens de acceso.

8
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Acceso desde un programa Java:
Utilizando la librera Twitter4j
Esta librera hace de interfaz con el servicio REST de Twitter, proporcionando clases y mtodos Java que pueden utilizarse directamente en una aplicacin.

Existen libreras para cualquier lenguaje de programacin:


ActionScript/Flash C++ Java JavaScript .NET Perl PHP Python Ruby
9
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Acceso desde un programa Java:
Estableciendo la conexin: Para acceder al flujo (stream) de tweets necesitamos un objeto TwitterStream y asociarle un listener:
twitterStream = new TwitterStreamFactory().getInstance(); IndexTweetsListener listener = new IndexTweetsListener(); twitterStream.addListener(listener);

El listener permite procesar cada tweet que se genera en el canal sobrescribiendo el evento status.

10
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Listener
public class IndexTweetsListener implements StatusListener{ public void onStatus(Status status) { try{ //Informacin del usuario User usr; usr = status.getUser(); String sUsLang = usr.getLang(); //Informacin del tweet //Texto String sTexto = status.getText(); }catch(Exception ex){ ex.printStackTrace(); } 11 } }
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Si se quiere filtrar por cuenta o por una palabra clave, es necesario definir un filtro:
ArrayList<String> track = new ArrayList<String>(); sClaves = p.getProperty(claves_a_seguir); if((sClaves != null)&&!(sClaves.equals(""))){ track.addAll(Arrays.asList(sClaves.split(","))); } String[] trackArray = track.toArray(new String[track.size()]); // filter() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously. FilterQuery fq = new FilterQuery(); fq.track(trackArray); twitterStream.filter(fq); 12
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Ejemplo sencillo: Twitter


Resultado
DEBUG TweetsAccessExample - HourlyLimit: 350 DEBUG TweetsAccessExample - RemainingHits: 350 DEBUG TweetsAccessExample - ResetTime: Fri Dec 02 13:14:01 CET 2011 DEBUG TweetsAccessExample - ResetTimeInSeconds: 1322828041 DEBUG TweetsAccessExample - SecondsUntilReset: 3605 DEBUG TweetsAccessExample - Texto=[@kurenai_ageha SP iPhone ] DEBUG TweetsAccessExample - Entidad mencionada=[UserMentionEntityJSONImpl{start=0, end=14, name='Kaho.', screenName='kurenai_ageha', id=101696274}] DEBUG TweetsAccessExample - Fecha=[Fri Dec 02 12:13:59 CET 2011] DEBUG TweetsAccessExample - Id=[142562147141033984] DEBUG TweetsAccessExample - localizacion_usuario=[] DEBUG TweetsAccessExample - nombre_usuario=[rinkoavs] DEBUG TweetsAccessExample - fecha_usuario=[Mon Feb 22 12:01:20 CET 2010] DEBUG TweetsAccessExample - id_str_usuario=[116416595] DEBUG TweetsAccessExample - idioma_usuario=[ja] 13
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

Objetivo de la prctica
Implementar un programa que acceda a Twitter, ya sea en modo annimo o mediante una clave de acceso. Programar una aplicacin que tome como parmetro una cuenta sobre la que ejecutar una bsqueda y/o una expresin de bsqueda.

14
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid

También podría gustarte