LindDotNetCore~添加路由前缀

2018-02-02 19:51:31来源:cnblogs.com作者:张占岭人点击

分享

回到目录

路由前缀就是我们所说的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被注册时,同时注册进去!

感谢各位阅读!

回到目录

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台