API vs Webhooks

Tráfico API vs Webhook

Una interesante tendencia de Internet de los últimos 10 años ha sido la evolución de sitios web estáticos a aplicaciones y servicios en tiempo real. Es casi inaudito encontrar un nuevo sitio web en estos días que no tenga algún tipo de componente de servicio realtime.

¿Qué es una API?

La abreviación de Application Programming Interface (Interfaz de Programación de Aplicaciones). Es una interfaz de servicio realtime que permite a los desarrolladores y aplicaciones de terceros tomar data de un determinado sitio en internet.

Como lo define Wikipedia:

Es un conjunto de subrutinas, funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software.

Casi todas las nuevas aplicaciones web en estos días tiene una API. Las API en particular se han vuelto más populares en los últimos dos años. Muchas aplicaciones web tienen APIs públicas que permiten a los desarrolladores construir sobre sus servicios. Con el aumento de las aplicaciones móviles multiplataforma y webapps, el crecimiento de las APIs tanto públicas como privadas ha sido indetenible.

Una API es básicamente una forma de hacer una solicitud a otra aplicación. Por ejemplo, si estamos desarrollando una aplicación y queremos encontrar a las personas que nos siguen en Twitter, podría solicitar esta información a la API de Twitter: “Dame una lista de todas las personas que me siguen”. No hay diferencias si nuestra aplicación está en Ruby, Php, Javascript, etc., y Twitter otro lenguaje porque la API transmite y recibe datos en un formato común (normalmente JSON o XML). Esto permite que dos aplicaciones totalmente separadas envíen y reciban datos.

Una API también es útil cuando se desea realizar una acción directa con otro servicio web. Digamos que tengo una aplicación construida para ser usada con Google Map. Quiero que mis usuarios utilicen la aplicación para buscar restaurantes en la zona donde se encuentran permitiendo hacer una solicitud a la API de Google para obtener todos los restaurantes en la zona y esta responderá con las coordenadas de los mismos para ser tratadas en nuestra aplicación.

Una API es una excelente forma de comunicar datos entre aplicaciones separadas. Pero, ¿qué pasa si quieres que te notifiquen cambios en determinado evento o elemento en otra aplicación? En este caso, una API sería extremadamente ineficiente. En su lugar, necesitas utilizar un Webhook.

Vamos a mirar un poco los Webhooks, para que se utilizan y lo increíblemente útil que puede ser.

¿Qué es un Webhook?

Un Webhook es una manera de ser notificado cuando un evento ha ocurrido en tu aplicacion o la de un tercero. Es básicamente una solicitud POST que se envía a una URL específica. Esa URL está configurada para recibir el cuerpo de la solicitud POST y procesarla de alguna manera. Por lo tanto, si alguna vez has creado un formulario y lo has enviado en código, sabes cómo crear una solicitud POST.

Por ejemplo, digamos que había creado una aplicación para encontrar restaurantes en la API de Google Map y que ahora queremos que Google nos notifique cuando un restaurante sea encontrado o detectado digamos, a 100 metros. Imaginemos que la notificación contenga el nombre del usuario asociado a la cuenta de Google, toda esta informacion podríamos obtenerla por medio de un Webhook perteneciente a Google. Desconozco si Google Map posee esta funcionalidad, sin embargo es muy importante hoy día para crear aplicaciones usables y comunitarias.

Así que una API se utiliza para hacer preguntas directas y un Webhook se utiliza para notificar cuando se producen ciertos eventos. En lugar de preguntar constantemente si algo ha cambiado, un webhook puede activarse y notificarnos automaticamente apenas se produzca el evento.

Conclusion

Cuando requieras notificaciones en tiempo real de eventos, un Webhook es realmente tu mejor opción. Es extraño que los Webhooks no tengan el mismo tipo de amor que las APIs. Siempre escuchamos hablar sobre las APIs, pero muy poco de las Webhooks a pesar de sus enormes ventajas y facilidades.

Me agrada que más servicios al consumidor están adoptando Webhooks. Tiene sentido para empresas de tipo consumidor como Mailchimp, SendGrid, Stripe y Shopify, pero creo que sería bastante interesante si más aplicaciones las ofrecieran también. La capacidad de iniciar un proceso basado en un evento en una aplicación independiente es extremadamente potente y ofrece una visión del futuro de la web en tiempo real.