using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Web.Http; using Newtonsoft.Json.Serialization; using MyCode.Project.WebApi.Providers; using System.Web.Http.Dispatcher; using Newtonsoft.Json; using System.Net.Http.Formatting; using System.Web.Http.ExceptionHandling; using MyCode.Project.Domain.Config; using MyCode.Project.WebApi.App_Filter; namespace MyCode.Project.WebApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Filters.Add(new ExceptionHandleAttribute()); config.Filters.Add(new ResultHandleAttribute()); config.Filters.Add(new AuthorizeFilter()); // Web API 路由 config.MapHttpAttributeRoutes(); config.Services.Replace(typeof(IHttpControllerSelector), new NamespaceHttpControllerSelector(config)); config.Routes.AddAreaRoute("Admin", "MyCode.Project.WebApi.Areas.Admin.Controllers"); config.Routes.AddAreaRoute("Wechat", "MyCode.Project.WebApi.Areas.Wechat.Controllers"); config.Routes.MapHttpRoute( name: "CommonApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional, namespaces = new string[] { "MyCode.Project.WebApi.Controllers" } } ); Formater(config); } #region AddAreaRoute(添加路由) /// /// 添加路由 /// /// 路由集合 /// 路由名 /// 命名空间 private static void AddAreaRoute(this HttpRouteCollection routes, string name, string namespaces) { routes.MapHttpRoute( name: name + "Api", routeTemplate: $"api{MyCode.Project.Domain.Config.SystemConfig.ApiVersion}/" + name + "/{controller}/{action}/{id}", defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional, namespaces = new string[] { namespaces } }); } #endregion #region Formater(响应参数格式化) /// /// 响应参数格式化 /// /// Http配置 private static void Formater(HttpConfiguration config) { var formatters = config.Formatters; //为了支持xml和json两种 //formatters.XmlFormatter.SupportedMediaTypes.Clear(); var xmlFormatter = formatters.XmlFormatter; xmlFormatter.UseXmlSerializer = true; xmlFormatter.Indent = true; var jsonFormatter = formatters.JsonFormatter; var settings = jsonFormatter.SerializerSettings; settings.Formatting = Newtonsoft.Json.Formatting.Indented; settings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//全局处理 返回时间格式 settings.DateTimeZoneHandling = DateTimeZoneHandling.Local;//全局处理 接收时间并做本地化处理 settings.ContractResolver = new CamelCasePropertyNamesContractResolver();//首字母小写驼峰式命名 } #endregion } }