2012-12-01 15 views
13

XMLの代わりにASP.NET Web APIからデフォルトでjsonを返すことは可能ですか?デフォルトでASP.NET Web APIを使用してjsonを返す

+1

この種のものは、Web APIを不可知論にするパターンを破ります。 ajaxリクエストのヘッダーに 'Accept:application/json'を送ると、WebAPIはJsonで応答します。あなたのajaxリクエストを見ることはできますか? – gideon

+0

ありがとうございます。それは私が必要としていたものです。私はちょうどWebアプリケーションを使用して複数のビデオチュートリアルを見たとapiのURLのルートに入れて、それはブラウザでストレートjs​​onと応答した。そこで、Ajaxリクエストはありませんでした。それは唯一のwebsite.com/api/controlでした –

+0

あなたはAcceptヘッダーは必要ありません。 GETリクエストにAcceptヘッダーがない場合は、WebAPIからJSONを取得する必要があります。 –

答えて

18

これはデフォルトで行われます。 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); 
} 
+0

それは私のために働く。ありがとう –

8

tugberkのソリューション@は本当にデフォルトのフォーマッターを変更するという目標を達成しません。単に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デフォルトにしたいと、まだ他の種類のすべてをサポートする場合は、次の操作を行うことができますJSONは、Web API 2.0のように、デフォルトのフォーマッタです。

+0

私のために働く。ずっといい。 – Phil

関連する問題