Http Api响应:列出Vs映射

时间:2015-05-25 16:03:06

标签: json web-services rest http

我有一个Price个对象,其中包含唯一的Item IdMrpDiscountSeller 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处于设计阶段,任何事情都可以适应。

由于

1 个答案:

答案 0 :(得分:0)

我不会做第二个选项,除非客户端有一个明确的用例,几乎总是想要立即使用地图,而我的数据已经是地图的形式。

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

将列表转换为地图确实不是很困难。

除非您在非常不寻常的环境中工作,否则我不会担心从网络上发送的额外数据。