【发布时间】:2023-03-20 21:11:01
【问题描述】:
我正在尝试设计如何通过 REST API 最好地处理 Android 应用程序和远程服务器之间的数据同步。
现在仍处于早期阶段,但我的休息服务器基本上正在运行(无论如何都足以用于测试目的)。
我有 3 个表要同步(链接如下)。
节目 >----- 季节 >----- 剧集
服务器和设备都有这些表的相似版本,我需要将它们从设备同步到服务器(现在和最终两种方式)。同步将通过 Android 服务在后台对 REST API(插入/更新和删除)进行异步调用来实现。
现在我的主要问题是提出一个逻辑,以确保双方都得到相应的更新。
从设备到服务器的插入/更新将通过 POST 请求完成,所以我想在通过 ON INSERT/ON UPDATE TRIGGERS (SQlite) 填充的所有 3 个表上都有一个状态标志,允许同步服务计算行需要在服务器上进行。 这是正确的做法吗?
看起来像
CREATE TRIGGER sync_update_show AFTER UPDATE ON show
BEGIN
UPDATE show SET sync_flag = 'TO_SYNC' WHERE _id = new._id
END
现在进行删除,该服务独立于主应用程序,我认为使用 BEFORE DELETE SQlite TRIGGERS 填充服务可以浏览的“TODELETE”表并触发对服务器的删除 api 调用。 这是正确的做法吗?
看起来像
CREATE TRIGGER sync_delete_show BEFORE DELETE ON show
BEGIN
INSERT INTO todelete_show
SELECT * FROM show WHERE _id = old._id
END
现在,当涉及到应用程序同步的服务器时,我只需获取所有记录(API 调用)并处理设备上的插入/更新/删除(浏览返回的记录)。但是可能有一种更有效的方法来优化带宽(返回的 JSON 可能很大)。
我欢迎对此提出任何意见,因为我不想开始实施服务并意识到我完全错了!
【问题讨论】:
标签: android api sqlite rest client