LindDotNetCore~添加路由前綴
路由前(qian)綴就是我們所說的(de)api/values里的(de)api,這(zhe)里的(de)api可以用其它具體(ti)含義的(de)字(zi)符表(biao)示,如(ru)Shop,Order,Game,它可以表(biao)示一(yi)個(ge)個(ge)模塊,這(zhe)一(yi)般在單體(ti)架(jia)構里;也可以是一(yi)個(ge)個(ge)小服(fu)務(wu),這(zhe)一(yi)般在微服(fu)務(wu)架(jia)構里.
對于基于微(wei)服(fu)務的設計理(li)念里,我(wo)們每個(ge)模塊都成了一(yi)個(ge)網站,一(yi)個(ge)服(fu)務,它們的路由應該具有一(yi)定的可(ke)讀性,不能(neng)都是api/v1,api/v2了,我(wo)們最好可(ke)以統一(yi)天入口添(tian)加它,默認地,這種前綴是在(zai)控(kong)制器上添(tian)加特(te)性來實現的,例(li)如:
[Produces("application/json")] [Route("api/v1/EF")] public class EFController : Controller
而如果(guo)希(xi)望統(tong)一(yi)設(she)置前(qian)綴,我(wo)們需要自己添加(jia)擴展(zhan)方(fang)法(fa),像IApplicationModelConvention集(ji)合(he)里(li)添加(jia)自己的路由(you)前(qian)綴,一(yi)般地作(zuo)法(fa)是在.net core startup類(lei)里(li)添加(jia)擴展(zhan)的注入,當然前(qian)提是你要設(she)計擴展(zhan)方(fang)法(fa)來實現對這(zhe)個集(ji)合(he)的insert操作(zuo).
/// <summary> /// 路由擴展 /// </summary> public static class RoutePrefixExtensions { /// <summary> /// 添加(jia)自定(ding)義前綴 /// </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)); } }
這(zhe)種(zhong)在(zai)startup注冊這(zhe)個方法即(ji)可
services.AddMvc(opt => { opt.UseCentralRoutePrefix(new RouteAttribute("Api")); });
事實上,根據我們的(de)規(gui)則我們可以(yi)添(tian)加很多擴(kuo)展 ,在AddMvc被注冊(ce)時(shi),同時(shi)注冊(ce)進去(qu)!
感謝各位閱讀!