AAP Bloque 1.2 Ejercicio 2 – Ejemplos de interfaces REST

Hacer un programa o buscar un ejemplo que use un interfaz REST para acceder a algún servicio Web, como del.icio.us.

Se denomina interfaz REST a una técnica para el acceso a recursos a través de una URI.

La mayoría de los servicios webs actuales ofrecen una API, que son un conjunto de funciones y procedimientos para desarrollar aplicaciones externas, generalmente mediante la técnica REST. Veamos un par de ejemplos.

Last.fm es el mayor portal de recomendación de música online y una de sus múltiples funciones de su API es geo.getEvents, que nos da los eventos cercanos a una posición. Por ejemplo, con http://ws.audioscrobbler.com/2.0/?method=geo.getevents&location=granada&api_key=b25b959554ed76058ac220b7b2e0a026 veremos los próximos conciertos que se van a celebrar en o cerca de Granada.

Podemos ver otro ejemplo en el caso de Flickr, la mayor red social de fotografía online. Si usamos la función flickr.favorites.getPublicList de su API, podemos obtener las fotografías públicas favoritas de un usuario de esta forma: http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&api_key=a6a323fe1aa900e0c15211f28ffdc42c&user_id=92176591%40N00

Normalmente los resultados de estas peticiones se devuelven en formato XML o JSON, para que el procesador posterior de los datos resulte lo más cómodo posible.

En la mayoría de estos servicios es necesario solicitar una API Key para hacer las peticiones, de manera que en todo momento se sabe el uso que se hace de ella y te la pueden inhabilitar si sobrepasas los límites del servicio.

Nota: leer comentarios.

4 comentarios en “AAP Bloque 1.2 Ejercicio 2 – Ejemplos de interfaces REST

  1. blaxter

    Una interfaz REST no es simplemente algo accesible por una URI. Esos dos ejemplos no tienen nada de REST.

    Unas uris a las cuales les estás pasando method=foo.bar es precisamente todo lo que REST intenta evitar, un modelo rpc.

    Que los propios sitios lo llamen REST es ese ya otro tema. Por desgracia éste es un término que hace poco tuvo su auge y se ha convertido en una buzz word, por lo que se usa indiscriminadamente para etiquetar todo, aún sin tener ni el más remoto parecido.

  2. DraXus

    blaxter: por lo que he podido entender de la Wikipedia lo *realmente* REST sería trabajar a base de GET (para obtener), POST (para crear), PUT (para actualizar) y DELETE (para borrar) sobre recursos accesibles por URIs.

    Según parece a esos ejemplos que he puesto se denominan REST-like (de mentirijilla, vamos xD).

    Al parecer el protocolo Atom (RFC 5023) sí se podría considerar como un ejemplo de REST.

    Gracias por tu respuesta, he visto en tu blog que te leíste un libro sobre servicios REST, así que estarás bastante mejor puesto que yo xD

  3. blaxter

    REST digamos que es de mis tecnologías favoritas y he hecho bastantes cosas.

    Esos servicios, no son absolutamente nada REST, pero pocos ejemplos en servicios públicos vas a encontrar que lo sean.

    El ejemplo más claro (aunque es muy simple) es el servicio S3 de amazon y como segundo ejemplo típico la api de delicious (que ya no es rest, pero algo se asemeja remotamente…, muy remotamente).

    La gracia y la clave del asunto es que cambias tu arquitectura típica rpc (favorites.getPublicList()) por una arquitectura basada en recursos (combinación de palabras muy maja, pero que solo llegarás a entender después de enfrentarte a diseñar un interfaz rest y modificarla veinte veces), GET /users/paco/favorites. Gracias a eso consigues tener una interfaz común y conocida (métodos del protocolo de comunicación que uses, que puede ser HTTP o puede ser el que sea) para interactuar con todos los recursos. Es decir, conociendo los recursos estás explicando el diseño conceptual e implícitamente dando a conocer su uso práctico.

    Cómo me pone :)

Los comentarios están cerrados.