2012-12-01 3 views
13

XML 대신 ASP.NET 웹 API에서 기본적으로 json을 반환 할 수 있습니까?ASP.NET 웹 API를 사용하여 기본값으로 json을 반환

+1

이 종류는 웹 api 불가 지론을 ​​지키기의 본을 끊는다. ajax 요청의 헤더에'Accept : application/json'을 보내면 Json에서 WebAPI가 응답 할 것입니다. 아약스 요청을 볼 수 있을까요? – gideon

+0

감사합니다. 그게 다 필요한 것. 방금 웹 API를 사용하여 pluralsight에서 비디오 자습서를 보았고, 녀석은 api url 라우트에 넣었고 브라우저에서 곧바로 json으로 응답했습니다. 따라서 아약스 요청이 없었습니다. 웹 사이트 /api/control 만 입력하십시오. –

+0

수락 헤더가 필요 없습니다. GET 요청에 Accept 헤더가 없으면 WebAPI에서 JSON을 다시 가져와야합니다. –

답변

18

기본적으로 수행되는 작업입니다. JsonMediaTypeFormatter이 첫 번째 MediaTypeFormatter으로 등록되고 클라이언트가 특정 형식의 응답을 요청하지 않으면 ASP.NET 웹 API 파이프 라인은 application/json 형식의 응답을 제공합니다.

당신이 원하는 것은 단지 지원 application/json에있는 경우, 다른 모든 포매터를 제거하고 오직 JsonMediaTypeFormatter를 떠나 : tugberk의 솔루션은 정말 기본 포맷을 변경하는 목표를 달성하지 않습니다

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); 
} 
+0

그게 나를 위해 작동합니다. 덕분에 –

8

@. 단순히 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 웹 API 2.0과 같은 기본 포맷이다.

+0

나를 위해 작동합니다. 훨씬 낫다. – Phil

관련 문제