web api 默认的已 xml 格式返回数据
现在开发一般都是以 json 格式为主
下面配置让 webapi 默认返回 json ,在需要返回 xml 时只需要加一个查询参数 datatype=xml 即可返回 xml 格式数据
配置如下:
1.新建 一个 mvc webapi 项目 (framework4.0)
2.找到默认的 WebApiConfig.cs 文件
3.修改 WebApiConfig.cs 文件
<span style="font-family: Arial, Helvetica, sans-serif;">using System;</span>
using System.Collections.Generic; using System.Linq; using System.Net.Http.Formatting; using System.Web.Http; namespace MvcWebApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { ....... GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //默认返回 json GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add( new QueryStringMapping("datatype", "json", "application/json")); //返回格式选择 datatype 可以替换为任何参数 GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add( new QueryStringMapping("datatype", "xml", "application/xml")); } } }
4.修改默认路由规则 WebApiConfig.cs 文件中
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http.Formatting; using System.Web.Http; namespace MvcWebApi { public static class WebApiConfig { public static void Register(HttpConfiguration config) { //新加的规则 config.Routes.MapHttpRoute( name: "DefaultApi2", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); //新加的规则 config.Routes.MapHttpRoute( name: "DefaultApi1", routeTemplate: "api/{controller}/{action}", defaults: new { id = RouteParameter.Optional } ); //默认路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); 。。。。。 } } }
5.添加测试 action
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace MvcWebApi.Controllers { public class ValuesController : ApiController { /// <summary> /// web api 默认将以 get 开头的只支持 get 请求,post 开头的支持支 post 请求 /// </summary> /// <returns></returns> [System.Web.Http.HttpGet] [System.Web.Http.HttpPost] public MyClass GetMyClass() { return new MyClass() { id=1111, name="张三", time=DateTime.Now }; } } public class MyClass { public int id { set; get; } public string name { set; get; } public DateTime time { set; get; } } }
6.测试
请求地址:http://localhost:61667/api/values/getmyclass
响应内容:
{"id":1111,"name":"张三","time":"2015-09-29T16:43:07.4731034+08:00"}
请求地址:http://localhost:61667/api/values/getmyclass?datatype=xml
响应内容:
<MyClass><id>1111</id><name>张三</name><time>2015-09-29T16:43:45.3663004+08:00</time></MyClass>
时间: 2024-11-18 02:41:25