7 de febrero de 2012

Qué es una API y por qué nos debe importar



En estas dos últimas semanas ya han sido varios quienes me han preguntado qué es una API. Lo que podemos leer en la Wikipedia o en otros sitios peca de un lenguaje especializado que hace que la mayor parte de los lectores no se aclaren. Aquí voy a tratar de explicarlo de forma sencilla, para que todo el mundo lo entienda.

Una API es una descripción de los recursos disponibles en una aplicación
(p. ejm. uno de esos recursos en la API de Twitter es "obtener el último tweet de un usuario")
y de los métodos que deben utilizarse para hacer uso de ellos
(p. ejm. "para obtener el último tweet de un usuario, debes usar la dirección web http://api.twitter.com/etc.etc... e incluir en ese link el nombre de usuario")
Podrás ver un ejemplo práctico al final de este post. Pero veamos de dónde vienen y lo entenderemos mejor.

Hace tiempo que la web dejó de ser una gran masa de páginas y contenidos enlazados entre sí mediante links. Los desarrolladores enlazan también funcionalidades y datos entre un sitio y otro y para ello se valen de la API del sitio con el que quieren iteractuar. API viene de Application Programming Interface, que signfica "interfaz programable de la aplicación". Si una aplicación tiene una API, quiere decir que no sólo se puede interactuar con ella a través del teclado y el ratón, sino que existe la posibilidad de enviarle órdenes de forma automática utilizando su API. Con este sistema de APIs ahora tenemos una web programable que permite a nuestros desarrolladores el acceso a una creciente gama de servicios que pueden consumir ellos mismos o que incluso pueden ofrecer a sus usuarios como si fueran propios.

Alguno de los primeros servicios a los que se podía acceder en la web de esta forma, sin intervención humana, fueron los que publicaban tipos de cambio de divisas o cotizaciones de bolsa. Desde nuestra página web podíamos crear un link especial hacia esa web, que al ser pulsado devolvía a nuestro visitante el precio al que estaba en ese momento el dolar. Nuestro visitante entonces pensaba que esa información estaba en nuestro servidor, pero nada más lejos de la realidad...el dato en cuestión viajaba desde otro servidor situado en EEUU, pero a una velocidad que le hacía pensar que salía de nuestra misma página.

Esta forma de intercambio de información entre sistemas informáticos ha existido siempre, pero entonces "los enchufes" se tenían que hacer a la medida cada vez que queríamos interoperar con otro servidor. A diferencia del proceso de evolución de las especies, aquí finalmente no triunfa el más fuerte sino el más simple. Los grandes intentos por estandarizar esos enchufes, como fueron CORBA o SOAP se cambian progresivamente en favor de formatos más sencillos que todo el mundo puede usar sin demasiados conocimientos técnicos, como es el popular método REST, acrónimo de Representational State Transfer, y mediante el cual podemos acceder a la mayor parte de los servicios que hoy día se exponen en la web. Lo sencillo vuelve a triunfar una vez más.

Por el camino han quedado toda una serie de formatos o "enchufes" que en cierta forma me recuerdan a ese cajón que solemos tener en casa lleno de cargadores de teléfonos móviles...todos hacen lo mismo y funcionan, pero ninguno nos sirve ahora.

La popularidad de este método REST para intercambiar información y ofertar funcionalidades ha alcanzado ya una masa crítica que hará que el uso de este tipo de servicios se dispare en los próximos años. Todos los sitios web tendrán una API o harán uso de ella. Formularios, bases de datos, backups, CRMs, facturación, validación de datos, portales, call centers, feedback, ...todos estos servicios necesitan trabajar coordinados, con datos sincronizados en tiempo real, sobre diferentes aplicaciones y sistemas, por Internet y en varios tipos de dispositivos fijos y móviles. Todo esto sólo es posible con un denso tramado de APIs de calidad. Es ahí a donde vamos y es a ese escenario al cual tenemos que orientar nuestro rumbo.


Google, Amazon, Twitter y Facebook.

Estos cuatro son los responsables de la enorme difusión de esas APIs. Cuando el desarrollador de un servicio web tipo Flickr o Picasa, o de una aplicación de CRM como Salesforce quiere que los datos o las funcionalidades se puedan manipular desde otra aplicación, debe definir qué recursos estarán expuestos y de qué forma se accederá a ellos. Eso es la API. Si una aplicación web tiene API, lo que quiere decir es que de alguna forma podremos comunicarnos con ella desde otra aplicación.

Un ejemplo: si quiero abrir una nueva línea de negocio añadiendo una aplicación de comercio electrónico a mi comercio tradicional, debería seleccionar una con la que pudiera comunicarme, es decir, que tenga una API, y que esa API me deje, por ejemplo, actualizar las cantidades en stock de forma automática desde la aplicación que ahora utilizo para gestionar mi almacén.

Es la nueva web, abierta y programable.

Para hacernos una idea de qué significa ésta nueva arquitectura de la web, bastará el ejemplo del explosivo crecimiento de Twitter. Twitter tiene una de las APIs más utilizadas de la web. Sobre esa API, otros construyeron servicios que han multiplicado la presencia de Twitter en todo tipo de plataformas móviles, una expansión que ellos solos nunca hubieran logrado, al menos tan rápidamente. Incluso su servicio de búsquedas, el que ahora utilizan, lo adquirieron a un tercero que lo había programado sobre la API de Twitter. Los propios programadores de Twitter no fueron capaces de hacer algo tan bueno.

Klout es otro de esos servicios en auge que también usan la API de Twitter. Ellos a su vez publican su propia API que suma al servicio de Twitter el valor añadido de la funcionalidad de Klout, una categorización y valoración pormenorizada de la actividad de los usuarios de Twitter.

El caso de Facebook es otro ejemplo paradigmático. Facebook empezó publicando una API para que otros desarrolladores pudieran ofrecer servicios dentro de Facebook. Ése es el caso de Zynga, un desarrollador de juegos para Facebook, que ha levantado un billón de dólares americanos en su reciente salida a bolsa.


Ahora Facebook ha dado un paso más, esta vez para extender sus tentáculos por toda la web. Con nuestros "me gusta" y comentarios que hacemos en otros sitios, recogen a través de su API una valiosa información que luego explotan en su red social. Ya no tienes que entrar en facebook.com para publicar comentarios, es Facebook quien te sale a buscar fuera.


Hacia dónde vamos ahora

Este mundo de las APIs es relativamente nuevo aunque ya empezó hace unos diez años. Aún recuerdo una presentación a finales del 2001 en el Comité de Investigación en Tecnologías de la Información (CITI) a los responsables de innovación tecnológica de varias empresas, entre las que estaban Iberia, El Corte Inglés, Banco de Santander, Renfe, Telefónica, Indra y alguna más. Ahí les presentaba como novedad la API que habíamos desarrollado para la aplicación Viapack, un servicio web que gestiona información e imágenes de productos de gran consumo. Aquella API la habíamos desarrollado con SOAP, un sistema como REST, pero que documenta la API de forma que la propia descripción de los métodos y recursos pueda ser leída por una máquina. Desde entonces REST ha ido ganando terreno y popularidad, tal y como nos muestra el gráfico que recientemente ha publicado programmableweb.com, la web de referencia para este tipo de servicios.



Nada mejor que un ejemplo

Aquí puedes ver mi último mensaje en Twitter en un formato para humanos. Yo no lo he escrito dentro de este post, sólo he usado un código que llama a la API de Twitter, que a su vez me devuelve el texto de mi último tweet (visible en navegadores con javascript activado):


Ahora si pulsas sobre el siguiente link, verás el mismo tweet, pero en un formato para máquinas:https://api.twitter.com/1/statuses/user_timeline.json?count=1&screen_name=jaimenm

Si analizas este link verás dos parámetros count=1 y screen_name=jaimenm

screen_name es el usuario de twitter que quieres consultar y count el número de tweets que quieres recabar de ese usuario. Haz tú mismo alguna prueba: copia el link, lo pegas en el campo de dirección de tu navegador y ahí mismo cambias los parámetros.


Conclusión

Creo que es fácil ver el profundo cambio que esto tendrá sobre la forma en la que ahora diseñamos nuestras estrategias, los servicios o las campañas que hacen uso de datos y aplicaciones. Con este post espero haber aclarado qué son las APIs y por qué son importantes en un entorno abierto como es el de las empresas obligadas a competir en una economía que como la nuestra, se encuentra ante una profunda transformación.


Jaime Núñez
@jaimenm