Webhook是一种基于HTTP回调的机制,允许应用程序在特定事件发生时向其他应用程序发送实时通知。其核心原理是事件源(如GitHub、自动化平台)在触发事件后,主动向预先配置的URL发送一个HTTP请求(通常包含事件数据的JSON格式负载),从而触发接收方的后续处理流程。
以下是构建和使用Webhook的详细教程。
一、Webhook的基本构成与工作流程
一个完整的Webhook实现涉及事件源、接收端和通信协议三个部分。
- 事件源:负责在特定事件(如代码提交、议题创建、系统警报)发生时发起Webhook调用。
- 接收端:提供一个公开可访问的HTTP端点(URL)来接收并处理Webhook请求。
- 通信协议:通常使用HTTP/HTTPS协议,请求方法多为POST,负载内容格式常为JSON。
其通用工作流程如下:
- 配置Webhook:在事件源平台(如GitHub、自动化工具)中设置目标URL、选择监听的事件类型,并可能配置安全密钥。3
- 触发与发送:当选定事件发生时,事件源平台会构造一个包含事件详情的HTTP请求,发送至配置的URL。
- 接收与处理:接收端服务器监听到该请求,解析负载数据,并执行预设的业务逻辑(如更新数据库、发送消息、触发自动化流程)。
- 响应:接收端通常需向事件源返回一个HTTP状态码(如200 OK)以确认接收成功。
二、配置事件源端的Webhook
不同平台配置方式各异,但核心参数相似。
通用配置参数:
- Payload URL:接收Webhook请求的服务器地址。
- Content Type:负载格式,通常为
application/json。 - Events:选择需要触发Webhook的具体事件类型。可以选择全部事件,或精细选择单个事件(如仅监听“议题”相关事件)。
- Secret:用于生成签名的密钥,接收端可用此验证请求来源的真实性。
- Active:启用或禁用该Webhook。
示例:在GitHub中配置仓库Webhook
- 进入仓库的“Settings”页面。
- 选择“Webhooks”选项,点击“Add webhook”。
- 填写Payload URL。
- 选择Content type为
application/json。 - 在“Which events would you like to trigger this webhook?”下,可选择“Send me all events”,或点击“Let me select individual events”进行自定义选择(例如,仅勾选“Issues”事件)。
- 如需增加安全性,可填写Secret。
- 确保状态为“Active”,点击“Add webhook”完成创建。