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
響應内容: