Web api应该默认返回JSon

时间:2014-02-26 23:06:06

标签: xml json asp.net-web-api2

这就是我目前的

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时,它工作正常

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

但我想要的是默认的JSON?那可能吗?我也想要上面的选项

1 个答案:

答案 0 :(得分:2)

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

下面是chrome默认标头,请注意它要求XML,因此Web API默认会为chrome返回XML。

{连接:保持活力 接受:text / html, application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; Q = 0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en; Q = 0.8 主持人:localhost:63586 User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 33.0.1750.117 Safari / 537.36 }

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

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

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