掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

最佳webhook实践

现代程序所使用的API越来越多,无服务器架构也越来越流行。API提供商不再仅仅是用传统的REST端点。因为传统REST API功能有限,无法为你提供方便的功能,例如有东西出现变化的时候立刻对你进行提醒。

 

API进行polling操作,是一个非常浪费时间的事情。一些事件只是偶尔发生,因此你必须要搞清楚polling call的频率,而且你很可能无法真正搞清。

webhooks很好的解决了这个问题。webhooks能够让web服务使用HTTP POST请求来提供其他服务的接近实时的信息。

 

webhook能够在事件发生的时候将数据提供给其他程序,也就是说你能够立刻收到提醒。对于服务提供商和使用者来说,webhook都非常实用。如果你的API不支持webhook,那么你必须要改进了(说你呢,Salesforece)。

在整合了超过100个服务的API之后,我可以说那些使用了webhookAPI真的非常好用。现在我们就来看看如何才能做一个好的webhook

自解性与连贯性

好的webhook服务,在事件提醒方面,应该能够提供尽可能多的信息。除此之外,它还要给客户端提供额外的信息,让客户端知道它根据这个事件应该采取何种反应。

POST请求应该包含一个timestampwebhook_id如果你提供了多种类别的webbook,还需要包含一个type属性。

 

GitHub这一点做的就非常好。

允许使用者定义多URL

在设计webhook的时候,你还应该考虑一下使用者的感受。只让他们在一个URL下订阅事件,这并不是好的开发者体验。如果我需要跨系统监控同一事件,你最好能让我添加多个URL。这一点ClearbitIntercomAPI做的就很好。

 

基于UI的订阅和基于API的订阅

在准备整合的时候,我们要如何处理订阅的创建?一些服务设计了一个UI,指导开发者创建订阅。还有一些服务为此写了一个API

 

在这一点上做的最好的是Slck,它两个都支持。

webhook安全性

在有人配置了他的服务,让服务从你的webhook那里接受payload之后,它也会监听任何其他发向这个端点的paypload

如果用户的程序需要处理敏感数据,你的webhook最好可以对这个请求进行验证,确保它是你的服务所生成的请求,而不是某个第三方服伪装成你。这并不是必须要有的特性,但是如果有的话,它可以让你的webhook更安全。

你可以用多种方式来保证安全性。如果你想让使用者麻烦一点的话,你可以让他自己使用IP地址创建白名单——还有一个更简单的方法,那就是设置一个秘密的token来验证信息。

你可以像Slack或是Facebook那样简单的使用文本来分享密钥。

 

你也可以使用一些更复杂的设置。例如Mandrillwebhook请求,其中包含了一个额外的HTTP headerwebhook POST请求,X-Mandrill-Signature里面包含了请求的签名。要想对webhook请求进行验证,你可以使用和Mandrill一样的方法,生成一个签名,用它与X-Mandrill-Signature header进行比对。

给订阅设定过期时间

虽然现在已经很少有人给订阅设定截止日期了,但是它已经成为了一个比较普遍的功能。Microsoft Graph API就是一个很好的例子。在没有更新的情况下,使用Microsoft Graph API创建的任何订阅都会在72小时之后过期。

从数据提供商的角度来看,这个功能有其实际意义。谁也不想持续的发送那些已经无用,或是想要使用数据的POST请求。

总结

webhook现在还是一个碎片化比较严重的领域,但是随着时间的推移,它一定会形成一个比较统一的标准。

如果你想要给自己的API加入webhook,那么我建议你好好看看GitHubStripeIntercomSlackAPI是怎么做的。

原文来自:SDK.cn

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 行驶证查询

    根据车牌号码、姓名、车牌类型,返回行驶证详情信息。

    根据车牌号码、姓名、车牌类型,返回行驶证详情信息。

  • 行驶证查询简版

    输入车牌号码,返回:车牌号、品牌、车辆型号、发动机号、车辆识别码、车辆类型、营运性质、初次登记日期

    输入车牌号码,返回:车牌号、品牌、车辆型号、发动机号、车辆识别码、车辆类型、营运性质、初次登记日期

  • 车辆投保日期查询

    输入车牌号码、车辆类型或车架号,返回初次投保日期、上次交强险投保年月、最近交强险投保期启、最近交强险投保期止。

    输入车牌号码、车辆类型或车架号,返回初次投保日期、上次交强险投保年月、最近交强险投保期启、最近交强险投保期止。

  • 行驶证信息详情查询

    输入车牌号码、姓名、车牌类型,返回行驶证详情信息。

    输入车牌号码、姓名、车牌类型,返回行驶证详情信息。

  • VIN码查车五项

    调用车管所全量数据,通过输入车辆的VIN码,可直接查询车辆的车架号、发动机号、 品牌名称、初次登记日期、品牌型号等信息。

    调用车管所全量数据,通过输入车辆的VIN码,可直接查询车辆的车架号、发动机号、 品牌名称、初次登记日期、品牌型号等信息。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future