Skip to content
本页索引

Webhook

Webhook 是 KMS核心概念 之一,是一种 PubSub 通知机制,主要针对的是 KMS 管理的配置数据,当这些配置数据发生变更(新增/修改/删除)时将相关变更内容发送给订阅方。

限定支持

  • Webhook 的功能仅限定于在 KMS 管理的数据,这些数据在“配置中心”查看和修改。其他形式(比如视图)管理的数据由于不在 KMS 存储,将无法支持 KMS Webhook 功能;

  • 订阅 Webhook 的 web url 必须是一个带有域名的远程服务器,localhost 以及 ip地址 无法被支持;

  • Webhook 推送方法仅支持 POST / PUT,不支持其他的推送类型;

订阅Webhook

系统设置 - Webhook 管理页面查看和修改Webhook:

Hook Payload 数据

可以在 Webhook 管理页面,查看详细的 Payload 数据,这些数据会在 Post Body 中推送给订阅方。同时还有两个特殊的 Head 字段可供验证来源:

  • user-agent:Webhook 推送消息时会定制 UserAgent 信息,格式 KMS名称/KMS版本 KMS域名 比如 KMS/2.1.0 kms.seayoo.com
  • x-kms-token: 可选的 token 字符串,通常是一个长度不小于 30 的随机字符串

Local Webhook 本地调试

为了方便开发调试,KMS 支持 Local Webhook,需要在管理界面开启 开启本地调试 功能。

  • 本地调试原理:将原本需要服务端发出的 hook 请求在浏览器中发出一份副本以达到调试本地服务器接口的目的;
  • 请先处理跨域配置:由于请求从浏览器直接发出,势必造成跨域访问,请先在本地服务器添加跨域白名单,参考资料
  • 仅对当前浏览器生效:所有调试的配置将存储在当前浏览器内,Local Webhook 调试功能仅仅对当前浏览器有效;
  • 本地调试不会影响生产配置:如果生产环境配置有内容,将正常发送 Webhook,本地调试部分仅仅是一个 hook 通知副本;
  • 发送策略有差异:生产环境发送 Webhook 会有重试和超时策略,本地调试不超时不重试;
  • UserAgent不同:由于浏览器安全限制无法修改请求的 User-Agent 信息,本地调试通过 x-user-agent 字段提供 UA 信息;

注意

“开启本地调试” 功能,不仅仅开启了 Webhook 本地调试,也将同时开启 API Proxy 调试功能