什么是webhook

发布时间 2023-06-12 16:34:00作者: 金牌猫猫

webhook 是网页开发中的一种通过自定义回调函数来增加或更改网页表现的方法。

  Webhooks 是一个api概念,是微服务api的使用范式之一,也被称为反向 API”;即:前端不主动发送请求,完全由后端推送 或 操作“事件反应”的概念。(举例1:你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端;举例2:你无需打电话给我,如果我有新的东西,我会主动打电话给你;这些都是 Webhooks 的典型场景)。从而避免客户端应用程序不断对服务器端应用程序进行轮询。因此,不是客户端应用程序不断轮询服务器端应用程序以检查新事件,服务器端应用程序调用客户端应用程序(通过调用客户端提供的 webhook URL),而不是服务器端有新的事情向客户报告。因此,使用 webhooks,您可以在服务器上发生某些事件时获得推送通知。您不再需要轮询 API 以查看是否发生了这些事件。您可以使用 webhooks“订阅”活动。简单来说,WebHook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了 WebHook 的 API 提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息。与请求-响应式不同,使用WebHooks,你可以实时接受到变化。简而言之, webhook 只不过是一个简单的客户端提供的端点 URL。在服务器端的 webhook 调用之前的某个时刻,客户端应用程序必须将此端点 URL 传递给服务器端应用程序。

1.项目A需要实时获取到项目B的最新数据
【传统做法】项目A需要不停轮询去拉取项目B的最新数据
【webhook机制】项目A提供一个webhook url,每次项目B创建新数据时,便会向项目A的 hook地址进行请求,项目A收到项目B的请求,然后对数据进行处理 

2.主要用途:更新客户端,在资源新建或者更新时提供更新的、指定的数据。

3.常见webhooks使用场景
  对于第三方平台验权、登陆等 没有前端界面做中转的场景,或者强安全要求的支付场景等,适合用 Webhooks 做数据主动推送。说白了就是在前端无从参与,或者因为前端安全问题不适合参与时,就是 Webhooks 的场景。很显然 Webhooks 也不是 Http 的替代品,不过的确是一种新的前后端交互方式。

如果客户端要长期监听某个任务的状态,按照正常的api调用的方式去做,那么必须不停得轮训服务器来获取当前状态;使用webhook则无需轮训,通过API 可以确定是否发生了更改,如果更改了只需要等待服务器推送信息过来,然后客户端更新就可以。git webhook其实也是这方面的应用。

4.使用说明
1、webhook通过请求发送数据到你的应用后,就不再关注这些数据。也就是说如果你的应用存在问题,数据会丢失。许多webhook会处理回应,如果程序出现错误会重传数据。如果你的应用处理这个请求并且依然返回一个错误,你的应用就会收到重复数据。
2、webhook会发出大量的请求,这样会造成你的应用阻塞。确保你的应用能处理这些请求