回到目錄 路由首碼就是我們所說的api/values里的api,這裡的api可以用其它具體含義的字元表示,如Shop,Order,Game,它可以表示一個個模塊,這一般在單體架構里;也可以是一個個小服務,這一般在微服務架構里. 對於基於微服務的設計理念里,我們每個模塊都成了一個網站,一個服務,它們的 ...
路由首碼就是我們所說的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被註冊時,同時註冊進去!
感謝各位閱讀!