什么是Webhook?
下图显示了轮询和Webhook之间的比较。

假设我们运营一个电子商务网站。客户通过API网关将订单发送到订单服务,然后转到支付服务进行支付交易。支付服务随后与外部支付服务提供商(PSP)对接,以完成交易。
有两种方法可以处理与外部PSP的通信。
1. 短轮询
在向PSP发送支付请求后,支付服务不断询问PSP支付状态。在几轮询问后,PSP最终返回状态。
短轮询有两个缺点:
- 持续轮询状态需要支付服务的资源。
- 外部服务直接与支付服务通信,造成安全漏洞。
2. Webhook
我们可以在外部服务上注册一个Webhook。这意味着:当你对请求有更新时,在特定的URL上回调通知我们。当PSP完成处理后,它将调用HTTP请求来更新支付状态。
通过这种方式,编程范式发生了改变,支付服务不再需要浪费资源去轮询支付状态。
如果PSP从未回调怎么办?我们可以设置每小时定期检查支付状态的任务。
Webhook通常被称为反向API或推送API,因为服务器向客户端发送HTTP请求。我们在使用Webhook时需要注意三件事:
- 我们需要为外部服务设计一个合适的API供其调用。
- 我们需要在API网关中设置合适的规则以确保安全。
- 我们需要在外部服务上注册正确的URL。