Web

Webhook

理解

Posted by Jingming on December 7, 2020

Webhook的作用是反向API。正向就是客户端调服务器API,所谓反向,就是服务器调用客户端的API。

这个概念一个让人迷惑的点在于:看起来,当服务器调用客户端的时候,服务器就是”客户端”,也就不存在反向了。因此,分清客户端和服务器特别重要。 一般来说,程序都以自己为服务器,例如:提供网站链接平台程序(好123)自己是服务器,而那些真正提供服务的网站,是自己的客户。 能够提供主动提供某种被别人调用的接口(URI),就叫服务器。

简而言之:一个服务器里面,如果存在调用客户的API,那么这种机制称为Webhook。

主要作用是推送:

  1. 例如,这个服务器的目的是给用户提供明星的动态,这种情况下,客户例如不是散户,而是一个公司(程序),那么想要从服务器这获取的星的最新信息并不是时刻有的, 需要定期查询。 但是定期查询太消耗,可以改成服务器来通知客户端,也就是客户端事先提供一个地址(Webhook API),在服务器有消息的时候把消息推送到客户端给的地址。

  2. 例如,微信加了某人为好友,并设置对方可以查看自己的状态。这意味着什么?

这意味着自己想要推送给好友非实时信息。 设置可以查看对方意味着把自己微信账户信息添加到好友的通知列表,该好友发状态的时候,会依次自动通知列表中的微信账号。

Webhook再举例:

  1. Git Webhooks。 在git webhooks配置好Jenkins的Webhook地址(对的,Jenkins是Git的客户端!),这样, git push之后,Git调用jenkins Webhook去相应的构建以及部署。也就是说,用户想使用Jenkins,但是实际上,用户首先使用的服务是Git,Git把流量导入Jekins。

  2. A公司比较大,且有一套全面的API服务;B公司属于初创公司,有一些自己特色(例如自己作为平台,可以把流量导入多个大公司),且有相关的大量的用户。

现在B公司和A公司合作,A公司需要B公司的用户,B公司需要A公司的基本服务。那么B公司可以使用webhook技术,B公司作为服务器,A公司作为客户端,A对B进行订阅,那么B公司收到流量的时候会把其中访问A公司服务的流量导入A公司相关的API中(通知A公司)。

上面例子的变种:A公司的功能被集成到B公司的平台。这样用户在使用服务的时候,虽然是从B公司的平台进入,但是实际上之后还是

使用A公司的账户登陆,也就是说,该用户本质上是属于A公司的。此时A公司有用户,假设此时A公司没有相应的服务,但是B有,那么A可以把自己的

用户导到B公司,也就是B公司订阅A公司的webhook。这样B公司就能享有A公司的客户。