我已将Asp.Net Core MVC
用于我的REST API
,但我想创建一些可重复使用的控制器并通过单独的DLL分发它们。
在另一个项目中,我想像这样注册这些控制器:
services.AddMvc().AddApplicationPart(typeof(TodoController).Assembly)
.AddControllersAsServices();
默认控制器如下所示:
[Route("api/[controller]")]
[ApiController]
public class TodoController : ControllerBase
{
// GET: api/Todo
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
...
}
我想为此TodoController
创建一些路径名称,该名称将存储在配置Startup
对象中,如下所示:
services.AddMyApi(routeConfig =>
{
TodoRoute = "/myapi/todo", //instead of default api/todo
AdminRoute = "/myapi/admin"
});
我使用过这样的方法:
public static IServiceCollection AddMyApi(this IServiceCollection services, Action<RouteConfiguration> routeConfig)
{
services.AddSingleton<RouteConfiguration>();
services.Configure(routeConfig);
services.AddMvc()
.AddApplicationPart(typeof(TodoController).Assembly)
.AddControllersAsServices();
return services;
}
如何从上面的配置中设置这些路线?
我想创建具有动态路由的便携式api,我可以将其添加到另一个Asp.Net Core项目中。