基本区别
许多小白第一次接触webhook的时候常常会与api混淆,那么我们先来看看两者的本质差别在哪:
api
一般用于用户主动发起请求,目标系统返回用户需要的数据、结果。API 用途广泛,涉及查询、修改、执行等
webhook
一般用于用户提前设置好触发条件与通知方式,当符合条件,目标系统会主动给用户推送信息、执行动作,无须用户主动查询。webhook 用途单一,仅用于事件发生时的实时推送通知。
**ps:**webhook 是 API 的一种,所有 webhook 都是 API,但不是所有 API 都是 webhook。
深入了解webhook
webhook的特征
webhook基于HTTP/HTTPS协议,以POST为主,少数用GET
常用 JSON(简洁易解析),也有用 XML、表单(form-data)的场景
下面,我们来看看webhook服务的两边各有什么特点。
provider(提供者)
**谁来当?**通常是 “被触发动作的系统”(比如企业微信消息推送、GitHub、钉钉机器人等)。
做什么?
- 提供一个 “专属的 webhook 地址”(就是
https://qyapi.weixin.qq.com/...?key=xxx这类 URL),作为接收请求的 “入口”; - 定义 “规则”:比如请求必须用什么格式(JSON / 表单)、需要带什么验证信息(比如你的
key)、支持触发哪些动作(比如企业微信只支持 “推送消息”,GitHub 支持 “代码提交通知”); - 收到合法请求后,执行预设动作(比如企业微信把消息推到群里,GitHub 把代码更新信息发给你)。
举例:企业微信就是典型的 “webhook 提供者”—— 它给了你带 key 的 URL,规定了必须发 JSON 格式的请求,并且收到后会执行 “推送消息” 的动作。
caller(调用者)
**谁来当?**通常是 “主动触发动作的一方”(比如本地电脑、服务器脚本、第三方工具等)。
做什么?
- 知道提供者的 webhook 地址和规则(比如 “必须用 JSON 格式,要带 key”);
- 在需要的时候,按照规则构造请求并发送(比如你用 curl 命令发消息内容);
- 目的是 “让提供者执行某个动作”(而不是向提供者要数据)。
举例:你用 curl 命令发送请求时,你的本地电脑就是 “webhook 调用者”—— 你按照企业微信的规则发了 JSON 请求,目的是让企业微信执行 “推送消息” 的动作。
小结一下,
**推送方是这样的。**接收方只要挂个公网 IP、开对端口、保证网络能被找到就可以,反正数据来了接住就行。可推送方要考虑的事情就多了:得算签名防伪造请求、调重试机制防网络丢包、盯死 JSON 格式防解析报错,还得备着容错方案防接收方宕机 —— 毕竟消息发丢了锅全是自己的,可太费脑子咯。(doge)

一句话总结
webhook 是 API 的一种特殊类型,其核心价值是 “实时自动化”,一般用于推送消息,我这里举几个webhook的热门自动化部署方案,学会的小伙伴们可以快乐地用webhook去搭建自己的自动化方案啦!
| 场景 | 推送方 | 接收方 | 触发事件 | 推送内容 |
|---|---|---|---|---|
| 企业微信消息推送 | 你的系统 | 企业微信服务器 | 有新通知需要发送 | 消息文本、图片等 |
| 支付结果通知 | 支付平台(微信支付 / 支付宝) | 商户服务器 | 用户支付成功 / 失败 | 支付金额、订单号、支付状态 |
| GitHub 代码通知 | GitHub 服务器 | 你的 CI/CD 系统 | 代码提交、PR 创建 | 提交者、修改内容、分支信息 |
| 监控报警 | 监控系统(Zabbix/Prometheus) | 企业微信群 / 邮件 | 服务器 CPU 过高、服务宕机 | 报警级别、故障详情、时间 |
| 电商订单同步 | 电商平台 | 仓库管理系统 | 新订单创建、订单取消 | 订单信息、操作类型 |