假设我有一个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%的时间内使用。
答案 0 :(得分:2)
您可以将它放在任何一个地方,或两者兼而有之。您的应用程序的需求应该决定该选择。
您提出的设计更重要的是,您的各个位置对象不包含URI,以便客户端导航到每个位置以获取有关它们的更详细信息。
相反,您只包含一个ID,可能是您希望客户端使用它来构建特定于位置的URI?如果是这样,您应该强烈考虑为每个位置的有效负载添加完整的URI(例如,“link”或“href”)。如果没有这种方法,您将把客户端与URI结构联系起来,使系统的未来发展变得更加困难。仅供参考,此方法通常称为HATEOAS(超媒体作为应用程序状态引擎)。