什么是Webhooks?
Webhook 是一种基于 HTTP 的回调函数,可在 2 个应用编程接口(API)之间实现轻量级的事件驱动通信。
如何理解 Webhook 的概念?
名称 webhook 是 web(指明其是基于 HTTP 的通信)与 hooking 编程函数(允许应用截获调用或可能感兴趣的其他事件)这两者的简单组合。Webhook 钩住服务器应用上发生的事件,并提示服务器通过 web 将有效负载发送给客户端。Jeff Lindsay 在 2007 年发表的题为《Webhook 革新 Web 世界》的博客文章,帮助推广了这一概念。
IT 团队使用各种方法来保护通过 webhook 通信的应用。大多数支持 webhook 的应用会将一个机密密钥添加至有效负载的请求标头中,以便客户端能够确认服务器的身份。Webhook 通常使用相互传输层安全(mTLS)身份验证进行保护,在有效负载被发送之前对客户端和服务器进行验证。此外,客户端应用往往将 SSL 加密用于 webhook URL,确保传输的数据保持私密。
为什么要使用Webhook?
想象一下,你经营着一个会员网站。每当客户通过Stripe等支付网关向您付款时,您都必须手动将他们的详细信息输入您的会员管理应用程序中。这只是为了让用户登录。当然,随着新成员比例的增加,这很快就会变得乏味。如果只有Stripe和您的会员软件可以相互通信就好了。这样,任何通过Stripe付款的人都会自动添加为会员。
Webhooks是一个令人难以置信的工具,可以为您节省大量工作。事实上,它们如此受欢迎,意味着您将能够集成您当前使用的大多数网络应用程序。
例如,通过网络钩子将您的电子邮件营销软件与其他应用程序连接,可以打开许多可能性:
- 您可以使用网络钩子将支付网关与电子邮件营销软件连接起来,以便用户在付款退回时收到电子邮件。
- 您可以使用网络钩子在其他应用程序中同步客户数据。例如,如果用户更改了他们的电子邮件地址,您可以确保更改也反映在您的CRM中。
- 您还可以使用网络钩子将有关事件的信息发送到外部数据库或数据仓库,如亚马逊的Redshift或Google Big Query,以进行进一步分析.
Webhook优点?
- 消除轮询的必要。 这为客户端应用节省了资源。
- 设置轻松快捷。如果应用支持 webhook,就能通过服务器应用的用户界面进行设置。在这里,客户端输入其应用的 webhook URL ,并设置一些基本参数,例如它们对哪些事件感兴趣。
- 自动传输数据。服务器应用上发生指定的事件时,就会立即发送有效负载。此交换由事件发起,因此发生速度与数据从服务器传输到客户端一样快,实时性可以媲美任何数据传输。
- 适合特定的轻量级有效负载。Webhook 依靠服务器来确定所发送的数据量,让客户端去解译有效负载并以高效的方式加以使用。由于客户端不控制数据传输的确切时间或大小,webhook 能够处理 2 个端点之间的少量信息,这些信息通常采用通知形式。
其它构建事件驱动 API的技术
1、WebSocket:是一种网络传输协议,可在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。这种双向行为可实现更丰富的客户端/服务交互,通常用于聊天应用程序、协作平台、多人游戏和金融交易平台等实时应用程序。
2、AsyncAPI:AsyncAPI是一个规范,该规范是一个机器可读的文档,用于记录和描述事件驱动 API。
3、Server-Sent Events(SSE):是一种与 WebSockets 非常相似的通信协议,但隐含条件是只支持单向数据。SSE 允许基于浏览器的消费者接收从 API 服务器发送的事件通知流。