在RESTful响应中包含聚合信息时的URI

时间:2012-07-09 17:25:12

标签: rest aggregate restful-url

假设我有一个RESTful API方法来返回有关一系列位置的数据:

/位置

[{
  location_id: 1,
  location_name: 'Austin'
},{
  location_id: 2,
  location_name: 'San Francisco'
},{
  location_id: 3,
  location_name: 'Seattle'
}]

现在假设我想为每个位置返回一个聚合employee_count:

[{
  location_id: 1,
  location_name: 'Austin',
  employee_count: 96
},{
  location_id: 2,
  location_name: 'San Francisco',
  employee_count: 71
},{
  location_id: 3,
  location_name: 'Seattle',
  employee_count: 85
}]

对于uri来说最有意义的是什么呢?还是地点?或者/员工/地点?

我担心的是,每次向/位置发出请求计算employee_count都会产生额外的浪费开销,因为employee_count只能在5-10%的时间内使用。

1 个答案:

答案 0 :(得分:2)

您可以将它放在任何一个地方,或两者兼而有之。您的应用程序的需求应该决定该选择。

您提出的设计更重要的是,您的各个位置对象不包含URI,以便客户端导航到每个位置以获取有关它们的更详细信息。

相反,您只包含一个ID,可能是您希望客户端使用它来构建特定于位置的URI?如果是这样,您应该强烈考虑为每个位置的有效负载添加完整的URI(例如,“link”或“href”)。如果没有这种方法,您将把客户端与URI结构联系起来,使系统的未来发展变得更加困难。仅供参考,此方法通常称为HATEOAS(超媒体作为应用程序状态引擎)。