如何将默认的Web API 2更改为JSON格式化程序?

我有一个返回一些产品数据的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")));

将其添加到您的App_Start/WebApiConfig.cs

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

我认为Web API只是使用它可以在Formatters集合中找到的第一个格式化程序。 你可以用类似的东西改变顺序

GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new JsonMediaTypeFormatter());
GlobalConfiguration.Configuration.Formatters.Add(new XmlMediaTypeFormatter());

但是,似乎JSON格式化程序应该是默认情况下的第一个,所以你可能想要检查你是否已经在某处修改了这个集合。


我认为你应该改变如下。

    /*Response as default json format
     * example (http://localhost:9090/WebApp/api/user/)
     */
    GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

    /*Response as json format depend on request type
     * http://localhost:9090/WebApp/api/user/?type=json
     */
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
    new QueryStringMapping("type", "json", new MediaTypeHeaderValue("application/json")));

    /*Response as xml format depend on request type
     * http://localhost:9090/WebApp/api/user/?type=xml
     */
    GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(
    new QueryStringMapping("type", "xml", new MediaTypeHeaderValue("application/xml")));
链接地址: http://www.djcxy.com/p/20551.html

上一篇: How to change default Web API 2 to JSON formatter?

下一篇: How to change default ASP.NET MVC Web API media formatter?