Webhook介绍
Webhook
在阅读powerJob的官方文档的时候发现他用到了Webhook技术。想到自己部署的memos也有webhooks的功能,于是便深入了解了一下
介绍
webhook顾名思义是一种“钩子”,它是一种API的概念,有点列斯反向的API,也就是前端不需要主动地想后端发送请求,后端主动向客户端发送推送推流数据。举个简单的例子,当你向微信朋友圈发布一条说说的时候,就会触发webhook,给你的微信好友的朋友圈推送的你的说说。
用书面话来讲webhook是一个事件驱动的自动化web应用用心工具。
与API的比较
特性 | Webhook | API |
---|---|---|
方式 | 事件驱动(推送) | 请求驱动(拉取) |
效率 | 更高效,因为只有在需要时才发送数据 | 由于轮询,效率较低 |
复杂性 | 配置较简单 | 配置更复杂 |
实时更新 | 数据会立即发送 | 数据会在请求时发送 |
数据控制 | 控制有限 | 可以完全控制数据 |
原理
Webhook主要有两个核心的概念:
- 事件驱动:Webhook 是由特定事件触发的,例如支付成功、代码提交、新用户注册等。
- HTTP 回调:当事件发生时,源应用程序会向预先配置的 URL(称为 Webhook 端点)发送一个 HTTP 请求(通常是 POST 请求),并将事件的相关数据包含在请求体中。
流程
Webhook 的工作流程可以分为以下几个步骤:
步骤 1:配置 Webhook
- 目标应用程序(接收方)提供一个公开的 URL(Webhook 端点),用于接收事件通知。
- 源应用程序(发送方)需要配置该 URL,并指定哪些事件需要触发 Webhook。
步骤 2:事件触发
- 源应用程序监测到特定事件的发生(例如,用户完成支付、代码库有新的提交等)。
步骤 3:发送 HTTP 请求
- 事件触发后,源应用程序会立即向目标应用程序的 Webhook 端点发送一个 HTTP 请求(通常是 POST 请求)。
- 请求体中通常包含事件的详细信息(例如,事件类型、时间戳、相关数据等)。
步骤 4:接收并处理请求
- 目标应用程序接收到 HTTP 请求后,解析请求体中的数据,并根据事件类型执行相应的操作(例如,更新数据库、触发工作流、发送通知等)。
步骤 5:响应
- 目标应用程序处理完请求后,通常会向源应用程序返回一个 HTTP 响应(例如,200 OK),以确认请求已成功接收和处理。
问题
- 安全性:需要确保请求的来源合法,防止伪造请求。
- 可靠性:依赖网络通信,如果目标应用程序不可用,可能会导致数据丢失。
- 复杂性:需要维护 Webhook 端点和处理逻辑。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ✍️灵檠|博客✍️!
评论