您的位置:首页 > Web前端 > JavaScript

修改 mvc webapi 默认返回 json 格式

2017-08-08 16:35 381 查看
web api 默认的已 xml 格式返回数据

现在开发一般都是以 json 格式为主

下面配置让 webapi 默认返回 json ,在需要返回 xml 时只需要加一个查询参数 datatype=xml 即可返回 xml 格式数据

配置如下:

1.新建 一个 mvc webapi 项目 (framework4.0)

2.找到默认的 WebApiConfig.cs 文件

3.修改 WebApiConfig.cs 文件

[csharp] view plain copy

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 文件中

[csharp] view plain copy

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

[csharp] view plain copy

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>

转载来源:http://blog.csdn.net/xxj_jing/article/details/48808099
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: