Webhooks: qué es y cómo se diferencia de una API

Con el auge de los microservicios en la industria del software, las API han salido totalmente beneficiadas.

Es una temática recurrente entre comunidades, foros, artículos en la web, hasta SaasRadar es un claro ejemplo.

Y es que la integración de servicios es una idea muy atractiva y  ha revolucionado la manera en que los desarrolladores implementan sus aplicaciones.

Pero, aunque es una pieza esencial en este puzzle tecnológico, hay otras tecnologías que esperan a la sombra.

Por este motivo desde SaasRadar queremos presentar Webhooks, una tecnología que, sin tanto bombo y platillos, aporta un gran valor a cualquier sistema.

¿Qué son los Webhooks?

Un Webhook es un sistema de comunicación entre aplicaciones que permite la notificación en tiempo real a través de HTTP cuando se cumplan ciertos criterios en la aplicación encuestada.

Para que se comprenda mejor haremos una analogía. Imagina que vas a hacer un trámite y entregas unos documentos que deben ser analizados por varias personas, y quieres conocer en cada momento en qué paso está.

Webhooks y API son tecnologías para fines diferentes, y no son excluyentes.

En este caso tienes 2 opciones, o te mantienes llamando al establecimiento para que te informen, a riesgo de generar cierta molestia, o les dejas tu número de teléfono o tu mail para que te contacten cada vez que cambia de estado.

La primera opción sería el envío de consultas a la API y la segunda, Webhooks.

Siguiendo esta analogía, la aplicación cliente necesita ser notificada de la ocurrencia de cierto evento en la aplicación que tiene la información, por lo que en vez de mantenerse enviándole peticiones que sobrecargan su API, simplemente crean un endpoint y se lo brindan para que le sea informado el cambio en tiempo real.

Webhooks vs API

Debo aclarar que, aunque suelen confundirse Webhooks y API son tecnologías para fines diferentes, y no son excluyentes.

De hecho, el escenario ideal es que puedan convivir en un mismo sistema en caso de necesitarlo.

Ambas tecnologías integran servicios y aplicaciones para compartir datos y promover la descentralización, pero mientras API basa su funcionamiento en las peticiones, Webhooks se enfoca en los eventos.

Los Webhooks tienen un principio de funcionamiento mucho más sencillo que las API. Ahorran mucho tiempo y recursos de cómputo, ya que mediante su uso tendrás la seguridad de que una vez que ocurra el evento que esperas serás notificado desde la aplicación externa, y a partir de esta notificación puedes desencadenar acciones en tu propia aplicación.

A continuación, les resumo lo anterior en 2 imágenes que representan las peticiones utilizando solamente API y cuando incluimos Webhooks.

Flujo de trabajo con API.
Flujo de trabajo con Webhooks.

👉  También te puede interesar leer: Las mejores tecnologías para API testing

Escenarios ideales para Webhooks

Los Webhooks son ideales en escenarios donde se requiera la vinculación de 2 o más servicios y quieras desencadenar una acción cuando ocurra un determinado evento. Veamos algunos de sus usos más comunes:

  • Notificaciones de eventos.
  • Automatización de procesos.
  • Vinculación de servicios.
  • Sincronización de datos.

¿Quiénes usan Webhooks?

Existen 2 grandes grupos de aplicaciones que utilizan Webhooks si lo clasificamos por su objetivo final.

Uno de estos grupos es el de los sistemas que utilizan esta tecnología para notificar la activación de sus eventos. Este es el caso de aplicaciones como Facebook, Gmail, Telegram, Github, entre muchos otros.

El otro grupo es el de las aplicaciones que permiten conectar varios sistemas para automatizar procesos por medio de las notificaciones de eventos ocurridos.

En este caso podemos hacer, por ejemplo, que cuando publiquemos en una de nuestras redes sociales se replique la publicación en el resto.

Les dejo algunas de estas tecnologías para que le echen un vistazo, aunque luego estaremos haciendo un ejemplo práctico con una de ellas.

Aplicaciones para la automatización de procesos:

Les recomiendo explorar estas aplicaciones para vincular sus servicios, verás abrirse frente a tus ojos todo un mundo de posibilidades y casos prácticos de uso.

👉  También te puede interesar leer: Mis tecnologías favoritas para el desarrollo de API REST

¿Cómo crear un Webhook en Discord?

Pasamos ahora a la práctica para que veas un ejemplo de uso de esta tecnología. Para mostrarte todo el proceso elegimos Discord, que permite crear un endpoint de una manera muy sencilla.

  1. Lo primero sería instalar Discord, recomiendo la versión oficial para PC que puedes descargar desde su web oficial.
  2. Debes autenticarte o crear una cuenta en caso de no tenerla con antelación.
  3. Creamos un canal en nuestro servidor para recibir las notificaciones.
Creando canal en Discord

4. Introducir el nombre del canal y presionar Crear canal.

Creando canal en Discord

5. Editamos el canal para crear nuestro Webhook asociado.

Editando canal en Discord

6. Hacemos clic en Integraciones.

Creando Webhook en Discord

7. Hacemos clic en la opción Crear Webhook.

Creando Webhook en Discord

8. Ponemos un nombre al Webhook, elegimos el canal y copiamos la URL que nos genera.

Creando Webhook en Discord

Como resultado tendremos una URL como la que sigue. Debes asegurarte de no compartir esta URL con nadie porque es la dirección del endpoint, por lo que con este dato es posible que terceras personas publiquen en tu canal.

En este caso les expongo una URL que ya no se encuentra en funcionamiento.

URL Generada: https://discord.com/api/webhooks/874045890311782982/wVYr1OavP-t4L3qmxr3cdVqe3xvQczPkGo1piaPhm5KejdjprOSVcjc69FZdR5SN8Gbc

De este modo ya tenemos un canal en Discord con un endpoint para unir a cualquier servicio que soporte Webhooks.

👉 También te puede interesar leer: API REST: Cómo consumir servicios en diferentes lenguajes

Ahora, ¿cómo uso este Webhook?

Como decíamos anteriormente existen muchos servicios actualmente que soportan esta tecnología, hoy escogeremos uno y llevaremos este ejemplo hasta el final.

¿Qué queremos lograr?

Para este ejemplo haremos que cuando publiquemos algo en nuestro canal de Telegram notifique automáticamente vía Webhook en el canal de Discord que hemos generado.

Para realizar este sencillo ejemplo estaremos trabajando con IFTTT, por ser una plataforma con soporte para Telegram y con algunas bondades interesantes para cuentas Free.

A continuación, te muestro los pasos para asociar el evento lanzado en Telegram con el Webhook creado.

  1. El primer paso sería entrar a la aplicación móvil de IFTTT o a su web, disponible bajo la URL https://ifttt.com/
  2. Crear cuenta o autenticarte en caso que ya tengas una.
Login de IFTTT

3. Procedemos a crear nuestra integración haciendo clic en Create.

Crear Applet en IFTTT

4. Podrás observar la base de este servicio, una simple condicional, SI (acción) Entonces (acción). Vamos a IF This y hacemos clic en Add.

Agregando desencadenador

5. Seleccionamos el servicio que queremos que despliegue el mecanismo de integración. En nuestro caso el evento sería la publicación en un canal de Telegram, por lo tanto, elegimos Telegram.

Seleccionando Telegram como servicio

6. En las opciones de Telegram seleccionamos Nuevo post en tu canal.

Seleccionando acción desencadenante

7. Si no lo has hecho, debes enlazar tu servicio IFTTT con tu Telegram, esto lo podemos hacer haciendo clic en Connect, el cual te llevará al bot oficial de IFTTT en Telegram.

Conectando IFTTT con Telegram

8. Autorizamos la conexión entre los servicios y esperamos el mensaje de confirmación.

Autorizando el bot de IFTTT

9. Enviamos el comando /connect_channel para conectar el canal con el servicio.

Conectando canal

10. Siguiendo las indicaciones que da el bot, debemos agregarlo como administrador al canal y especificarle la URL o reenviarle un mensaje.

Agregando el bot de Telegram como admin del canal
Canal conectado

De este modo queda enlazado el canal y es visible desde IFTTT, veamos cómo sigue.

11. Volvemos a cargar la página en IFTTT y veremos algo como esto:

Canal conectando en IFTTT

12. De este modo tenemos configurada la acción desencadenante, pasamos ahora a la acción resultado. Para esto hacemos clic en Add como se ve en la siguiente imagen.

Agregando acción dependiente

13. Seleccionamos Webhook.

Seleccionando Webhook

14. Seleccionamos Make a Web Request, para hacer una petición a la URL de nuestro endpoint en Discord.

Seleccionando Realizar petición Web

15. Configuramos los parámetros de la petición web introduciendo la URL que obtuvimos de Discord como vemos en la siguiente imagen.

Configurando petición

16. De este modo ya tenemos configurado el enlace entre estos servicios. Hacemos clic en la opción Continuar.

Confirmando creación de enlace

17. Confirmamos la operación haciendo clic en Finalizar.

Confirmando creación de enlace

Solo nos queda probar la integración de los servicios. Si seguiste todos estos pasos cuando realices una publicación en el canal de Telegram, automáticamente se enviará al canal de Discord vía Webhook.

Resumiendo

  • Webhook es una tecnología clave en la integración entre aplicaciones.
  • Permite la notificación en tiempo real a través de HTTP.
  • Su propósito y modo de explotación es diferente al de las API.
  • Elimina las peticiones múltiples a un servicio para consultarlo, con Webhook los servicios son quienes te contactan cuando se den las condiciones planificadas.
  • Existen varias plataformas de integración de servicios con funcionalidades muy variadas que permiten automatizar la mayoría de los procesos comunes.
  • Discord permite la creación de endpoint de un modo muy sencillo, de manera que puedes preparar un canal para que notifique los eventos de otro servicio externo que admita Webhook o a través de una plataforma de integración.
  • La mayoría de los servicios en el mundo cuentan con soporte para Webhook.

Con esto terminamos el artículo, espero que te resulte de utilidad la información que te brindo y que hayas entendido el funcionamiento a fondo de esta tecnología.

Te sugiero que empieces a pensar cómo aprovechar los beneficios que puedes obtener con Webhooks y que lo uses cuanto antes, se abrirá ante ti un nuevo mundo de posibilidades.

Hoy te recomiendo nuestro artículo sobre Tango, la extensión para crear guías paso a paso que me facilitó mucho la creación de este tutorial.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.