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>
轉:https://blog.csdn.net/xxj_jing/article/details/48808099
浙公網安備 33010602011771號