如何使服务器API告诉客户端API更新可用

问题描述 投票:-1回答:2

我有休息客户端API从我的服务器通过/read端点访问数据。但是,我有一个internal batch service调用我的服务器的/write端点来更新数据。因此,有时来自服务器的数据会更新。我如何告诉客户数据已更新并要求它再次调用/read端点以获取最新数据?

下面是该场景的高级图表。

enter image description here

java rest web-services webservice-client
2个回答
1
投票

试试学习webhooks?基本上,客户端将“订阅”您的webhook,或者为了使其更容易,客户端将为服务器提供端点。只要有更新,您的服务器就会向客户端发送请求。客户端应该只调用一个服务,只要它收到来自webhook的请求,就会获取read

它基本上是这样的

  • 客户端订阅服务器
  • 客户端为服务器提供端点/updateAvailable
  • 当有更新时,服务器向客户端的端点/updateAvailable发送请求
  • '/ updateAvailable'调用一个调用'/ read'的服务

'/ updateAvailable'端点可以调用更新内容的服务。假设发送的请求有一个参数

{
   "updateFound":true
}

因此,无论何时调用客户端的'/ updateAvailable'并接收请求,您都会执行此类操作(伪代码)

if (updateBody.updateFound.message=true)
then call read()

编辑

通过为客户端创建端点,您还可以执行自动更新。所以客户端有一个/updateAvailable端点。服务器将更新发送到/updateAvailable端点,该端点从客户端调用/read使用的任何服务


0
投票

您的问题有两种解决方案:

  1. 在restful客户端上使用timer来每隔N秒/分钟请求一个宁静的服务器...但是,这真的很糟糕,因为它必须多次请求服务器,即使没有更新的数据。
  2. 使用第三方基于发布 - 订阅的消息传递协议解决方案,以便在有新数据更新时实现推送通知功能。这些解决方案包括:Google FCM,MQTT,AMQP
© www.soinside.com 2019 - 2024. All rights reserved.