Webhook 是指当某个服务中发生特定事件时,自动向预先注册的 URL 发送 HTTP 请求 (通常为 POST) 的机制。就像"有事请打这个电话通知我"一样,实现了事件驱动的服务间联动。
Webhook 的反义词是轮询 (Polling)。轮询是定期发送"有新消息吗?"的查询方式,即使没有变化也会产生请求,效率较低。Webhook 只在事件发生时才发送通知,因此实时性更高,服务器负载也更低。
短链接服务中 Webhook 的应用场景之一是,当链接被点击时实时接收通知。例如,将重要活动链接的点击事件即时推送到 Slack 频道,或将点击数据自动写入自有数据库。
Webhook 的实现需要注意几个要点。第一,接收端的端点必须通过 HTTPS 公开。第二,需要考虑 Webhook 发送失败时的重试处理。大多数服务会以指数退避方式重试几次,但接收端宕机期间的事件可能会丢失。第三,验证 Webhook 发送方的签名 (如 HMAC-SHA256) 是重要的安全措施。
Webhook 已广泛应用于 GitHub (推送通知)、Stripe (支付完成通知)、Slack (消息发送) 等现代 Web 服务的集成中。Zapier 和 IFTTT 等自动化工具在内部也是基于 Webhook 实现的。相关书籍可在 Amazon 上查找。