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