讲技术什么是Web-Hook

10次阅读

共计 1130 个字符,预计需要花费 3 分钟才能阅读完成。

(一、) 什么是 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 会发出大量的请求, 可能会造成你的应用阻塞, 在此需要确保你的应用能够处理好这些请求。

正文完
 0