现代程序所使用的API越来越多,无服务器架构也越来越流行。API提供商不再仅仅是用传统的REST端点。因为传统REST API功能有限,无法为你提供方便的功能,例如有东西出现变化的时候立刻对你进行提醒。
对API进行polling操作,是一个非常浪费时间的事情。一些事件只是偶尔发生,因此你必须要搞清楚polling call的频率,而且你很可能无法真正搞清。
webhooks很好的解决了这个问题。webhooks能够让web服务使用HTTP POST请求来提供其他服务的接近实时的信息。
webhook能够在事件发生的时候将数据提供给其他程序,也就是说你能够立刻收到提醒。对于服务提供商和使用者来说,webhook都非常实用。如果你的API不支持webhook,那么你必须要改进了(说你呢,Salesforece)。
在整合了超过100个服务的API之后,我可以说那些使用了webhook的API真的非常好用。现在我们就来看看如何才能做一个好的webhook。
自解性与连贯性
好的webhook服务,在事件提醒方面,应该能够提供尽可能多的信息。除此之外,它还要给客户端提供额外的信息,让客户端知道它根据这个事件应该采取何种反应。
POST请求应该包含一个timestamp和webhook_id。如果你提供了多种类别的webbook,还需要包含一个type属性。
GitHub这一点做的就非常好。
允许使用者定义多URL
在设计webhook的时候,你还应该考虑一下使用者的感受。只让他们在一个URL下订阅事件,这并不是好的开发者体验。如果我需要跨系统监控同一事件,你最好能让我添加多个URL。这一点Clearbit和Intercom的API做的就很好。
基于UI的订阅和基于API的订阅
在准备整合的时候,我们要如何处理订阅的创建?一些服务设计了一个UI,指导开发者创建订阅。还有一些服务为此写了一个API。
在这一点上做的最好的是Slck,它两个都支持。
webhook安全性
在有人配置了他的服务,让服务从你的webhook那里接受payload之后,它也会监听任何其他发向这个端点的paypload。
如果用户的程序需要处理敏感数据,你的webhook最好可以对这个请求进行验证,确保它是你的服务所生成的请求,而不是某个第三方服伪装成你。这并不是必须要有的特性,但是如果有的话,它可以让你的webhook更安全。
你可以用多种方式来保证安全性。如果你想让使用者麻烦一点的话,你可以让他自己使用IP地址创建白名单——还有一个更简单的方法,那就是设置一个秘密的token来验证信息。
你可以像Slack或是Facebook那样简单的使用文本来分享密钥。
你也可以使用一些更复杂的设置。例如Mandrill的webhook请求,其中包含了一个额外的HTTP header和webhook POST请求,X-Mandrill-Signature,里面包含了请求的签名。要想对webhook请求进行验证,你可以使用和Mandrill一样的方法,生成一个签名,用它与X-Mandrill-Signature header进行比对。
给订阅设定过期时间
虽然现在已经很少有人给订阅设定截止日期了,但是它已经成为了一个比较普遍的功能。Microsoft Graph API就是一个很好的例子。在没有更新的情况下,使用Microsoft Graph API创建的任何订阅都会在72小时之后过期。
从数据提供商的角度来看,这个功能有其实际意义。谁也不想持续的发送那些已经无用,或是想要使用数据的POST请求。
总结
webhook现在还是一个碎片化比较严重的领域,但是随着时间的推移,它一定会形成一个比较统一的标准。
如果你想要给自己的API加入webhook,那么我建议你好好看看GitHub、Stripe、Intercom和Slack的API是怎么做的。
原文来自:SDK.cn
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景
涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。
根据给定的手机号、姓名、身份证、人像图片核验是否一致
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。
IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。