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

0 ответов

Другие вопросы по тегам