Dav*_* D. 3 api web-services http websocket
在我的网站上,我想创建一个公共API,允许客户(未知的人)与我的服务进行交互.在这种情况下,经典的REST API可以很好地工作.
但是,我也需要能够向客户发送事件.这些事件与客户端HTTP请求无关.我看到"webhooks"是解决这个问题的一种方法.如果我理解,使用webhooks,我的服务会将HTTP POST请求发送到客户端指定的URL,并在此请求中包含事件数据.
我认为websocket也可以用作满足这种全双工通信需求的解决方案.
我想知道的是,客户实施与我的服务交谈最简单的方法是什么?简洁是这里的关键点.困难的是我的客户可以使用各种技术(带有HTTP服务器的完整网站,没有服务器的iOS/Android应用程序等)
如果我使用REST API + webhooks,对客户有什么影响?WebSockets的?等等?如何做出选择?
希望它清楚(但不确定).谢谢 :)
小智 6
我认为webhooks是一个更简单的解决方案.是的,您理解得很清楚,使用您的API的开发人员会注册一个URL,您的后端将POST事件数据.这是API中使用的常见模式.
使用webhooks设计的一大好处是客户端/服务器连接不需要保持打开状态.毕竟,如果事件很少发生(即每小时或每天只发生几次)或保持一致的连接打开是一个挑战,只有在需要时建立连接才是相当有效的.
API提供商使用webhooks的挑战是设计一个事件后端系统,该系统处理状态检测的变化和可靠的webhook调用机制(即处理无响应或抛出错误的webhook接收者URL).
在开发人员端使用webhooks的挑战是他们需要站起来一个可靠的Web服务器来监听来自服务器的事件POST数据.
实时 API(即基于Websockets,Bayeux/CometD)实际上是膨胀的,因为实时连接意味着不必建立新的连接,这对于非常繁琐的会话特别有用.此外,还有很多项目和公司在服务器和客户端上使用完全出炉的库来解决繁重问题.其中之一就是Fanout.io,只需几行代码就可以在客户端/服务器之间推送消息,尽可能利用XMPP,Bayeux和Websockets.
(我与Fanout无关,但我已经使用过了)
总而言之,webhooks很简单,主要是因为你已经熟悉了实现它们所需的架构,而且模式很好.如果你倾向于持久连接方法,我会看看像Fanout这样的工具/平台,因为它负责繁重的工作(即订阅/发布,并发连接规模,客户端/服务器库).