【发布时间】:2020-03-04 10:52:22
【问题描述】:
我想了解 webhook(什么是 webhook)。 webhook 的应用是什么(一个真实世界的场景)。另外,webhook 和 API 有什么区别?
【问题讨论】:
标签: rest api http web webhooks
我想了解 webhook(什么是 webhook)。 webhook 的应用是什么(一个真实世界的场景)。另外,webhook 和 API 有什么区别?
【问题讨论】:
标签: rest api http web webhooks
API 是与服务通信的标准化方式。您在问题中标记了 REST,因此我将重点介绍使用 HTTP 的 RESTful API,但重要的是要知道 API 是一个非常通用的术语。
在 REST 世界中,一切都是资源,您可以使用 HTTP 方法来定义要对该资源执行或应用的操作。例如,要列出 GitHub 上的所有用户,您可以向 https://api.github.com/users 发送 GET 请求。 URL(特别是/users 部分)定义了您感兴趣的资源。这里的资源是所有用户的集合。您还可以使用其他方法;例如PUT 创建或更新资源。要了解更多关于不同方法的信息,您可以阅读HTTP specification。
Webhook 通常与 API 结合使用,但它们专注于事件。它们允许服务在事件发生或满足某些条件时发送“通知”。
GitHub 再次成为 webhook 用途的一个很好的例子。假设我正在构建一个服务,每次有人在 GitHub 上对某个问题发表评论时都会发送一封电子邮件。我可以使用 GitHub API(如上)列出有关问题的所有 cmets,然后检查自上次检查以来是否有任何新的 cmets。然后我可以每隔几秒钟重复一次这个请求。这被称为polling。这里的问题是,我检查结果的大部分时间都不会改变。这将是一种资源的浪费。 电子书允许Event-Driven Programming。每次添加评论时,我都可以指示 GitHub 向我的服务发送 HTTP 请求,而不是随机检查:也就是 webhook。在这个架构中,当我确定有新评论被留下时,我只需要向 GitHub 的 API 发送请求。
总体而言,您无法真正比较 API 和 webhook。它们之间的联系只是 webhook 向 API 发送请求。
【讨论】: