首先我们知道,web api 是可以返回任意类型的,然后在输出的过程中转为(默认的)xml。
但是xml是比较费流量的,而且大多前端都是用json对接,所以我们也只能随大流,把它输出改成json。
不废话了,直接上代码,反正就这么点。
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); var jsonFormatter = new JsonMediaTypeFormatter(); var settings = jsonFormatter.SerializerSettings; IsoDateTimeConverter timeConverter = new IsoDateTimeConverter(); //这里使用自定义日期格式 timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"; settings.Converters.Add(timeConverter); //settings.ContractResolver = new CamelCasePropertyNamesContractResolver();//默认对象首字母小写 config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter)); } } public class JsonContentNegotiator : IContentNegotiator { private readonly JsonMediaTypeFormatter _jsonFormatter; public JsonContentNegotiator(JsonMediaTypeFormatter formatter) { _jsonFormatter = formatter; } public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters) { //Content-Type: application/json var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json")); return result; } }
注意了,前端对接的时候get是可以不加
Content-Type: application/json
的,但是用post方式访问的话一定要加这个,否则报错。
这里我把json的格式也放在跟WebApiConfig同一个文件下了,各位看官随意哈哈。
大家看到那个时间了吧,反正自定义,随心改。