没有属性的 ASP.Net Core API 路由

Ran*_*dom 6 c# routing asp.net-core

我想Startup.Configure使用MVC默认情况下用于操作的相同方法在方法内设置 API 路由,没有Route属性。我尝试以下操作:

// API
routes.MapRoute(
    name: "api",
    template: "api/{controller}/{id?}");
// default
routes.MapSpaFallbackRoute(
    name: "spa-fallback",
    defaults: new { controller = "Home", action = "Index" });
Run Code Online (Sandbox Code Playgroud)

控制器看起来像这样

public class CategoriesController : Controller
{
    [HttpGet]
    public async Task<Category[]> Get(int currentPageNo = 1, int pageSize = 20)
    {
        // return data here
    }
}
Run Code Online (Sandbox Code Playgroud)

但它与这个 url: 不匹配/api/categories。改为应用下一条规则。如果我使用这样的属性路由

[Route("api/[controller]")]
public class CategoriesController : Controller
{
    [HttpGet]
    public async Task<Category[]> Get(int currentPageNo = 1, int pageSize = 20)
    {
        // return data here
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常。但我想避免在每个 API 控制器上放置相同的路由属性。在这种情况下配置路由的正确方法是什么?