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

How to make a server API tell a client API that an update is available

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

下面是场景的高级图表。

尝试学习 webhooks?基本上,客户端将 "subscribe" 到您的 webhook,或者为了更容易,客户端将向服务器提供一个端点。每当有更新时,您的服务器只向客户端发送请求。客户端 应该简单地调用一个服务 ,只要它从 webhook 收到请求,就会获取 read.

基本上是这样的

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

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

{
   "updateFound":true
}

所以每当客户端的'/updateAvailable'被调用并收到请求时,你就会做这样的事情(伪代码)

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

编辑

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

的任何服务

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

  1. 使用 restful 客户端上的计时器每隔 N seconds/minutes 向 restful 服务器请求...但是,这确实是个坏主意,因为它必须请求多次访问服务器,即使没有更新数据。

  2. 使用第三方基于发布-订阅的消息协议解决方案,在有新数据更新时实现推送通知功能。这些解决方案是:Google FCM、MQTT、AMQP