Webhooks起初看起来像是API,但它们略有不同。它们之间的主要区别在于,webhooks不需要发出请求即可获得响应,而API则需要发送请求才能获得响应。使用Webhooks可以接收,而API需要您检索。
一个示例是GitHub Webhook与GitHub API。对于GitHub API,您每次需要信息时都需要发送GET请求。与GitHub Webhook相比,在GitHub webhook中,您可以打开并添加URL来发送POST数据。正确设置了Webhook之后,无论何时更新GitHub上的信息,数据都会自动发送到您在Webhook设置中拥有的URL。
详细比较
为了更好地说明,我们可以看两种情况:使用Webhook和使用API。
使用API:假设我们想要某个服务的Github存储库的最新提交日期。首先GitHub Service API需要对GitHub存储库所有者帐户进行身份验证,然后可以为GET请求的正确端点调用最新的提交日期。
使用 Webhook : GitHub Service Webhook将需要创建自己的Webhook URL,然后将该URL放入GitHub存储库的设置中。设置好该URL后,无论何时在存储库上发生任何事件,GitHub都会将包含所有更新数据的POST请求发送到我们的webhook URL。如果Webhook正在运行,则可以轻松地在服务上显示Webhook数据中的最新提交日期。
如上图所示,使用Webhook可使数据检索更加自动化。每当有更新时,GitHub Webhooks会将数据移交给我们的服务,而GitHub API要求我们从GitHub检索数据。
Webhooks的一些缺点是兼容性和支持。由于API更详细和手动,因此很容易从A点到B点快速集成它们。某些服务尚不支持Webhooks,这使得设置它们更加困难。每个服务通常都会提供一个API。