2013-08-16 2 views
17

기본적으로 웹 API는 JSON 데이터를 반환하지만 API를 만들 때 어떤 이유로 JSON 대신 XML을 반환합니다. 당신은 기본적으로 JSON을 얻을 것이다 다음과 같이 당신이 당신의 WebApiConfig을 수정하면 내가 유달리 아무것도 수정하지 않은ASP.NET 웹 API가 JSON 대신 XML을 반환합니다.

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

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

은 그래서

+0

Nevermind, 실제로 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

웹 API는 다음에 오는 데이터 유형을 선택하라는 요청의 헤더를 찾습니다. 예를 들어 수락을 설정하면 application/json이 자동으로 반환 유형을 JSON으로 설정합니다.

게다가 content-type을 설정하면 다가오는 요청 데이터 유형에 대한 Web-API에 단서가 제공됩니다. 따라서 웹 API에 JSON 데이터를 게시하려면 Content-Type : application/json 헤더가 있어야합니다.

관련 문제