Возможно ли вернуть json по умолчанию из ASP.NET Web API вместо XML?
Возврат json по умолчанию с использованием ASP.NET Web API
Ответ 1
Это то, что сделано по умолчанию. JsonMediaTypeFormatter
зарегистрирован как первый MediaTypeFormatter
, и если клиент не запрашивает ответ в определенном формате, конвейер ASP.NET Web API дает вам ответ в формате application/json
.
Если вы хотите поддерживать только application/json
, удалите все остальные форматы и оставьте JsonMediaTypeFormatter
:
public static void Configure(HttpConfiguration config) {
var jqueryFormatter = config.Formatters.FirstOrDefault(x => x.GetType() == typeof(JQueryMvcFormUrlEncodedFormatter));
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter);
config.Formatters.Remove(jqueryFormatter);
}
Ответ 2
Решение @tugberk на самом деле не выполняет задачу изменения стандартного форматирования. Это просто делает JSON единственным вариантом. Если вы хотите сделать JSON по умолчанию и по-прежнему поддерживать все другие типы, вы можете сделать следующее:
public static void Configure(HttpConfiguration config) {
// move the JSON formatter to the front of the line
var jsonFormatter = config.Formatters.JsonFormatter;
config.Formatters.Remove(jsonFormatter);
config.Formatters.Insert(0, jsonFormatter);
}
Примечание. JSON является стандартным форматом с Web API 2.0.