【问题标题】:Global routing prefix in Core 3.1 APICore 3.1 API 中的全局路由前缀
【发布时间】:2020-09-03 14:50:17
【问题描述】:

我在每个控制器上都有属性[Route("api/v{version:apiVersion}/[controller]")],这是多余的。

有没有办法在某个地方全局设置api/v{version:apiVersion}/ 部分,这样我就可以指定控制器应该是什么?

我尝试过使用基本控制器、MapControllerRoute 和 UsePathBase。

【问题讨论】:

    标签: asp.net-core-3.1


    【解决方案1】:

    您应该能够创建一个实现 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 准确测试您的路线,但它适用于我的应用程序中更简单的路线。

    【讨论】:

      猜你喜欢
      • 2014-03-31
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 2013-11-09
      • 2015-03-08
      • 2013-01-26
      相关资源
      最近更新 更多