[英]Uri design aggregation
我正在設計一個靈活的Web服務來聚合數據。
如果我們以銷售為例。 銷售資源具有以下屬性:
因此,用於訪問銷售的基本URI類似於以下內容:
api/sales/{id}
我需要設計URI以滿足以下要求:
因此,三個基本要求。 對結果進行分組,過濾和選擇(類似於GROUP BY,WHERE和SELECT)。
如何設計URI? 對我而言,真正的問題是如何設計分組。 這是我一直在考慮的一些想法:
保留當前的URI設計,但添加其他參數:
例如
/api/sales?groupby=department&groupby=customer
新的URI:
/api/sales-aggregator?groupby=department&groupby=customer
將分組包括為路徑的一部分:
/api/sales-aggregator/department/customer
但是部門和客戶的順序是任意的。
替代路徑解決方案
/ API /銷售聚集; GROUPBY =部門,GROUPBY =客戶
建議?
我將使用3或4進行一些修改。
GROUP BY語句與聚合函數結合使用,以按一個或多個列對結果集進行分組。
SQL GROUP BY語法
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
如果您需要一些通用的東西,那么會有很多不同的解決方案,那么可以使用aggregator
詞。 如果您想將它與GET一起使用,那么我認為aggregation
將是一個更好的詞。 使用POST可以使用aggregator
。
如果鏈接不必滿足一般目的,則應將aggregation
重命名為特定的名稱,以描述聚合函數或查詢的結果(如果使用多個聚合函數)。 例如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"}}
},
...
]
}
如果要啟用/禁用表示中的聚合,項目屬性等,可以將其與首選項標題一起使用。 (如果您使用它,請不要忘記在“ variable”標題中添加偏好的樣式 ,否則緩存控件將無法正常工作。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.