2013-08-16 20 views
17

Web APIはJSONデータを返しますが、何らかの理由でAPIを作成するとJSONではなくXMLが返されることが既定で読み取られます。ASP.NET Web APIがJSONの代わりにXMLを返す

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

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

私はあなたがデフォルトでJSONを得るでしょう、次のようにあなたのWebApiConfigを変更した場合ので、私は困惑

+0

私は実際に何らかの理由でJSONを返していたことを知っていましたが、ChromeがXMLにフォーマットしています>> – ChaoticLoki

+0

可能な複製:[link](http://stackoverflow.com/questions/9847564/how-do-i -get-asp-net-web-api-to-return-json-of-xml-using-chrome) –

答えて

42

よ普通の何も変更していません。

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); 
    } 
} 
10

Web Apiは、返されるデータタイプを選択するための今後のリクエストのヘッダーを探します。たとえば、Accept:application/jsonと設定すると、自動的に戻り値の型がJSONに設定されます。

これ以外に、コンテンツタイプを設定すると、今後のリクエストデータタイプについてWeb-APIに手がかりが与えられます。 JSONデータをWeb APIに投稿する場合は、Content-Type:application/jsonヘッダーが必要です。

関連する問題