编辑
2024-07-16
📘总结-保持好奇心
00
请注意,本文编写于 338 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

Webhook 的基础知识
Webhook 如何工作?
使用 GitHub 实施 Webhook
第 1 步:导航到您的存储库设置
第 2 步:添加新的 Webhook
第 3 步:配置负载 URL 和内容类型
第 4 步:选择触发 Webhook 的事件
第 5 步:激活 Webhook
Node.js 中 Webhook 接收器的示例代码片段:
Webhook 的一些实际示例包括:
好处和最佳实践
使用 Webhook 的优点
有效使用 Webhook 的最佳实践:
结论

在现代技术中,一切都相互连接,每个应用程序都通过许多服务的组合和协调无缝运行。这种协调是通过 webhooks 实现的。

Webhook 是基于 HTTP 的回调函数,其中一个服务使用 API 立即向另一个服务通知事件。这是简单的版本。从技术上讲,Webhooks 是“使用 HTTP 进行的用户定义的回调”,Jeff Lindsay 是最早提出 Webhook 概念的人之一。

Webhook 的基础知识

以下是 webhook 基础知识的详细介绍:

  • 事件驱动的聊天:应用程序可以在特定情况发生时(例如新客户订单或朋友的生日)使用 Webhooks 相互聊天,而不是不断检查。
  • 推送通知,无需等待:无需刷新页面即可查看更新。 Webhooks 就像收到通知 - 当重要的事情发生时,应用程序会立即通知另一个应用程序。这样更快并且节省时间。
  • 包含详细信息的 Web 消息:Webhook 使用 Web 调用来发送消息。这些消息包括关于所发生事件的简短报告,例如新闻更新,通常采用 JSON 等格式。
  • 实时更新:由于网络钩子可以立即传递信息,因此应用程序可以立即相互保持最新状态。

Webhook 如何工作?

image.png

  1. 事件发生:事件触发 webhook 进程。此事件可以是任何事情,从新客户在网站上注册到商店库存水平的变化。
  2. HTTP POST:事件触发后,将向指定 URL 发送 HTTP POST 请求,即 Webhook URL。此 URL 指向旨在接收和处理这些 Webhook 通知的 Web 服务器。
  3. Webhook 触发:收到 HTTP POST 请求后,Webhook 在 Web 服务器上触发。
  4. 通知:Webhook 服务器随后解析 HTTP POST 请求中包含的数据。此数据通常包含有关触发 Webhook 的事件的详细信息。
  5. 请求接收和处理:然后,Webhook 服务器验证请求的真实性并相应地处理数据。
  6. 采取的操作:最后,根据从事件接收到的数据,Webhook 服务器执行特定操作。此操作可能因特定应用程序而异,但可能涉及更新数据库、发送电子邮件通知或触发另一个工作流程。

简单来说,Webhooks 充当应用程序之间的信使。它们通知应用程序有关特定事件的信息,并为它们提供相关数据,以便它们可以采取适当的操作。

使用 GitHub 实施 Webhook

现在我们已经了解了 Webhook 的基础知识并了解了其工作原理,让我们尝试在最流行的开发应用程序之一——Github 中实现它。

第 1 步:导航到您的存储库设置

  • 登录您的 GitHub 帐户。
  • 转到要设置 Webhook 的存储库。
  • 单击“设置”,然后选择“Webhooks”。

第 2 步:添加新的 Webhook

  • 单击添加 Webhook 按钮。
  • 在有效负载 URL 字段中,输入您想要接收 Webhook 有效负载的服务器的 URL。

第 3 步:配置负载 URL 和内容类型

  • 选择内容类型。对于 JSON 负载,选择 application/json 。
  • (可选)设置一个安全秘密,它将用于验证收到的有效负载。

第 4 步:选择触发 Webhook 的事件

  • 决定哪些事件应触发 Webhook。您可以选择单个事件或选择接收所有事件。

第 5 步:激活 Webhook

  • 确保选中“活动”复选框以立即激活 Webhook。
  • 单击添加 Webhook 保存配置。

Node.js 中 Webhook 接收器的示例代码片段:

javascript
const express = require('express'); const crypto = require('crypto'); const bodyParser = require('body-parser'); const app = express(); const port = 3000; const secret = 'mySecret'; // Replace with your GitHub webhook secret app.use(bodyParser.json()); app.post('/webhook', (req, res) => { const signature = `sha1=${crypto.createHmac('sha1', secret) .update(JSON.stringify(req.body)) .digest('hex')}`; if (req.headers['x-hub-signature'] === signature) { console.log('Webhook received:', req.body); // Handle the webhook event res.status(200).send('Webhook received!'); } else { res.status(401).send('Invalid signature'); } }); app.listen(port, () => { console.log(`Server is listening at http://localhost:${port}`); });

此代码创建一个简单的服务器,用于侦听 /webhook 处的 POST 请求。它使用您在 GitHub 中配置的密钥来验证请求签名。当 webhook 事件发生时,GitHub 会向指定的 Payload URL 发送包含事件数据的 POST 请求。然后您的服务器可以相应地处理这些数据。

请记住将 'mySecret' 替换为您在 GitHub 中设置的实际密钥。这可以确保您收到的有效负载确实来自 GitHub,而不是冒名顶替者。

Webhook 的一些实际示例包括:

  • Instagram 照片会自动上传到 Twitter 帐户。
  • 连接的门铃被配置为在门铃响起时使家中的某些灯光闪烁。
  • 将 GitHub 更新通知作为消息发送到 Slack 或 Discord 通道。
  • 创建一个 Microsoft Teams 渠道,在人们买卖某些股票时转发消息。

好处和最佳实践

使用 Webhook 的优点

  • 实时数据传输:Webhooks 提供系统之间的即时通信,允许在事件发生时进行即时数据交换。
  • 效率:它们消除了持续轮询的需要,减少了服务器负载并提高了性能。
  • 用户体验:即时更新增强了用户界面,使其更具响应性和动态性。
  • 灵活性:可以定制 Webhook 以触发不同事件的特定操作,从而提供应用程序交互方式的自定义。

有效使用 Webhook 的最佳实践:

  • 安全连接:使用 HTTPS 确保 Webhooks 传输的数据加密且安全。
  • 验证 Webhooks:实施验证方法,例如验证数字签名,以确认传入数据来自可信来源。
  • 错误处理:设计您的系统以优雅地处理故障,包括重试和针对不成功的 Webhook 传递发出警报。
  • 日志记录:维护 Webhook 活动的详细日志,以方便调试并提供数据流的审核跟踪。

通过利用 Webhooks 的优势并遵循这些最佳实践,开发人员可以为其应用程序创建高效、可靠的集成。

结论

Webhooks 具有实时、事件驱动的功能,是当今数字经济中的变革性工具。 Webhook 允许应用程序之间流畅、自动地通信,从而加快工作流程、提高响应能力并提高多个领域的效率。 Webhooks,无论是用于持续集成、自动通知还是动态数据同步,都可以最大限度地减少手动参与、减少错误并加快流程。

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!