Web API 2最佳实践 - 产品和类别

时间:2013-12-31 00:58:39

标签: c# .net asp.net-web-api

我目前正在开发一个WebAPI 2项目。

我有两种模式:

  • 带有标识符,名称和类别的“产品”
  • 带有标识符,名称和产品列表的“类别”

在网页上,我必须按类别显示所有产品:

  • 第1类 - 产品 - 产品 - 产品
  • 第2类 - 产品 - 产品

我的问题是:如果我想从我的WebAPI中检索已填充的类别列表,我是否:

  • 创建一个控制器“ProductsController”并实现一个方法,该方法返回一个类别为IEnumerable的对象?
  • 或者创建一个控制器“CategoriesController”并实现一个方法,它返回一个类型为IEnumerable的对象?

3 个答案:

答案 0 :(得分:2)

您正在退回碰巧有产品作为儿童的类别。我会在CategoryController(而不是CategoriesController)中实现它。它应该返回IQueryable而不是IEnumerable。

public class CategoryController
{
    [Queryable]
    public IQueryable<Category> Get()
    {
        ....
    }
}

答案 1 :(得分:0)

这完全取决于您如何组织UI - 即您的用例。 (请注意,控制器并非特定于任何业务逻辑问题,而是仅针对物理网页或API的情况下的资源。)

  • 如果您有“类别”页面并希望查看属于特定类别的所有产品,那么CategoryController方法将是合适的。
  • 如果您有一个“产品”页面,并且您希望按类别对其进行过滤,那么ProductController方法就可以了。
  • 如果你想要两者,那就实现两者。

答案 2 :(得分:0)

你应该创建CategoryController并返回IQueryable而不是IEnumerable。因为IQueryable最适合记忆。

public IQueryable<Category> GetCategory()
{
   //your get logic here
}