当前位置: 首页 > 后端技术 > PHP

说说技术——什么是WebHook?

时间:2023-03-30 04:13:18 PHP

(1.)什么是WebHook?Webhooks是一个API概念,并且越来越流行。我们可以用事件描述的东西越多,webhook的范围就越大。Webhooks作为轻量级事件处理应用程序变得越来越有用。简单的说就是一种反向的API机制,类似于触发器。场景模拟:在传统的web服务器设计中,我们的项目A想要获取项目B的数据,通常需要项目B提供API,然后项目A请求项目B的API获取数据。我们称此过程为“拉取”数据。==通过webhook机制,颠倒了client-server模式。==继续回到现场:新增了一个需求。项目A需要实时获取项目B的最新数据。在传统的方法中,我们需要不断地轮询项目B来获取最新的数据。这样的效率和性能是很低的。传统方式是通过webhook机制设计的:项目A需要不断轮询拉取项目B的最新数据。项目A->项目Bwebhook机制:项目A提供一个webhookurl,每次项目B创建新数据时,它会向项目A的hook地址发起请求,项目A收到项目B的请求,然后对数据进行处理。ProjectB->ProjectA用一张图来说明这个过程。(2.)如何使用webhook?使用webhook需要为对应的服务器设计一个hookurl,用于接收服务器的请求。例如:http://www.abcd.com/api/video/hook通常webhook请求的数据格式为xml和json,在现代web应用中可以很好的解析和处理交互。(3.)主要应用场景经常用到异步编程,比如:高安全支付、微信登录(OAuth)、资源同步、资源创建和更新等,耗时较长。场景A:需要上传视频到视频处理服务器,需要获取视频处理结果。但是视频处理服务器上的视频很多,都在排队等待处理。您无法立即获得视频处理结果。这时候,你可以设计一个hookurl,当视频处理完成后,视频处理服务器会自动向你的hookurl发送请求,告诉你视频已经处理完毕。(4、)安全问题由于webhook会向公网的hookurl发送数据,这意味着有些不法分子可能会发现这个url并发送错误的数据,但是我们可以通过以下技术手段解决这个问题:增加token机制并增加auth认证只接收对应的服务器域或IP请求数据签名(5.)需要注意的问题我们在使用webhook机制时,需要特别注意。服务商通过webhook向你的服务器发送数据时,是不会去关注数据的。假设此时你的服务器已经崩溃,或者请求无法成功等,你需要主动尝试请求数据。Webhook会发送大量请求,这可能会导致您的应用程序阻塞,因此您需要确保您的应用程序能够很好地处理这些请求。