【问题标题】:How do I tell WebAPI to show JSON results by default?我如何告诉 WebAPI 默认显示 JSON 结果?
【发布时间】:2014-12-18 14:44:29
【问题描述】:

我想让我的 Web API 默认返回 JSON。

但是,我仍然需要能够支持 XML 格式。

当我执行以下操作时,它会返回 JSON:

public static void Register(HttpConfiguration config)
{
    config.Formatters.Clear();
    config.Formatters.Add(new JsonMediaTypeFormatter());
}

当我执行以下操作时,它返回 XML(如果我有 json=true 参数,则返回 JSON)

public static void Register(HttpConfiguration config)
{
    config.Formatters.Clear();
    config.Formatters.Add(new XmlMediaTypeFormatter());
    config.Formatters.Add(new JsonMediaTypeFormatter());
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json"));

}

当我这样做时,它总是返回 XML。参数与否..

我想要不带参数的 JSON,指定参数时的 XML。

public static void Register(HttpConfiguration config)
{
    config.Formatters.Clear();
    config.Formatters.Add(new JsonMediaTypeFormatter());
    config.Formatters.Add(new XmlMediaTypeFormatter());
    GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("xml", "true", "application/xml"));
}

【问题讨论】:

标签: c# asp.net-web-api


【解决方案1】:

我认为所有其他条件相同时的默认设置是列表中的第一个。

你试过了吗:

public static void Register(HttpConfiguration config)
{
    config.Formatters.Clear();
    config.Formatters.Add(new JsonMediaTypeFormatter());
    config.Formatters.Add(new XmlMediaTypeFormatter());   
}

或者,您可以专门定义内容协商策略。有关它在 Web API 中如何工作的详细信息,请参见:http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation

这里有一个示例实现:http://www.strathweb.com/2013/06/supporting-only-json-in-asp-net-web-api-the-right-way/

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 2011-10-15
    • 2014-07-25
    • 2017-12-19
    • 2012-06-13
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多