Webhook概念
- Webhook本质上也是API,只不过是反向调用。
Webhook 产生背景
- 正常调用API是由应用去调用对方服务器的API,为了实现最大程度利用好资源以及并发,通常这个API可能是异步调用,这样,在调用的过程中,就无法直接返回调用的结果和状态。此时,如果我们需要了解调用的结果和状态,则需要调用服务的查询接口,主动地去轮询,结果的及时性取决于我们的轮询的频率。
Webhook工作原理
- 为了及时通知,此时就产生了Webhook这种概念,其实就是为了更好地去通知调用的结果。在我们发出请求的时候,可以向服务器注册一个Webhook的地址,告诉服务器说,等调用结果一出来,第一时间通过这个Webhook地址通知我,我好处理接下来的步骤。
Webhook设计
- 了解原理之后,就不难去设计了。
- 基于原理,那么其实调用服务的双方都得有API,其实这在一定的程度上也增加了设计的复杂度和安全性。在设计过程中,需要注意以下3点:
- 1、 对于调用方,需要设计一个api地址,供服务方进行调用
- 2、对于服务方,需要设计一个通知机制,对订阅内容进行渠道的通知
- 3、为了增强通讯的安全性以及稳定性,需要考虑API调用时的安全性,如增加token访问,验证等措施,同时为了保证每次的API能正确及时调用,需要对调用的结果进行判断和验证。
举例应用
- 说了那么多理论,我们还是来看一个实际的案例吧,这样方便加深大家的理解。我们经常用的GitHub网站,他就提供了这种Webhook,所以我们利用他这个特性,可以随时更新我们的应用代码,实现线上应用自动更新。
- 打开一个项目的设置,可以看到Webhooks的配置项。
- 在下面可以选择我们哪种情况需要通知。
- 我们可以选择在push时,及向仓库提交代码时候,通过原先配置的Webhooks地址,重新去编译和构建我们的应用。至此我们就可以完成自动化部署。