Web services Uri设计聚合
我正在设计一个灵活的web服务来聚合数据 如果我们以销售为例。销售资源具有以下属性:Web services Uri设计聚合,web-services,rest,uri,restful-url,url-design,Web Services,Rest,Uri,Restful Url,Url Design,我正在设计一个灵活的web服务来聚合数据 如果我们以销售为例。销售资源具有以下属性: 销售人员 产品 价格 顾客 身份证 系 日期 等等 因此,访问sales的基本URI类似于以下内容: api/sales/{id} 我需要设计URI以满足以下要求: 一个部门的总销售额 一个人的产品销售总数 月 因此,有三个基本要求。对结果进行分组、筛选和选择(类似于分组依据、位置和选择) 如何设计URI?我真正的问题是如何设计分组。以下是我一直在考虑的一些想法: 保留当前URI设计,但添加其他参数: 例
- 销售人员
- 产品
- 价格
- 顾客
- 身份证
- 系
- 日期
- 等等
api/sales/{id}
我需要设计URI以满足以下要求:
/api/sales-aggregator?groupby=department&groupby=customer
/api/sales-aggregator/department/customer
但部门和客户的顺序是任意的建议?我会使用3或4,并进行一些修改 GROUP BY语句与聚合一起使用 函数按一列或多列对结果集进行分组 SQL按语法分组
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
聚合器
就可以了。如果您想将它与GET一起使用,那么我认为aggregation
将是一个更好的词。使用POST时,可以使用聚合器
如果链接不必满足一般用途,则应将聚合重命名为特定的名称,该名称描述聚合函数或查询的结果(如果使用多个聚合函数)。例如GET/api/sales person:123/sales count
或GET/api/sales count?sales person=123
在单个响应中返回聚合和聚合函数使用的项的另一个选项
GET /api/sales/?sales-person=123 -> 200 ok
{
count: 123,
total: {
value: 1234567,
currency: "USD"
},
sales: [
{
id: 1,
price: {value: 34556, currency: "USD"},
...
links: {self: {href: "/api/sales/1"}}
},
...
]
}
如果要在表示中启用/禁用聚合、项属性等,可以使用此选项。(如果您使用此选项,请不要忘记添加首选项,否则缓存控件将无法正常工作。)我将使用经过一些修改的3或4 GROUP BY语句与聚合一起使用 函数按一列或多列对结果集进行分组 SQL按语法分组
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
聚合器
就可以了。如果您想将它与GET一起使用,那么我认为aggregation
将是一个更好的词。使用POST时,可以使用聚合器
如果链接不必满足一般用途,则应将聚合重命名为特定的名称,该名称描述聚合函数或查询的结果(如果使用多个聚合函数)。例如GET/api/sales person:123/sales count
或GET/api/sales count?sales person=123
在单个响应中返回聚合和聚合函数使用的项的另一个选项
GET /api/sales/?sales-person=123 -> 200 ok
{
count: 123,
total: {
value: 1234567,
currency: "USD"
},
sales: [
{
id: 1,
price: {value: 34556, currency: "USD"},
...
links: {self: {href: "/api/sales/1"}}
},
...
]
}
如果要在表示中启用/禁用聚合、项属性等,可以使用此选项。(如果使用此选项,请不要忘记添加首选项,否则缓存控件将无法正常工作。)我将为统计数据创建单独的专用端点。我将为统计数据创建单独的专用端点。