网络与接口
网络钩子(webhook)
/ WEB-hook /
网络钩子(webhook)是一种「反过来的 API」:与其让你三番五次地问某个服务「有新东西了吗?有新东西了吗?」,不如让这个服务在事情一发生的那一刻主动来叫你。你事先把自己的一个 URL 交给它,它就承诺:每当你关心的那件事发生时,就往那个地址送一条小消息。
想象一下两种取信方式的差别:一种是你每隔五分钟跑去信箱开一次盖、看有没有信;另一种是信来了,邮差直接按你家门铃。第一种(你一遍遍地问)叫「轮询」(polling),很浪费——大多数时候答案都是「没有,啥也没有」。webhook 就是那个门铃:由服务主动来叫你,而且只在真有消息时才叫,于是你能第一时间知道,而你的代码其余时间都可以安心睡觉。
看懂了这个模式,你会发现它无处不在。Stripe 在付款成功时来敲你的 URL;GitHub 在有人推送代码时来敲;聊天应用每来一条新消息就敲一下。你写一个安静等待的小端点(endpoint),外面的世界一有事要告诉你,就来敲它的门。
POST /my-webhook HTTP/1.1
Content-Type: application/json
{ "event": "payment.succeeded", "amount": 4200 }事件一触发,服务就往你的 URL 发一个 POST——你完全不用轮询。
普通 API:你去调用它。webhook:它来调用你。同样是 HTTP,方向正好相反。
又称
另见