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>