我正在使用 Spring MVC 实现 REST api。要求是:
/transactions返回交易数组。/transactions?groupByCategory返回按类别分组的交易。例如请求#1 返回:
[
{ "id": 1, "category": "auto", "amount": 100 },
{ "id": 2, "category": "misc", "amount": 200 },
{ "id": 3, "category": "auto", "amount": 300 }
]
Run Code Online (Sandbox Code Playgroud)
而请求 #2 按类别对此结果进行分组并返回每个类别的总和:
[
{ "category": "auto", "amount": 400 },
{ "category": "misc", "amount": 200 }
]
Run Code Online (Sandbox Code Playgroud)
显然这些请求的返回值是不同类型的。我如何在 Spring MVC 中做到这一点?到目前为止我有:
@RequestMapping("/transactions")
public List<Transaction> getTransactions(
@RequestParam(value="groupByCategory", required=false) String groupByCategory
) {
...
}
Run Code Online (Sandbox Code Playgroud)
但这将返回类型修复为List<Transaction>. 我如何适应第二种类型:List<TransactionSummaryByCategory>?
编辑:我找到了一种解决方案,即将返回类型指定为Object. 这似乎有效,并且响应根据对象类型正确序列化。但是,我想知道这是否是最佳实践!
public Object getTransactions(...) {
...
}
Run Code Online (Sandbox Code Playgroud)
您只需在控制器中提供两种方法即可。第一个返回List<Transaction>映射使用
@RequestMapping("/transactions")
Run Code Online (Sandbox Code Playgroud)
第二个返回List<TransactionSummaryByCategory>并映射使用
@RequestMapping(value = "/transactions", params = "groupByCategory")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |