Http Api 响应:列表与地图

Sim*_*ple 5 rest json web-services http

我有一个Price包含唯一的Item Id, Mrp, Discount,的对象Seller Price

有一个公开的 Http Api,给定项目 Id 列表后会返回其数据。现在有两种方法可以做到这一点。例如:如果有人在 上执行 GET A,B,C,则响应:

方法 1:返回价格对象列表:

[
    { "ItemId" : "A",
      "Mrp" : 55.0,
      "Discount" : 0.0,
      "Seller Price" : 55.0
    },
    { "ItemId" : "B",
      "Mrp" : 100.0,
      "Discount" : 10.0,
      "Seller Price" : 90.0
    },
    { "ItemId" : "C",
      "Mrp" : 75.0,
      "Discount" : 0.0,
      "Seller Price" : 75.0
    }
]
Run Code Online (Sandbox Code Playgroud)

方法 2:返回价格对象的映射:

{
    "A" :{ "ItemId" : "A",
           "Mrp" : 55.0,
           "Discount" : 0.0,
           "Seller Price" : 55.0
         },
    "B" :{ "ItemId" : "B",
           "Mrp" : 100.0,
           "Discount" : 10.0,
           "Seller Price" : 90.0
         },
    "C" :{ "ItemId" : "C",
           "Mrp" : 75.0,
           "Discount" : 0.0,
           "Seller Price" : 75.0
         }
}
Run Code Online (Sandbox Code Playgroud)

与方法 1 相比,方法 2 的优点是它为客户端提供了迭代和查找的灵活性,但需要权衡额外的数据通过网络传输。现在我不想从实体内部移出 Item Id,因为没有它实体就失去了意义,而且客户端必须插入 Item Id 来完成对象,然后将其传递给其他一些客户端。

对此的最佳实践是什么。执行此操作的任何其他方法。

由于 Api 正处于设计阶段,所以任何事情都可以容纳。

谢谢

Rob*_*kal 1

我不会选择第二个选项,除非有一个明确的用例,客户几乎总是希望立即使用地图,并且我的数据已经采用地图的形式。

对于内部 api,只要访问一致,它就会形成合理的约定,而且我认为其他开发人员如果看到它也不会感到惊讶。

将列表变成地图确实不是很难。

除非您在非常不寻常的环境中工作,否则我不会担心通过线路发送额外的数据。