NetCore WebAPI 如何设置一个统一的路由前缀

创建一个类,遍历所有的controller,添加一个路由前缀

public class RouteConvention : IApplicationModelConvention{private readonly AttributeRouteModel _routePrefix;/// <summary>/// 构造方法/// </summary>/// <param name="routeTemplateProvider"></param>public RouteConvention(IRouteTemplateProvider routeTemplateProvider){_routePrefix = new AttributeRouteModel(routeTemplateProvider);}/// <summary>/// 实现接口的Apply方法/// </summary>/// <param name="application"></param>public void Apply(ApplicationModel application){//遍历所有的 Controllerforeach (var controller in application.Controllers){// 已经标记了 RouteAttribute 的 Controllervar matchedSelectors = controller.Selectors.Where(x => x.AttributeRouteModel != null).ToList();if (matchedSelectors.Any()){foreach (var selectorModel in matchedSelectors){// 在当前路由上 再 添加一个路由前缀selectorModel.AttributeRouteModel = AttributeRouteModel.CombineAttributeRouteModel(_routePrefix, selectorModel.AttributeRouteModel);}}// 没有标记 RouteAttribute 的 Controllervar unmatchedSelectors = controller.Selectors.Where(x => x.AttributeRouteModel == null).ToList();if (unmatchedSelectors.Any()){foreach (var selectorModel in unmatchedSelectors){// 添加一个路由前缀selectorModel.AttributeRouteModel = _routePrefix;                       }}}}}

使用自定义路由扩展方法

/// <summary>/// 自定义路由扩展类/// </summary>public static class MvcOptionsExtensions{/// <summary>/// 使用自定义路由扩展方法/// </summary>/// <param name="opts"></param>/// <param name="routeAttribute"></param>public static void UseCentralRoutePrefix(this MvcOptions opts, IRouteTemplateProvider routeAttribute){// 添加我们自定义 实现IApplicationModelConvention的RouteConventionopts.Conventions.Insert(0, new RouteConvention(routeAttribute));}}

编辑startup.cs

public void ConfigureServices(IServiceCollection services)
{services.AddControllers(opt =>{// 统一设置路由前缀opt.UseCentralRoutePrefix(new RouteAttribute("testapi"));});
}

.NET Core统一设置路由前缀相关推荐

  1. NETCore WebAPI 如何设置一个统一的路由前缀

    netcore 默认的地址 修改后的地址 1. 创建一个类名字随意,主要是遍历所有的controller,添加同一名称 2.创建一个类,主要是传我定义的那个名称 3.编辑startup.cs 这些就是 ...

  2. ASP.NET Core MVC 配置全局路由前缀

    前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀.严格说其实不算是新特性,不过是Core MVC特有的. 应用背景 不知道大家在做 Web Ap ...

  3. Java:SpringBoot给Controller添加统一路由前缀

    网上的文章五花八门,不写SpringBoot的版本号,导致代码拿来主义不好使了. 本文采用的版本 SpringBoot 2.7.7 Java 1.8 目录 1.默认访问路径 2.整个项目增加路由前缀 ...

  4. React-router 5.0项目中统一动态设置路由页面Title

    React项目中想在不同的路由页面都有自己的独立title,并且统一设置. 可以在每个路由页面的 componentDidMount() 钩子回调中 document.title = 'title' ...

  5. laravel的路由分组,中间件,命名空间,子域名,路由前缀(四)

    laravel的路由分组,就是把一些具有相同特征的路由进行分组,比如一些路由需要进行验证,一些路由有共同的前缀,一些路由有相同的控制器命名空间等. 这样把路由组合在一起,方便管理,维护性更好. Rou ...

  6. Django讲课笔记07:设置路由分发规则

    文章目录 零.本讲学习目标 一.课程导入 (一)复习 (二)路由 二.新课讲授 (一)设置路由分发规则 1.创建应用的路由文件(子路由) - urls.py (1)创建index应用的路由文件 (2) ...

  7. 若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起

    前言 因为是在vue源码的基础上进行修改,所以,就没有复制代码在文章上,采取的是截图对比源码和我修改的代码片段.要麻烦你们自己手敲了. 先来看看效果: 场景:在费用配置列表中,点击每一项的配置,都会在 ...

  8. flutter theme:themeData() 统一设置主题颜色不起作用解决方法

    随着flutter组件的版本更新每一个组件的使用方法和作用都有了有些变化.今天我遇到的一个问题让我很头疼,网上找了很多没找到答案,试了好多方法最后找到了解决方法. 问题:flutter Materia ...

  9. IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决

    IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 参考文章: (1)IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 (2)https://www.cnblogs. ...

最新文章

  1. 常见的java异常_浅谈十个常见的Java异常出现原因
  2. 通过xrdp远程访问ubuntu出现输入d最小化问题的处理
  3. 树莓派4B设置静态IP
  4. 【工业控制】How to Optimize a Waveform
  5. hibernate.cfg.xml hibernate 配置文件模板
  6. java string rt_如何使jvm加载我的java.lang.String而不是rt.jar中的那个
  7. Python编写俄罗斯方块小游戏
  8. web中间件_HTTP中间件机制实现与原理 - 从零开始写GO-API框架
  9. Spring限定注入逻辑分组@Qualifier
  10. 我的世界学园都市java_我的世界学园都市地图
  11. 9008刷机工具_黔隆科技刷机教程OPPOR11T忘记密码免刷机保资料解屏幕锁教程
  12. NAS配置Time Machine,在D-Link DNS-320上的配置笔记
  13. MongoDB--Linux下搭建的副本集集群(踩过的坑,血和泪的教训)
  14. Windows开启telnet功能
  15. vue Tesseract的 ocr 文字识别
  16. 分析器错误 在分析向此请求提供服务所需资源时出错 请检查下列特定分析错误详细信息并适当地修改源文件未能加载类型XXXX
  17. 你“剁手”的时候,支付宝在干嘛?
  18. 在WPF中加载gif动态图片
  19. echarts常用配置项整合之xAxis,yAxis
  20. 训练集、验证集、测试集的作用和划分比例?

热门文章

  1. 上海/深圳/香港内推 | 商汤科技EIG研究中心招聘AI算法研究员/实习生
  2. 驾培行业应对新形势“自学直考”新格局冲击剖析
  3. 【小程序专栏】总结uniapp开发小程序的开发规范
  4. 算法、图灵机、哥德尔定理与知识的不确定性
  5. 汉语言专家级C1,汉语言文学专业审核(文科生均可参考)
  6. 企业上云是什么?有什么优点
  7. React Firebase 计账软件 Serverless 项目实战视频教程
  8. 文档扫描OCR识别-2
  9. 计算机密码是空的怎么重置,电脑忘记开机登录密码怎么办? Windows 密码重置 - 合一学院...
  10. 华为Mate40系列国行参数价格曝光