如何在子路径上使用MapControllers统一配置API路由前缀?
统一给所有API控制器添加
api/前缀的两种方法 不用逐个修改控制器的[Route]属性,有两种简单的全局配置方式:
方法1:使用路由组(推荐,.NET 6+)
直接在注册控制器路由时,用MapGroup创建前缀为api的路由组,再把控制器映射到这个组里:
// 替换原来的 app.MapControllers(); app.MapGroup("api").MapControllers();
这样所有控制器的路由都会自动带上api/前缀,你的AwesomeController访问路径就变成https://mycompany.com/api/awesome,控制器代码完全不用改。
方法2:使用全局路由约定
如果需要更统一的全局配置,可以在添加控制器服务时设置RoutePrefix:
builder.Services.AddControllers(options => { // 给所有控制器统一添加api前缀 options.RoutePrefix = "api"; }); // 依然保留 app.MapControllers(); app.MapControllers();
这种方式会给所有带[ApiController]属性的控制器自动加上api/前缀,同样不需要修改控制器的Route属性。
两种方法都能满足你的需求,路由组的方式更灵活,后续还可以给不同组设置不同前缀或者中间件;全局约定则是一次性给所有控制器统一配置,按需选择就行。
内容的提问来源于stack exchange,提问作者rabejens
相关产品推荐
相关产品推荐

