Webhook是一个API概念,而且变得愈来愈流行。咱们能用事件描述的事物越多,webhook的做用范围也就越大。Webhook做为一个轻量的事件处理应用,正变得愈来愈有用。
简单来讲就是一种反向API机制,相似于触发器的同样.web
场景模拟:编程
在传统的web server设计中,咱们项目A想要获取项目B的数据,一般项目B须要提供一个API,而后项目A去请求项目B的API,从而得到数据,这样的过程咱们称之为"拉"数据。json
==经过webhook机制,对客户端-服务端的模式进行了逆转。==api
继续回到场景中:安全
新增了一个需求,项目A须要实时获取到项目B的最新数据,在传统作法中,咱们须要不停的去向项目B作轮询操做,以便获取到最新数据,这样的效率和性能都很是低下,经过webhook机制来设计服务器
传统作法:项目A须要不停轮询去拉取项目B的最新数据微信
项目A -> 项目B
webhook机制:项目A提供一个webhook url,每次项目B建立新数据时,便会向项目A的hook地址进行请求,项目A收到项目B的请求,而后对数据进行处理dom
项目B -> 项目A
用一张图来讲明,这个流程.异步
使用webhook就须要为对应的服务端设计一个hook url,用于接收服务端的请求。ide
例如:
http://www.abcd.com/api/video/hook
一般webhook请求过来的数据格式为xml和json两种,在现代Web应用中,都能很好的解析和对这两种数据进行交互.
都常应用于异步编程中,如:高安全的支付、微信登陆(OAuth)、资源同步、资源建立与更新、耗时较长。
场景A:
你须要向视频处理服务器上传一个视频、你须要得到视频处理后的结果,然而视频处理服务器上视频不少,在排队进行处理,你不能马上获取到视频的处理结果,此时你能够设计一个hook url,当视频处理完成后,视频处理服务器自动向你的hook url发送请求,告诉你视频已经处理完毕.
因为webhook会向公网上的hook url发送数据,这就意味着某些很差心的人可能会找到这个url,从而进行发送错误的数据,可是咱们能够经过如下一些技术手段来解决这个问题:
当咱们使用web hook机制须要特别注意的问题