深入理解Webhooks及其应用

Webhooks是一种在特定事件发生时触发的HTTP回调,它允许创建一个监听HTTP POST请求的简单服务。最近,首次接触到Webhooks的概念,并在实现Webhook URL的过程中遇到了不少挑战。经过一番努力,最终理解了Webhooks的实质,并决定写下这篇文章,以分享理解。请注意,以下内容是基于个人的理解,如果有任何错误,欢迎指正。

什么是Webhooks?

从技术角度来看,Webhooks是一种用户定义的HTTP回调,当源站点发生特定事件时触发。事件触发时,源站点会向指定的Webhook URL发送一个HTTP请求。Webhooks的应用场景包括:

简而言之,Webhooks是一种接受HTTP POST请求的Web服务,它允许监听来自源站点的数据流。

示例:使用Webhooks获取用户社交资料

以FullContact网站为例,它存储了注册用户的社交资料。要获取特定用户的社交资料,需要使用用户邮箱和API密钥(由FullContact生成并提供)查询FullContact数据库。

假设需要为一系列邮箱地址获取JSON格式的社交资料,有两种方法可以实现:

  1. 手动查询:对于数量有限的邮箱地址,可以手动创建查询URL,查询FullContact数据库并保存JSON。
  2. 自动化查询:对于大量邮箱地址,可以创建一个应用程序,遍历邮箱地址列表,为每个邮箱地址创建查询URL,并查询FullContact数据库获取相应的JSON。

在第二种方法中,需要一个REST服务作为Webhook,它接受JSON输入并将其保存。这个REST服务就是Webhook,它持续监听FullContact网站的查询请求。

要查询FullContact数据库,需要创建一个查询URL,格式如下:

https://api.fullcontact.com/v2/person.json?email=XXXXX@YYYY.ZZZZ&apiKey=XXXXXXXXXXXXXXXX

在浏览器中打开上述URL,可以看到指定邮箱地址对应的JSON数据。

要在查询URL中添加Webhook,只需在"email"参数后添加以下内容:

&webhookUrl=http://yourRestServiceAddress.svc

添加Webhook的查询URL示例:

https://api.fullcontact.com/v2/person.json?email=XXXX@YYYY.ZZZ&webhookUrl=http://myServer/MyServiceUrl&apiKey=XXXXXXXXXXXXXXXXXXXX

当访问这个URL时,FullContact网站会将指定邮箱地址的JSON数据发送到指定的"webhook URL",即REST服务。需要注意的是,为了使REST服务作为Webhook正常工作,它必须暴露在互联网上。

还可以为服务端指定一个Webhook ID。Webhook ID的指定方式与Webhook URL相同。FullContact会将ID原样发送给服务端,这个ID可以在服务端用于识别JSON数据的归属。只需在URL中添加"&webhookId=XYZ"即可。

如果想查看发送到Webhook的JSON数据,可以创建一个虚拟Webhook。例如,使用postcatcher.in网站创建一个虚拟Webhook。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485