28

我读到默认情况下,Web API 将返回 JSON 数据,但由于某种原因,在创建 API 时,它返回 XML 而不是 JSON。

public class CurrencyController : ApiController
{
    private CompanyDatabaseContext db = new CompanyDatabaseContext();

    // GET api/Currency
    public IEnumerable<Currency> GetCurrencies()
    {
        return db.Currencies.AsEnumerable();
    }
}

我没有修改任何不寻常的东西,所以我很难过

4

2 回答 2

62

如果您按如下方式修改您的WebApiConfig ,您将默认获得 JSON。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
    }
}
于 2013-08-16T07:40:23.380 回答
16

Web Api 查找即将到来的请求的标头以选择返回的数据类型。例如,如果您设置Accept:application/json它会自动将返回类型设置为 JSON。

除此之外,设置 content-type 为 Web-API 提供了有关即将到来的请求数据类型的线索。因此,如果您想将 JSON 数据发布到 Web API,您应该在标头中包含Content-Type:application/json

于 2013-08-17T06:08:18.953 回答