【问题标题】:URI when including aggregate information in RESTful response在 RESTful 响应中包含聚合信息时的 URI
【发布时间】:2012-07-09 17:25:12
【问题描述】:

假设我有一个 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 最有意义?还是/地点?或者也许是 /employees/locations?

我担心的是,每次对 /locations 的请求都计算employee_count 可能会导致额外的、浪费的开销,因为employee_count 可能只有5-10% 的时间使用。

【问题讨论】:

    标签: rest aggregate restful-url


    【解决方案1】:

    你可以把它放在任何一个地方,也可以放在两个地方。您的应用程序的需求应该决定该选择。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多