数据同步服务的REST API设计

时间:2019-05-27 03:36:23

标签: rest api

在客户端和服务器之间进行数据同步操作的最佳实践是什么?

我们有2个(或更多)资源:

  1. cars->年,型号,引擎
  2. toys->颜色,品牌,重量

我们需要从服务器获取更新的资源,以防对其进行任何更新。例如:某人从另一个客户端对相同数据进行了更改,我们需要将这些更新转移到我们的客户端应用程序中。

请求:

http://api.example.com/sync?data=cars,toys(动词?)

http://api.example.com/synchronizations?data=cars,toys(虚拟资源“同步”)

回应混合数据:

状态码:200

{
  message: "ok",
  data: {
    cars: [
        {
          year: 2015,
          model: "Fiat 500"
          engine: 0.9
        },
        {
          year: 2004,
          model: "Nissan Sunny"
          engine: 1.3
        }
    ],
    toys: [
        {
          color: "yellow",
          brand: "Bruder"
          weight: 2
        }
    ],
  }
}

,如果没有可用更新,则返回状态码204。在我看来,分开的http调用不是一个好的解决方案。如果我们有100个资源(= 100个http调用)怎么办?

1 个答案:

答案 0 :(得分:0)

我不是专家,但是我过去使用的一种方法是索要数据的“签名”,而不是始终获取和获取数据。签名可以是您要查找的数据的哈希。因此,流程将类似于:

  1. 获取数据的签名哈希
http://api.example.com/sync/signature/cars

哪个返回签名哈希值

  1. 检查签名是否与上次检索数据不同

  2. 如果签名不同,请去获取数据

http://api.example.com/sync/cars
  1. 让REST还向数据添加新签名
{
  message: "ok",
  data: {
    cars: [
        {
          year: 2015,
          model: "Fiat 500"
          engine: 0.9
        },
        {
          year: 2004,
          model: "Nissan Sunny"
          engine: 1.3
        },
    ],
    signature: "570a90bfbf8c7eab5dc5d4e26832d5b1"
  }
}