synchronization - REST 最佳实践 : synchronizing a client to a server

标签 synchronization rest

我有一个 REST 服务器和一个在移动设备上运行的客户端应用程序。客户端有一些数据并希望从服务器获取数据更新。如何以 RESTful 方式在单个事务中执行此操作?

假设客户有以下元素:

  widget id=1 timestamp=2010-03-05T08:00:00
    doodad id=1 widget=1 timestamp=2010-03-05T08:10
    doodad id=2 widget=1 timestamp=2010-03-05T08:20
  widget id=2 timestamp=2010-03-05T09:00:00
    doodad id=3 widget=2 timestamp=2010-03-05T08:10

服务器有

  widget id=1 timestamp=2010-03-05T08:00:00
    doodad id=1 widget=1 timestamp=2010-03-05T08:10
    doodad id=2 widget=1 timestamp=2010-03-05T09:00
    doodad id=4 widget=1 timestamp=2010-03-05T08:30
  widget id=2 timestamp=2010-03-05T10:00:00
    doodad id=3 widget=2 timestamp=2010-03-05T09:10
    doodad id=5 widget=2 timestamp=2010-03-05T08:30

服务器应该返回类似的东西

  doodad id=2 widget=1 timestamp=2010-03-05T09:00
  doodad id=4 widget=1 timestamp=2010-03-05T08:30
  widget id=2 timestamp=2010-03-05T10:00:00
  doodad id=3 widget=2 timestamp=2010-03-05T09:10
  doodad id=5 widget=2 timestamp=2010-03-05T08:30

仅包含更改的行。

客户端想告诉服务器它有什么,以便服务器可以发送更新。我不想与服务器建立多个连接,因为移动连接不可靠,我不想冒险获取部分数据。

如果我要进行多个连接,我可能会让客户端为它具有 ID 和时间戳的每个项目生成 GET 请求,并且服务器可以不回复任何内容(304 未修改)或适当的更新值.例如:“GET/widgets/{id};timestamp=xxx”。

在单笔交易中做同样事情的最佳方式是什么?我可以做类似“GET/changes”的事情并且正文具有客户端已经拥有的每一行的类型(小部件或装饰物),id 和时间戳值吗?我想我知道如何返回值(作为更改的集合),但客户如何要求它们?

谢谢,拉尔夫

最佳答案

查找如何使用 etags ,这种事情就是他们的目的。对于少量数据,发送整个有效负载状态比为每个资源多次调用服务器会更快。

关于synchronization - REST 最佳实践 : synchronizing a client to a server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387424/

相关文章:

c# - 在内存、IsoStorage 和服务器之间同步

multithreading - 使用 golang sync.WaitGroup 的正确方法是什么

java - 获取多个锁时发生死锁

java - RESTEASY 如何让@PathParam 匹配一个UUID?

api - REST API URL 必须像这样吗?

java - 如何在 Jersey 中向 Moxy 注册 ValidationEventHandler?

c# - 如何保持平板电脑数据库同步

javascript - 从 google people api 获取联系人

java - 使用 Resteasy 的多个端点

java - 生产者消费者没有给出期望的结果