c# - 如何让 WebAPI 默认显示 JSON 结果?

标签 c# asp.net-web-api

我想让我的网络 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"));
}

最佳答案

我认为当所有其他条件都相同时,默认值是列表中的第一个。

你试过吗:

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/

关于c# - 如何让 WebAPI 默认显示 JSON 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26385474/

相关文章:

c# - 必需的数字参数在不包含在 JSON 中时默认为 0

c# - Web API Controller 中的多个 HttpPost 方法

entity-framework - 实现排序属性的最佳实践

c# - 模型绑定(bind)在 aspnet 核心 web api 中不起作用

c# - 在 .NET 中,为什么 ObjectCache 比 MemoryCache 更受欢迎?

c# - html敏捷得不到结果

c# - Asp.Net Mvc - 不要清除表单中的错误输入

c# - 正则表达式,允许其中包含一个点或逗号的数字

c# - 为什么我的 HubConnectionBuilder 不能在 HubConnectionBuilder().Build 上工作?

jsonp - 如何使用 Web API 处理 JSON?