如何让ASP.NET Web API使用Chrome返回JSON而不是XML?
使用更新的ASP.NET Web API ,在Chrome中,我看到XML - 我如何将其更改为请求JSON,以便我可以在浏览器中查看它? 我相信这只是请求标题的一部分,我是否正确?
我只在我的MVC Web API项目的App_Start / WebApiConfig.cs
类中添加以下内容。
config.Formatters.JsonFormatter.SupportedMediaTypes
.Add(new MediaTypeHeaderValue("text/html") );
这可以确保得到大多数查询JSON,但你可以得到xml
当你发送text/xml
。
如果您需要将应答Content-Type
作为application/json
请在下面检查Todd的答案。
NameSpace
使用System.Net.Http.Headers
;
如果您在WebApiConfig
执行此操作,您将默认获取JSON,但如果您将text/xml
作为请求传递给Accept
标头,它仍然允许您返回XML
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}
如果您没有使用MVC项目类型,因此没有开始使用此类,请参阅此答案以了解如何合并它的详细信息。
我最喜欢Felipe Leusin的方法 - 确保浏览器获得JSON,而不会影响实际需要XML的客户端的内容协商。 对我来说唯一缺失的部分是响应头仍包含content-type:text / html。 为什么这是一个问题? 因为我使用JSON Formatter Chrome扩展,它检查内容类型,而我没有得到我习惯的漂亮格式。 我用一个简单的自定义格式化程序来解决这个问题,它接受text / html请求并返回application / json响应:
public class BrowserJsonFormatter : JsonMediaTypeFormatter
{
public BrowserJsonFormatter() {
this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
this.SerializerSettings.Formatting = Formatting.Indented;
}
public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType) {
base.SetDefaultContentHeaders(type, headers, mediaType);
headers.ContentType = new MediaTypeHeaderValue("application/json");
}
}
注册如下:
config.Formatters.Add(new BrowserJsonFormatter());
链接地址: http://www.djcxy.com/p/451.html
上一篇: How do I get ASP.NET Web API to return JSON instead of XML using Chrome?
下一篇: Comments in Markdown