web-dev-qa-db-ja.com

JSONとしてのHttpResponseMessageのコンテンツ

ASP.NET MVC WEB APIがあります。いくつかの理由により(承認がないためリダイレクトされます..)、単純なオブジェクトを使用してそれをコントローラーメソッドで返すことはできません。したがって、リダイレクトを許可するHttpResponseMessageクラスが必要です。

現在、私はこれをやっています:

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
var formatter = new JsonMediaTypeFormatter();
response.Content = new ObjectContent<Response>(response, formatter, "application/json");

.. JSONとしてシリアル化されたオブジェクトをHttpResponseMessageのコンテンツに取得します。どういうわけか、これを行うための別の、より良い方法があると感じています。それについてのアイデアはありますか?

22
gosua

できるよ:

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
Request.CreateResponse<Response>(HttpStatusCode.OK, response);

デフォルトでは、Web APIはHTTPリクエストヘッダーで指定されたContent-Typeに基づいて応答の形式を設定しますが、タイプフォーマッターを指定できるCreateResponseメソッドにはいくつかのオーバーロードがあります。

また、Web API XMLシリアライザーを削除して、必要に応じてすべての応答を強制的にJSONにすることもできます-頭の中で、HttpConfigurationのFormatters.Removeメソッドだと思います。

28
Matt Randle