Как создать динамическую маршрутизацию в Asp.Net Core MVC
Я использовал 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.