¿Qué es un webhook?
También llamado: callback HTTP, notificación web
Definición
Un webhook es un aviso automático que un servicio envía a una URL tuya cuando ocurre algo: un pago completado, un pedido nuevo, un cambio en un repositorio. Es una API al revés: en lugar de preguntar, te avisan.
Sin webhooks, para saber si se ha cobrado un pago tendrías que preguntar a la API de la pasarela cada pocos segundos. Con un webhook, le das una URL y ella hace una petición POST a esa URL en cuanto el pago se completa.
Ejemplo
El servicio envía algo así a https://example.com/webhooks/pagos:
POST /webhooks/pagos HTTP/1.1
Content-Type: application/json
X-Signature: sha256=5f8a1c...
{"evento":"pago.completado","pedido":"A-1042","importe":49.90,"moneda":"EUR"}
Tu servidor debe responder rápido con un 2xx para confirmar que lo ha recibido:
HTTP/1.1 200 OK
Buenas prácticas
- Verifica la firma. Cualquiera puede enviar un
POSTa tu URL. Los servicios firman cada aviso con un secreto compartido (la cabeceraX-Signaturedel ejemplo); compruébalo antes de hacer nada. - Responde enseguida y procesa después. Si tardas, el servicio considera que ha fallado y lo reintenta.
- Prepárate para duplicados. Los reintentos pueden hacer que el mismo evento llegue dos veces; usa el identificador del evento para no procesarlo de nuevo.
- Usa HTTPS siempre.
Usos habituales
Pasarelas de pago, tiendas online, formularios, avisos en Slack o Discord y CI/CD: cada vez que subes código a un repositorio, un webhook avisa al sistema de despliegue.
¿Tienes un producto o servicio relacionado con Webhook? Anúnciate en este término.
Términos relacionados
- APIUna API es un conjunto de reglas que permite a un programa pedir datos...
- API RESTUna API REST es una API web que organiza los datos en recursos, cada...
- JSONJSON es un formato de texto para intercambiar datos estructurados, fácil de leer para...
- CI/CDCI/CD (integración y despliegue continuos) es la práctica de automatizar las pruebas y la...
- HTTPHTTP es el protocolo con el que los navegadores piden páginas, imágenes y datos...
Categorías: Backend