什么是webhooks?--转载+在我总结

(一、)什么是Web Hook?

Webhook是一个API概念,并且变得越来越流行。我们能用事件描述的事物越多,webhook的作用范围也就越大。Webhook作为一个轻量的事件处理应用,正变得越来越有用。

简单来说就是一种反向API机制,类似于触发器的一样.

场景模拟:

在传统的web server设计中,我们项目A想要获取项目B的数据,通常项目B需要提供一个API,然后项目A去请求项目B的API,从而获得数据,这样的过程我们称之为"拉"数据。

==通过webhook机制,对客户端-服务端的模式进行了逆转。==

继续回到场景中:

新增了一个需求,项目A需要实时获取到项目B的最新数据,在传统做法中,我们需要不停的去向项目B做轮询操作,以便获取到最新数据,这样的效率和性能都非常低下,通过webhook机制来设计

传统做法:项目A需要不停轮询去拉取项目B的最新数据

项目A   -> 项目B

webhook机制:项目A提供一个webhook url,每次项目B创建新数据时,便会向项目A的hook地址进行请求,项目A收到项目B的请求,然后对数据进行处理

项目B   -> 项目A

用一张图来说明,这个流程.

 

(二、)如何使用webhook?

使用webhook就需要为对应的服务端设计一个hook url,用于接收服务端的请求。

例如:

http://www.abcd.com/api/video/hook

通常webhook请求过来的数据格式为xml和json两种,在现代Web应用中,都能很好的解析和对这两种数据进行交互.

(三、)主要应用场景

都常应用于异步编程中,如:高安全的支付、微信登录(OAuth)、资源同步、资源创建与更新、耗时较长。

场景A:
你需要向视频处理服务器上传一个视频、你需要获得视频处理后的结果,然而视频处理服务器上视频很多,在排队进行处理,你不能立刻获取到视频的处理结果,此时你可以设计一个hook url,当视频处理完成后,视频处理服务器自动向你的hook url发送请求,告诉你视频已经处理完毕.

(四、)安全问题

由于webhook会向公网上的hook url发送数据,这就意味着某些不好心的人可能会找到这个url,从而进行发送错误的数据,但是我们可以通过以下一些技术手段来解决这个问题:

  • 增加token机制
  • 增加auth认证
  • 只接收对应服务端domain或IP请求
  • 数据签名

(五、)需要注意的问题

当我们使用web hook机制需要特别注意的问题

  1. 当服务提供者通过web hook将数据发送你的服务端后,就不会再去关注这些数据。假设你的服务端此时出现了崩溃,或者无法请求成功等原因,就需要主动去尝试请求数据。
  2. webhook会发出大量的请求,可能会造成你的应用阻塞,在此需要确保你的应用能够处理好这些请求。

自我理解:之前项目中使用过。类似alipay支付成功的回调函数。阿里服务器会给本地服务器发一个响应,告诉我本地服务器,是否已经处理成功。并返回响应的数据。这个回调函数或者叫action就是hook url。用来阿里服务器异步通知本地服务器的出里结果。一般用在异步项目中。并且在本地sdk中,通过阿里云的公私对返回的数据进行验证,以保证数据在传输过程中没有被修改,从而保证了数据的安全性。

web hook,避免了传统获取数据的拉的方式。不用本地不断用轮询的方式向对方服务器发送请求来知晓是否已经处理完成。而是给对方服务器提前设置好了hook url。这样地方在处理完成后就会给这个url发送请求结果了。采取的是推数据的方式。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值