如何在Asp.Net Core MVC中创建动态路由

时间:2018-06-07 14:55:27

标签: asp.net asp.net-core asp.net-core-mvc asp.net-core-routing

我已将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 个答案:

没有答案