La mejor forma de Aprender Programación online y en español www.campusmvp.es
Cómo publicar tus librerías JavaScript en npm como un profesional |Tipos de personalidad entre programadores y cómo incide en tu nómina
Por José Manuel Alarcón
Avanza en tu carrera como desarrollador de la mano de los mejores »
Desde hace muchos años, es casi impensable desarrollar una aplicación seria que no tenga necesidad de conectarse y comunicarse con otras aplicaciones. Especialmente si se trata de una aplicación Web.
A lo largo de las últimas décadas se han desarrollado diversas especificaciones para facilitar esa comunicación. Por ejemplo, a principios de siglo, lo más de lo más era SOAP (Simple Object Access Protocol), un protocolo de llamadas remotas basado en XML. Y desde hace ya años, lo más utilizado son las APIs Web REST, aunque han surgido otras iniciativas como OData para manejo de datos o, más recientemente, GraphQL.
Otra opción de la que seguro habrás oído hablar mucho en los últimos años son los Webhooks.
Qué es una API y para qué sirve
Una API (Application Programming Interface) es una vía para que una aplicación exponga datos y funcionalidad a otras aplicaciones.
En las APIs que se exponen a Internet, una forma común de poner a disposición estos datos y funcionalidades es mediante una API REST, que básicamente consiste en una API que funciona recibiendo llamadas HTTP (como las que haces con tu navegador) en ciertas direcciones (URL) que se conocen como endpoints.
Por ejemplo, si estamos creando una tienda online y necesitamos servicios de pago, podemos usar la API de la conocida pasarela de pagos Stripe para delegar en ella multitud de cuestiones. A través de esta API podemos efectuar acciones, como llamar al endpoint que genera un cargo en una tarjeta de crédito, pero también podemos obtener información, como averiguar nuestro saldo u obtener un listado de nuestros clientes.
Existen APIs REST para todo tipo de servicios y funcionalidades: desde información del tiempo hasta las cosas más complejas con mapas o inteligencia artificial. Y la mayor parte de las aplicaciones Web que utilizas exponen parte de su funcionalidad (¡o toda!) a través de una API REST.
Qué es un Webhook y para qué sirve
Casi todo lo que hacemos en una aplicación, al final se traduce en eventos. Por ejemplo, volviendo al caso de la tienda online, un evento de interés para nosotros se produce en el momento en el que se procesa un pago con éxito. En ese instante nos interesará hacer varias cosas: enviar un correo al comprador, generar una factura, poner en marcha el proceso de envío del producto, etc.
Si lo único que tenemos es una API REST tradicional, para enterarnos de que un evento ha ocurrido en otra aplicación (la compra se ha efectuado con éxito en la pasarela de pagos), deberemos consultar la API periódicamente. Por ejemplo, mandamos a la pasarela la orden de pago, y por diversos motivos pueden pasar varios minutos hasta que se procese. Nuestra tienda llamaría a la API cada poco tiempo para conocer el estado de la operación, hasta el momento en el que nos dé un resultado (se ha procesado con éxito, se ha cancelado...). Lo podemos visualizar como algo así:
Bien, un Webhook invierte esta situación, para que sea la aplicación que nos interesa la que nos notifique automáticamente cuando se ha producido un determinado evento.
Es decir, un Webhook es también un endpoint pero en nuestra aplicación, y en lugar de iniciar la llamada nosotros, es la aplicación con la que nos coordinamos la que nos notifica cuándo ocurre algo de interés. Le da la vuelta a la comunicación.
En nuestra hipotética tienda, lo que haríamos sería registrar en Stripe un Webhook para el evento de que se ha procesado un pago y será la pasarela la que llame a un endpoint nuestro cuando se produzca, pudiendo iniciar el resto de acciones que procedan para ese caso.
De hecho, esta es la forma recomendada de realizar la integración con Stripe: mediante la API de
Intents
, que se basa en el uso de webhooks.
El esquema de las comunicaciones ahora es así:
Este esquema de funcionamiento tiene muchas ventajas, tanto para la aplicación usuaria como para la que presta el servicio:
- Ahorro de recursos y tiempo: con una API, la aplicación usuaria hará muchas veces llamadas "para nada", que no devolverán información alguna. Las dos aplicaciones gastan recursos para hacer y responder a muchas llamadas que no tienen utilidad alguna.
- Eliminación de los retrasos: con un webhook la aplicación usuaria recibirá una llamada en el momento exacto en el que la necesita y no tendrá retrasos.
- Velocidad de las llamadas: generalmente la llamada que se hace a un webhook es muy rápida pues solo se envía una pequeña información sobre el evento y se suele procesar asíncronamente. Muchas veces ni siquiera se espera por el resultado: se hace una llamada del tipo "fire and forget" (o sea, dispara y olvídate), pues se trata de notificar el evento y listo.
A los webhooks se les llama muchas veces API inversas (o reverse APIs en inglés), ya que tienes algo parecido a una API (un contrato entre las dos partes) pero las llamadas se hacen en el sentido contrario al habitual.
Los webhooks suelen estar en los dos lados. Es decir, en el ejemplo anterior nuestra tienda expone un webhook, pero la otra aplicación podría tener también sus propios webhooks a los cuales llamaremos cuando se produzcan eventos de interés por nuestra parte (no es el caso de Stripe).
¿Qué aplicaciones ofrecen Webhooks?
Pues hoy en día prácticamente todas.
Veamos ejemplos de algunas plataformas conocidas:
Github ofrece webhooks para notificar a otras aplicaciones cuando se producen ciertos eventos (por ejemplo, un push a master
o a una rama):
Mailchimp, el famoso software de email marketing ofrece webhooks para notificar a otras aplicaciones cuando se producen eventos como que haya una nueva alta o baja en un boletín, o un si suscriptor ha cambiado su dirección de email.
Shopify, una de los productos de tienda online más utilizados del mundo, ofrece webhooks para notificarnos acerca de multitud de eventos, como cuando un usuario procesa una compra, solicita un reembolso o añade algo al carrito.
Twilio, el líder mundial en productos de telefonía y mensajería para desarrolladores, ofrece multitud de webhooks para notificar eventos a tu aplicación (por ejemplo, si se recibe una llamada) y para que tu aplicación le pueda notificar cosas también.
Sendgrid, el archiconocido backend para envío de email, ofrece Webhooks para notificar cosas como la recepción de un mensaje o un correo enviado que rebota, entre otras muchas cosas.
Como ya dije antes, la mencionada pasarela Stripe recomienda el uso de webhooks para recibir notificaciones sobre cosas que ocurren con tus clientes.
Podría seguir todo el día, pero el resumen es: los webhooks son ya una parte integral del desarrollo de aplicaciones, y debemos aprender a sacarles partido para automatizar procesos en nuestros desarrollos y también deberíamos ofrecerlos para que otras aplicaciones puedan coordinarse con las nuestras.
Integración de múltiples aplicaciones usando Webhooks
Otra cuestión fundamental y muy interesante de los webhooks es que te permiten delegar la coordinación de tareas a servicios externos, ahorrándote mucho tiempo de desarrollo y problemas.
Por ejemplo, en el caso anterior del comercio electrónico, en lugar de ser tu aplicación la responsable de recibir el webhook de Stripe y llamar a otros servicios para enviar el correo, generar la factura, etc... puedes usar un servicio de orquestación para que haga todo por ti. Pagando una pequeña cuota mensual (o incluso de forma gratuita) tienes un punto central que coordina todas las aplicaciones que usas, incluyendo las propias, gracias al uso de webhooks. Además te permite crear reglas complejas en función de lo que ocurra y de los datos que recibas, y te aseguras la continuidad sin mantener servidores.
Existen diversas aplicaciones que, mediante el uso de webhooks y con integraciones de API hechas por ellos mismos que se comportan como webhooks, permiten definir procesos entre múltiples servicios que responden ante eventos y crear flujos propios.
Esto que suena un poco lioso, en realidad es muy sencillo y simplifica enormemente los desarrollos, ya que te permiten definir tus procesos de forma visual y sin apenas conocimientos técnicos.
Los servicios de este tipo más conocidos son:
- Zapier, casi el estándar, que integra más de 2.000 aplicaciones de casi cualquier cosa que se te ocurra, y permite crear todo tipo de flujos entre ellas. Para mi gusto la interfaz de usuario la han estropeado en los últimos años queriendo hacerla más sencilla. Tiene una capa gratuita bastante generosa.
- Integromat: una aplicación de una pequeña empresa checa pero que tienen un gran peso en este nicho. No ofrece tantos servicios como Zapier (aunque sí muchos) pero es muy fácil integrar cualquier servicio externo con los conectores HTTP y JSON (webhooks) e incluso cosas antiguas con los conectores XML y SOAP. Su capa gratuita es muy generosa.
- IFTT: una de las pioneras, pero que se han orientado más a integrar productos del hogar digital y que, en mi opinión, tiene una de las interfaces de usuario menos usables que se han diseñado. Eso sí, es gratuita y te da algunas integraciones interesantes no presentes en otros servicios (por ejemplo: Telegram). Los conectores para Webhooks son un tanto limitados en cuanto a parámetros que se pueden enviar y recibir porque los han pensado para IoT (pequeños dispositivos conectados) y no tanto para facilitar integraciones.
- Microsoft Power Automate. Empezó como Microsoft Flow hace unos años, con una orientación más hacia usuarios finales y con una versión gratuita bastante generosa. Ahora forma parte de la familia de Power Platform, y tiene una orientación completamente empresarial. Sin capa gratuita. Si trabajas con Office 365 o Azure, es el camino a seguir.
- n8n.io: menos conocida pero muy potente, esta plataforma de orquestación es gratuita y de código abierto. En mi opinión, tiene la interfaz de usuario más interesante de todas, que te permite ver de un golpe de vista lo que estás haciendo en cualquier flujo aunque sea complicado (es la figura de más arriba). No tiene tantos servicios preintegrados como las otras, pero es muy fácil usar webhooks para hacerlo. La puedes incluso albergar en un servidor propio.
Existen algunos más e incluso los hay orientados especialmente a programadores, como Pipedream, NodeRed o StackStorm.
¿Qué debo usar: API o Webhooks?
Lo primero que hay que tener claro es que no son elecciones excluyentes. Las API tienen sus usos y los webhooks otros distintos, aunque a veces se puedan solapar.
Aunque con webhooks se pueden obtener datos y ejecutar acciones, por regla general las API están más orientadas a esto último. Normalmente automatizarás a otras aplicaciones usando sus API, aunque puedes provocar acciones en otras aplicaciones usando webhooks también.
Si la operación tiene que ver más con un usuario concreto o una acción individual, lo más normal es que haya un webhook apropiado. Pero si lo que necesitas es consultar información puntualmente, tendrás que usar una API. Si necesitas ampliar la información de una operación, normalmente necesitarás usar la API también (por ejemplo, puedes recibir un webhook para decirte que un usuario ha comprado un producto, pero si quieres saber si ese usuario ha comprado antes o cuánto saldo tiene en su cuenta, necesitarás llamar a la API).
Como ves son herramientas complementarias y cada una tiene sus usos más apropiados según tus necesidades.
Si lo ves desde el otro punto de vista, que tu aplicación permita su automatización, entonces deberías tener ambas cosas: una API y diversos webhooks, por los mismos motivos expuestos antes.
En resumen; los webhooks son una herramienta de desarrollo muy potente que nos permite ahorrar recursos, tiempo y problemas de información desactualizada. Utilizados en combinación con otros servicios pueden ayudarnos a automatizar de manera sencilla y rápida tareas complejas. Complementándolos con una buena API permiten colaborar con otras aplicaciones de manera sencilla y profesional.
¡Espero que te resulte interesante!
Fecha de publicación:
Descubre la mejor formación online en español, para programadores como tú »
Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal.Ver todos los posts de José Manuel Alarcón
Archivado en: Desarrollo Web | Herramientas
7 comentarios
¿Te ha gustado este post?
Pues espera a ver nuestro boletín...
¿Te ha gustado este artículo? ¡Compártelo!
La mejor formación online para desarrolladores como tú
Ver cursos
Publicaciones relacionadas
Consejos para mejorar el rendimiento de Blazor en ASP.NET CoreBlazor es una plataforma optimizada para ofrecer un alto rendimiento en escenarios realistas de apli...La muerte de la locura de los microserviciosEn los dos últimos años, sobre todo, los microservicios se han convertido en un tema muy popular. La...Los 10 problemas más comunes a los que deben hacer frente los programadores novatosTu primer puesto como programador puede empezar siendo muy estimulante. Pero después de transcurrida...
Comentarios (7)-
Juan
09/10/2020 19:29:42
Hola! Excelente artículo! Tengo una duda: tengo una tienda electrónica en proceso de construccion con woocommerce que vende cursos, y los pagos se hacen por stripe y mercadopago. Tengo un webhook de stripe, pero no está funcionando: https://4viento.info/nemiliztli/?wc-api=wc_stripe Sólo aparece "Ha habido un error crítico en tu web." Curiosamente solo si desactivo woocommerce el webhook funciona perfectamente. Si sólo desactivo el plugin de Mercado Pago me sale error 400. ¿Qué puede estar pasando? Al parecer los pagos funcionan bien aunque el webhook no funcione. ¿Lo podré dejar así? ¿O es importante activar se webhook? ¿Podré crear otro webhook para stripe y ver si ese funciona? De antemano muchas gracias!
Responder
Guillermo
21/06/2021 3:51:57
Gran aporte!
Responder
Elías
02/09/2021 8:53:13
Excelente artículo, muy bien explicado y con ejemplo muy precisos.
Se agradece el aporte.
Responder
David
08/09/2021 22:07:43
Quizá el mejor artículo introductorio al concepto de las webhooks que he visto. Las webhooks, son, entonces, programaciones para generar notificaciones entre máquinas. Así como el API trasciende una petición (request) humana a que pueda ser automatizada por una máquina, de esta lectura se desprende que los webhooks trascienden las notificaciones, que siempre antes estaban destinadas a ser leídas por un humano, y ahora están pensadas para ser recogidas por una máquina (un servidor que debe estar escuchando listo para recibir la notificación).
Responder
Alex
04/12/2021 17:19:16
Hola, excelente explicación. Muchas gracias por tu tiempo.
Responder
Pablo
08/04/2022 23:02:05
Hola a todos, se imaginan una comunicación entre front y back mediante webhooks?
Responder
Diego
05/08/2022 14:43:49
Realmente bien explicado... lo recomiendo.
Responder
Agregar comentario
Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.
FAQs
¿Cuál es la diferencia entre la API REST y el Webhook? ›
REST es un conjunto de reglas o restricciones arquitectónicas colocadas en las API, mientras que un webhook es un subconjunto de una API . Dado que una API REST, a pesar de sus limitaciones, requiere que un usuario solicite datos para enviarlos, no es lo mismo que un webhook, que no requiere una solicitud de datos.
¿Qué es un webhook para las API REST? ›Un webhook es una función de devolución de llamadas que se basa en el protocolo HTTP para que dos interfaces de programación de aplicaciones (API) se comuniquen mediante eventos de forma ligera.
¿Qué es un Webhook y cómo funciona? ›Los webhooks son mensajes automáticos enviados desde aplicaciones cuando sucede algo . Tienen un mensaje, o carga útil, y se envían a una URL única, básicamente el número de teléfono o la dirección de la aplicación. Los webhooks son casi siempre más rápidos que los sondeos y requieren menos trabajo de su parte. Son muy parecidos a las notificaciones por SMS.
¿Qué es REST API y para qué sirve? ›La API RESTful es una interfaz que dos sistemas de computación utilizan para intercambiar información de manera segura a través de Internet. La mayoría de las aplicaciones para empresas deben comunicarse con otras aplicaciones internas o de terceros para llevar a cabo varias tareas.
¿Qué diferencia hay entre API y API REST? ›Por lo general, la API sigue el formato de aplicación a aplicación, mientras que REST sigue una estructura diferente: Cliente-Servidor. El cliente y el servidor están evolucionando de forma independiente, proporcionando más flexibilidad en el trabajo.
¿Cómo creo una API REST de Webhook? ›Para configurar un webhook, vaya a la página de configuración de su repositorio u organización. Desde allí, haz clic en Webhooks y luego en Agregar webhook . Como alternativa, puede optar por crear y administrar un webhook a través de la API de Webhooks. Los webhooks requieren algunas opciones de configuración antes de poder utilizarlos.
¿Cómo se hace un webhook? ›Para configurar un webhook, ve a la página de configuración de tu repositorio u organización. Desde allí, haga clic en Webhooks y, a continuación, en Add webhook. También puede elegir compilar y administrar un webhook desde la API de webhooks.
¿Cómo se hace un API REST? ›- Abra el asistente de Crear una API REST pulsando Archivo > Nuevo > API REST .
- Especifique un nombre para la API REST. ...
- Seleccione Crear una API REST y definir recursos y operaciones usted mismo.
- Para finalizar la creación de la API REST, pulse Acabado.
La exposición ideal de las APIs requiere que se centren en los desarrolladores que las van a utilizar, que sean sencillas de usar, que sigan buenas prácticas, que respondan a lo que necesitan y que ofrezcan documentación y soporte de fácil acceso.
¿Por qué son útiles los webhooks? ›La ventaja de un webhook es que envía datos en tiempo real, siempre que ocurra el evento relevante . En muchos casos de uso comercial, tener información en tiempo real es importante para el negocio. Otra ventaja de un webhook es que no implica comunicación cuando no han ocurrido eventos relevantes.
¿Qué es un API? ›
API significa “interfaz de programación de aplicaciones”. En el contexto de las API, la palabra aplicación se refiere a cualquier software con una función distinta. La interfaz puede considerarse como un contrato de servicio entre dos aplicaciones.
¿Cuándo usar webhooks? ›Puedes usar los webhooks para: Recibir información sobre un evento y almacenarla. Recibir información sobre un evento y comunicarla.
¿Cuál es la diferencia entre API REST y Postman? ›De las diferentes herramientas de prueba de API disponibles, Postman y REST Assured son herramientas ampliamente utilizadas en el mercado. Si bien Postman es una herramienta independiente, REST Assured es una biblioteca de Java utilizada en las pruebas de automatización de API .
¿Cuál es la diferencia entre API y Web Service? ›De hecho, la diferencia principal es que el servicio Web facilita que dos máquinas interactúen a través de una red, mientras que una API es una interfaz. Y a través de ella dos aplicaciones establecen comunicación.
¿Cómo se consume un webhook? ›Los webhooks envian solicitudes POST con carga JSON y pueden ser consumidos por cualquier lenguaje de programación o aplicación web hospedada en cualquier lugar. Tanto WebHooks como Azure Service Bus se pueden invocar desde un complemento o una actividad personalizada de flujo de trabajo.
¿Quién creó el Webhook? ›El término "webhook" fue acuñado por Jeff Lindsay en 2007 a partir del término gancho de programación informática. El formato suele ser JSON. La solicitud se realiza como una solicitud HTTP POST.
¿Qué es un API REST PDF? ›API REST, por tanto, es una interfaz entre servidores y clientes para intercambiar representaciones de datos en la Web en diferentes formatos, sobre todo JSON y XML.
¿Cómo obtengo un Webhook para el canal de mi equipo? ›Abra el canal en el que desea agregar el webhook y seleccione ••• en la esquina superior derecha. Seleccione Conectores en el menú desplegable. Busque Webhook entrante y seleccione Agregar. Seleccione Configurar, proporcione un nombre y cargue una imagen para su webhook si es necesario.
¿Cómo probar un webhook? ›- En el panel lateral, haz clic en Probar acción para ampliar la sección.
- Haz clic en el menú desplegable Objeto y luego selecciona un Registro con el cual realizar la prueba.
- Haz clic en Probar.
- Para comprobar los detalles del webhook, selecciona la pestaña Respuesta o Solicitud.
Para recibir datos de un webhook, la URL especificada debe ser pública y pertenecer al sistema o aplicación receptor. Además, debe configurarse para que actúe como un punto final para que el sistema pueda recibir notificaciones.
¿Qué lenguaje usa la API REST? ›
XML: JSON y XML son los dos estándares de facto para enviar y recibir datos en las API REST. Los lenguajes de programación web como Python, JavaScript, Ruby on Rails y Java tienen herramientas para analizar y trabajar con XML y JSON.
¿Qué características considera debe tener un API REST? ›Características de API REST
Una de las principales características de una API REST es que su servicio no tiene estado, lo que significa que cada vez que nos referimos a ella, tenemos que recordarle nuestros datos, ya sean nuestras credenciales o cualquier otra información.
Diferencias entre webhooks y WebSockets
Los webhooks se utilizan para la comunicación unidireccional desde una aplicación de origen a una aplicación de destino, mientras que los WebSockets facilitan la comunicación bidireccional entre el servidor y el cliente .
Prácticamente todas las aplicaciones permiten la entrada de datos de webhooks , pero no todas las aplicaciones permiten publicar datos a través de webhooks.
¿Cómo uso el punto final de Webhook? ›Agregar un punto final de webhook
Use los siguientes pasos para registrar un punto final de webhook en el Panel de desarrolladores. Abra la página Webhooks. Haga clic en Agregar punto final. Agregue la URL HTTPS del punto final de su webhook en la URL del punto final.
Las API son ampliamente aceptadas y utilizadas en aplicaciones web. Hay cuatro tipos diferentes de API que se usan comúnmente en los servicios web: pública, de socios, privada y compuesta .
¿Cuáles son algunos de los beneficios de poder usar o proporcionar interfaces Webhook? ›Los webhooks son una forma en que una aplicación proporciona información en tiempo real a otras aplicaciones. Permiten que una aplicación envíe una notificación a otra aplicación cuando ocurre un determinado evento en lugar de buscar constantemente nuevos datos. Esto puede ayudar a ahorrar recursos y costos del servidor .
¿Podemos usar Postman para probar la API REST? ›También puede ejecutar pruebas de API creadas en Postman como parte de su canalización de CI . Para configurar una integración de CI para una API, haga lo siguiente: seleccione API en la barra lateral y seleccione una API. Seleccione Prueba y automatización.
¿Webhook es síncrono o asíncrono? ›Los webhooks se consideran asincrónicos por naturaleza. Esto se debe a que no se espera una respuesta específica de su servidor, además de una confirmación de recibo. Los desarrolladores que recién están comenzando con los webhooks a menudo configurarán sus controladores de una manera muy simple: Recibir la solicitud.
¿Cuál es la ventaja de Webhook? ›La ventaja de un webhook es que envía datos en tiempo real, siempre que ocurra el evento relevante . En muchos casos de uso comercial, tener información en tiempo real es importante para el negocio. Otra ventaja de un webhook es que no implica comunicación cuando no han ocurrido eventos relevantes.
¿Cuál es la diferencia entre Websocket y Webhook? ›
Diferencias entre webhooks y WebSockets
Los webhooks se utilizan para la comunicación unidireccional desde una aplicación de origen a una aplicación de destino, mientras que los WebSockets facilitan la comunicación bidireccional entre el servidor y el cliente .
Sincrónico = sucede al mismo tiempo. Asincrónico = no sucede al mismo tiempo. Con el aprendizaje sincrónico, los participantes pueden recibir comentarios inmediatos. Con el aprendizaje asincrónico, los participantes pueden aprender a su propio ritmo.
¿Cuál es la diferencia entre sistemas síncronos y asíncronos? ›SISTEMAS SECUENCIALES SÍNCRONOS
Las variables internas no cambian hasta que no llega un pulso del reloj. Sistemas Secuenciales Asíncronos, actúan de forma continua en el tiempo, un cambio de las entradas provoca cambios en las variables internas sin esperar a la intervención de un reloj.