【发布时间】:2016-08-24 08:29:45
【问题描述】:
理想情况下,我希望有以下格式的 URL:
/api/categories/1,2,3...N/products
这将返回指定类别的所有产品。使用多个类别 ID 调用一次 API 可以节省多次数据库调用,从而提高性能。
我可以通过以下方式轻松实现。
public HttpResponseMessage GetProducts(string categoryIdsCsv)
{
// <1> Split and parse categoryIdsCsv
// <2> Get products
}
但是,这看起来不是一个干净整洁的解决方案,并且可能违反了 SRP 原则。我也尝试过使用ModelBinder,但是它向查询字符串添加了参数。
问题:
- 有没有一种简洁的方法来实现这种 URL 结构?
- 或者是否有不同/更好的方法来检索多个类别的所有产品?
如果您需要任何进一步的说明,请告诉我。
【问题讨论】:
-
/api/products?categories[]=1&categories[]=2&...有什么问题?这是完成此类事情的标准方式。此外,Web API 2 会自动将这些查询参数解析为控制器方法参数int[] categories,因此无需自定义ModelBinder。
标签: c# rest asp.net-web-api2