每个资源单个Web API控制器或更少的带有更多自定义动作的控制器

本文关键字:控制器 自定义 API Web 资源 单个 | 更新日期: 2023-09-27 18:16:51

我想将我的大多数业务层方法公开给一个Web API项目,以允许更广泛的使用。

一个想法是每个资源有一个Web API控制器。

另一个想法是每个逻辑业务部分有一个控制器,并使用属性路由来公开相关的方法。

我喜欢第二种方法,它可以减少控制器。

每个资源没有一个控制器的缺点是什么?

附加信息:

此API将驻留在内部网中,并将为需要我们的2-3个主应用程序(ERP,Payroll,Barcode等)数据的支持应用程序提供支持

此APi的资源将是在业务层程序集中定义的业务实体。它们将是简单的对象和复杂的对象。例子:

    <
  • 库存物品/gh>客户
  • 每个客户的物品
  • 当前装载pickslip
  • 当前生产数据

e.t.c

例子:

我想公开GetCustomerListByAreaGetItemsListPerCategory这样的方法。

什么呢?我应该创建另一个控制器或使用自定义控制器动作和属性路由,并把它在现有的控制器?

一个包含更多信息的链接:

REST与RPC在ASP中的对比. NET Web API?谁在乎;

很好,相当老,文章解释了我的问题。但是它并没有深入讨论如何组织控制器。地区吗?还是只是文件夹?

每个资源单个Web API控制器或更少的带有更多自定义动作的控制器

这可以归结为一个简单的设计原则-关注点分离(SoC),您应该考虑您希望公开业务层的哪些功能并基于此创建控制器。

从上面的示例中,可以创建ProductControllerCustomerController,这可能会暴露以下端点:

GET /api/customer/1234        # gets customer by id
POST /api/customer/create     # creates a new customer
GET /api/customer/1234/items  # gets all items for a customer
GET /api/product/9876         # gets a product by id
POST /api/product/create      # creates a new product

希望能帮到你…