Core 3.1 中的全局路由前缀 API
Global routing prefix in Core 3.1 API
我在每个控制器上都有属性 [Route("api/v{version:apiVersion}/[controller]")]
,这是多余的。
有没有办法在某个地方全局设置 api/v{version:apiVersion}/
部分,这样我就可以指定控制器应该是什么?
我试过使用基本控制器、MapControllerRoute 和 UsePathBase。
您应该能够创建一个实现 IRouteTemplateProvider 的属性
/// <summary>
/// Class to ensure that we use our default naming convension for controller routes
/// </summary>
public class DefaultRoutingAttribute : Attribute, IRouteTemplateProvider {
public string Template => "api/v{version:apiVersion}/[controller]";
/// <summary>
/// Order is 2 to allow explicitly overriding the default route
/// </summary>
public int? Order => 2;
public string Name { get; set; }
}
然后像
一样使用它
[ApiController]
[DefaultRouting]
public class YourController : ControllerBase {}
我没有用 apiversion 准确测试你的路线,但它在我的应用程序中与更简单的路线一起工作得很好。
我在每个控制器上都有属性 [Route("api/v{version:apiVersion}/[controller]")]
,这是多余的。
有没有办法在某个地方全局设置 api/v{version:apiVersion}/
部分,这样我就可以指定控制器应该是什么?
我试过使用基本控制器、MapControllerRoute 和 UsePathBase。
您应该能够创建一个实现 IRouteTemplateProvider 的属性
/// <summary>
/// Class to ensure that we use our default naming convension for controller routes
/// </summary>
public class DefaultRoutingAttribute : Attribute, IRouteTemplateProvider {
public string Template => "api/v{version:apiVersion}/[controller]";
/// <summary>
/// Order is 2 to allow explicitly overriding the default route
/// </summary>
public int? Order => 2;
public string Name { get; set; }
}
然后像
一样使用它[ApiController]
[DefaultRouting]
public class YourController : ControllerBase {}
我没有用 apiversion 准确测试你的路线,但它在我的应用程序中与更简单的路线一起工作得很好。