ASP.NET web api возвращает XML вместо JSON
Я прочитал, что по умолчанию Web API возвращает JSON Data, но по какой-то причине при создании API он возвращает XML вместо JSON.
public class CurrencyController : ApiController
{
private CompanyDatabaseContext db = new CompanyDatabaseContext();
// GET api/Currency
public IEnumerable<Currency> GetCurrencies()
{
return db.Currencies.AsEnumerable();
}
}
Я не модифицировал ничего необычного, поэтому я в тупике
Ответы
Ответ 1
если вы измените свой 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);
}
}
Ответ 2
Web Api ищет заголовки предстоящего запроса для выбора возвращаемого типа данных. Например, если вы установите Принять: приложение /json , он автоматически установит возвращаемый тип в JSON.
Кроме того, настройка типа контента дает ключ к использованию Web-API для типа данных предстоящего запроса. Поэтому, если вы хотите публиковать данные JSON для веб-API, вы должны иметь Content-Type: application/json в заголовке.