デフォルトでは、Web APIはJSONデータを返しますが、何らかの理由でAPIを作成すると、JSONではなくXMLを返します。
public class CurrencyController : ApiController
{
private CompanyDatabaseContext db = new CompanyDatabaseContext();
// GET api/Currency
public IEnumerable<Currency> GetCurrencies()
{
return db.Currencies.AsEnumerable();
}
}
私は普通の何かを変更していないので困惑しています
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);
}
}
Web Apiは、返されるデータ型を選択するために、今後のリクエストのヘッダーを探します。たとえば、Accept:application/jsonを設定すると、戻り値の型がJSONに自動的に設定されます。
それに加えて、content-typeを設定すると、今後のリクエストデータタイプに関するWeb-APIの手がかりが得られます。したがって、JSONデータをWeb APIに投稿する場合は、ヘッダーにContent-Type:application/jsonが必要です。