每个资源单个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
例子:
我想公开GetCustomerListByArea
或GetItemsListPerCategory
这样的方法。
什么呢?我应该创建另一个控制器或使用自定义控制器动作和属性路由,并把它在现有的控制器?
一个包含更多信息的链接:
REST与RPC在ASP中的对比. NET Web API?谁在乎;
很好,相当老,文章解释了我的问题。但是它并没有深入讨论如何组织控制器。地区吗?还是只是文件夹?
这可以归结为一个简单的设计原则-关注点分离(SoC),您应该考虑您希望公开业务层的哪些功能并基于此创建控制器。
从上面的示例中,可以创建ProductController
和CustomerController
,这可能会暴露以下端点:
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
希望能帮到你…