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格式化程序类似)。