关于xml:Web api应该默认返回JSon

Web api should return JSon by default

本问题已经有最佳答案,请猛点这里访问。

这就是我目前的情况

1
2
3
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("type","json", new MediaTypeHeaderValue("application/json")));            

GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("type","xml", new MediaTypeHeaderValue("application/xml")));

当我用这样的查询调用API时,它工作得很好

1
2
for xml : http://localhost:49533/api/?type=xml
for json: http://localhost:49533/api/?type=json

但我想要的是默认的JSON?有可能吗?我也想要以上的选择


内容协商会查看请求中的一些内容,包括接受头(以及用于推断返回结果的ContentType头)。如果您的请求在接受头中有XML,那么它将转到XML。

下面是chrome默认头文件,请注意,它请求的是XML,因此web api将默认返回chrome的XML。

连接:保持活动状态接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8接受编码:gzip、deflate、sdch接受语言:en-us,en;q=0.8主机:本地主机:63586用户代理:mozilla/5.0(windows nt 6.1;wow64)applewebkit/537.36(khtml,类似gecko)chrome/33.0.1750.117 safari/537.36}

您可以在应用程序中选择忽略接受头,方法是从格式化程序中删除它们:

1
config.Formatters.JsonFormatter.MediaTypeMappings.Clear();

然后添加查询映射(当然,与XML格式化程序类似)。