我有一组由 WCF Web Api 托管的服务,我通过 javascript 以 JSON 与它们进行通信。在大多数情况下,我可以修改 header 的接受位以要求 JSON 响应,但在某些情况下我无法做到这一点。这是由于我使用的 javascript 框架(Ext JS)。对于某些事情,它只允许我指定 URL 而不是代理默认值,例如标题。
然而,这不是 Ext JS 问题。 Web Api 似乎默认返回 XML,我想知道是否可以更改此默认设置,以便它可以返回 JSON。提前致谢!
最佳答案
一些实验似乎表明配置的格式化程序的顺序很重要(这非常直观)。
默认情况下,当您创建 HttpConfiguration
的实例时,其 Formatters
集合包含这些格式化程序:
XML 是默认格式的原因是因为它是第一个格式化程序。要使 JSON 成为默认值,您可以将集合重新排序为如下所示:
给定一个实例
config
HttpConfiguration,这是重新排序集合的一种方法:var jsonIndex = Math.Max(
config.Formatters.IndexOf(config.Formatters.JsonFormatter),
config.Formatters.IndexOf(config.Formatters.JsonValueFormatter));
var xmlIndex = config.Formatters.IndexOf(
config.Formatters.XmlFormatter);
config.Formatters.Insert(jsonIndex + 1, config.Formatters.XmlFormatter);
config.Formatters.RemoveAt(xmlIndex);
我不知道这是否受支持,但它似乎适用于 WebApi 0.6.0。
关于ajax - 在 WCF Web Api 中设置默认响应类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6779254/