zoukankan      html  css  js  c++  java
  • LindDotNetCore~添加路由前缀

    回到目录

    路由前缀就是我们所说的api/values里的api,这里的api可以用其它具体含义的字符表示,如Shop,Order,Game,它可以表示一个个模块,这一般在单体架构里;也可以是一个个小服务,这一般在微服务架构里.

    对于基于微服务的设计理念里,我们每个模块都成了一个网站,一个服务,它们的路由应该具有一定的可读性,不能都是api/v1,api/v2了,我们最好可以统一天入口添加它,默认地,这种前缀是在控制器上添加特性来实现的,例如:

    [Produces("application/json")]
    [Route("api/v1/EF")]
    public class EFController : Controller

    而如果希望统一设置前缀,我们需要自己添加扩展方法,像IApplicationModelConvention集合里添加自己的路由前缀,一般地作法是在.net core startup类里添加扩展的注入,当然前提是你要设计扩展方法来实现对这个集合的insert操作.

        /// <summary>
        /// 路由扩展 
        /// </summary>
        public static class RoutePrefixExtensions
        {
            /// <summary>
            /// 添加自定义前缀
            /// </summary>
            /// <param name="opts"></param>
            /// <param name="routeAttribute"></param>
            public static void UseCentralRoutePrefix(this MvcOptions opts, IRouteTemplateProvider routeAttribute)
            {
                opts.Conventions.Insert(0, new RouteConvention(routeAttribute));
            }
        }

    这种在startup注册这个方法即可

     services.AddMvc(opt =>
     {
      opt.UseCentralRoutePrefix(new RouteAttribute("Api"));
     });

    事实上,根据我们的规则我们可以添加很多扩展 ,在AddMvc被注册时,同时注册进去!

    感谢各位阅读!

    回到目录

  • 相关阅读:
    insertSelective和insert的区别?
    @Valid和@BindingResult
    restful的put请求(坑),和HttpServletRequest做参数的作用
    ios网络编程读书笔记
    命令行杂记
    iOS杂记
    git项目收藏
    _Function_,_PRETTY_FUNCTION的区别
    iOS连接收藏
    转自别人的话
  • 原文地址:https://www.cnblogs.com/lori/p/8406027.html
Copyright © 2011-2022 走看看