在 C# 中,是否可以有一个单独的路由器和控制器?
In C#, is it possible to have a separate Router and Controllers?
我目前正在重构一个 ASP.NetCore 2.18.0 项目,其中包含一个责任太多的控制器。我其实想把它分成 4 个独立的控制器。问题是,我不想让消费者更新他们的解决方案,所以虽然我希望逻辑存在于不同的控制器上,但我希望保持路由的当前状态:
合同列表控制器
- /api/v1.0/合约
- /api/v1.0/Contract/listAll/{customerReference}
- /api/v1.0/Contract/listOne/{customerReference}/{contractNumber}
合同工厂控制器
- /api/v1.0/Contract/Vollmacht
- /api/v1.0/Contract/Gripop
- /api/v1.0/Contract/Sepa
ContractLinkController
- /api/v1.0/Contract/renew/{customerReference}/{contractNumber}
- /api/v1.0/Contract/renewlnk/{contractNumber}
ContractDocuSignController
- /api/v1.0/Contract/dsReturn
- /api/v1.0/Contract/dsReturn/{contractNumber}/{sp}/{c1}/{c2}/{c3}
有没有一种方法可以创建一个路由器,它将 Http 请求定向到适当的控制器,而不是在控制器上使用注释?
FWIW,我在项目的任何地方都找不到 MapControllerRoute
。控制器有 [Route("api/v{version:apiVersion}/[controller]")] 然后方法有像 [Route("listAll/{customerReference}")]
这样的属性
这实际上比我预期的要简单。
我原来的控制器 class 有这样的属性:
[RequireHttps]
[Authorize]
[ApiController]
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[controller]")]
public class ContractController : Controller
{
// whatever
}
我需要做的就是:
- 创建四个控制器,每个控制器具有相同的属性并扩展
Controller
- 将
[Route("api/v{version:apiVersion}/[controller]")]
替换为[Route("api/v{version:apiVersion}/Contract")]
- 删除原来的控制器。
我目前正在重构一个 ASP.NetCore 2.18.0 项目,其中包含一个责任太多的控制器。我其实想把它分成 4 个独立的控制器。问题是,我不想让消费者更新他们的解决方案,所以虽然我希望逻辑存在于不同的控制器上,但我希望保持路由的当前状态:
合同列表控制器
- /api/v1.0/合约
- /api/v1.0/Contract/listAll/{customerReference}
- /api/v1.0/Contract/listOne/{customerReference}/{contractNumber}
合同工厂控制器
- /api/v1.0/Contract/Vollmacht
- /api/v1.0/Contract/Gripop
- /api/v1.0/Contract/Sepa
ContractLinkController
- /api/v1.0/Contract/renew/{customerReference}/{contractNumber}
- /api/v1.0/Contract/renewlnk/{contractNumber}
ContractDocuSignController
- /api/v1.0/Contract/dsReturn
- /api/v1.0/Contract/dsReturn/{contractNumber}/{sp}/{c1}/{c2}/{c3}
有没有一种方法可以创建一个路由器,它将 Http 请求定向到适当的控制器,而不是在控制器上使用注释?
FWIW,我在项目的任何地方都找不到 MapControllerRoute
。控制器有 [Route("api/v{version:apiVersion}/[controller]")] 然后方法有像 [Route("listAll/{customerReference}")]
这实际上比我预期的要简单。
我原来的控制器 class 有这样的属性:
[RequireHttps]
[Authorize]
[ApiController]
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[controller]")]
public class ContractController : Controller
{
// whatever
}
我需要做的就是:
- 创建四个控制器,每个控制器具有相同的属性并扩展
Controller
- 将
[Route("api/v{version:apiVersion}/[controller]")]
替换为[Route("api/v{version:apiVersion}/Contract")]
- 删除原来的控制器。