我有一个Price
个对象,其中包含唯一的Item Id
,Mrp
,Discount
,Seller Price
。
有一个Http Api暴露,给定一个Item Ids列表返回他们的数据。现在有两种方法可以做到这一点。
例如:如果某人在A,B,C
上进行了GET,则回复:
方法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
}
]
方法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
}
}
方法2优于1的优点是它为客户端提供了迭代和查找的灵活性,但需要权衡额外的数据在线路上流动。现在我不想从实体内部移出Item Id,导致实体在没有它的情况下失去意义,然后客户端必须插入Item Id来完成对象,然后将其传递给其他一些客户端。
最佳做法是什么?这样做的任何其他方法。
由于Api处于设计阶段,任何事情都可以适应。
由于
答案 0 :(得分:0)
我不会做第二个选项,除非客户端有一个明确的用例,几乎总是想要立即使用地图,而我的数据已经是地图的形式。
对于内部api,只要你访问一致,它就会形成一个合理的约定,我不认为如果他们看到它,另一个开发人员会感到惊讶。
将列表转换为地图确实不是很困难。
除非您在非常不寻常的环境中工作,否则我不会担心从网络上发送的额外数据。