我在移动设备上运行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 Not Modified)或更新后的值。 。例如:“GET / widgets / {id}; timestamp = xxx”。
在单个交易中执行相同操作的最佳方法是什么?我可以执行类似“GET / changes”的操作,并且主体具有客户端已经拥有的每一行的类型(小部件或doodad),id和时间戳值吗?我想我知道如何返回值(作为一组变化),但客户如何要求它们?
谢谢,拉尔夫