我有一个Web API项目,它返回一些产品数据 . 它根据请求的Accept标头(JSON / XML)正确协商返回类型 . 问题是,如果没有指定Accept标头,则返回XML,但我希望它默认返回JSON
http://website.com/MyPage?type=json // returns json
http://website.com/MyPage?type=xml // returns xml
http://website.com/MyPage // returns xml by default
这是我目前的代码如下:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(
new QueryStringMapping("type", "xml", new MediaTypeHeaderValue("application/xml")));
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
new QueryStringMapping("type", "json", new MediaTypeHeaderValue("application/json")));
6 回答
在_2685076中添加:
我认为Web API只使用它可以在Formatters集合中找到的第一个格式化程序 . 您可以使用类似的方式更改排序
但似乎默认情况下JSON格式化程序应该是第一个,因此您可能需要检查是否已在某处修改此集合 .
我认为你应该改变如下 . Global.asax:
或者只是删除XmlFormatter
上述答案都不适合我 . 问题是我从
GlobalConfiguration
获取格式化程序而不是config
用new HttpConfiguration()
创建的对象 . 这是适用于我的代码: