猿问

如何让ASP.NETWebAPI使用Chrome返回JSON而不是XML?

如何让ASP.NETWebAPI使用Chrome返回JSON而不是XML?

使用更新的ASP.NETWebAPI,在我看到xml-我如何将它更改为请求?杰森这样我就可以在浏览器里查看了?我相信这只是请求头的一部分,我是对的吗?



肥皂起泡泡
浏览 1422回答 3
3回答

长风秋雁

我只是在App_Start / WebApiConfig.cs类在我的MVC WebAPI项目中。config.Formatters.JsonFormatter.SupportedMediaTypes     .Add(new MediaTypeHeaderValue("text/html") );这可以确保在大多数查询中得到json,但您可以xml当你发送text/xml.如果你需要得到回应Content-Type如application/json请查查托德的回答如下.NameSpace正在使用System.Net.Http.Headers;

Helenr

如果你在WebApiConfig默认情况下,您将获得JSON,但如果您通过text/xml作为请求Accept标头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项目类型,因此在开始时没有这个类,见这个答案有关如何合并它的详细信息。

喵喔喔

我喜欢费利佩·利辛方法最好-确保浏览器获得JSON,而不影响来自实际需要XML的客户端的内容协商。对我来说,唯一缺少的部分是响应头仍然包含内容类型:text/html。为什么这是个问题?因为我用JSON格式化程序Chrome扩展,它检查内容类型,而且我不知道我习惯的格式。我用一个简单的自定义格式化程序修复了这个问题,它接受文本/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());
随时随地看视频慕课网APP
我要回答