8

WEB API が Accept - Content-Type のコンテンツ ネゴシエーションを使用して json または xml を返すことを理解しています。これでは十分ではなく、json と xml のどちらを返すかを実用的に決定できるようにする必要があります。

HttpResponseMessage<T>インターネットには、MVC 4 には存在しない、廃止された の使用例があふれています。

    tokenResponse response = new tokenResponse();
response.something = "gfhgfh";

    if(json)
    {
        return Request.CreateResponse(HttpStatusCode.OK, response, "application/json");
    }
    else
    {
         return Request.CreateResponse(HttpStatusCode.OK, response, "application/xml");
    }

上記のコードが機能するように変更するにはどうすればよいですか?

4

1 に答える 1

23

このようにしてみてください:

public HttpResponseMessage Get()
{
    tokenResponse response = new tokenResponse();
    response.something = "gfhgfh";

    if(json)
    {
        return Request.CreateResponse(HttpStatusCode.OK, response, Configuration.Formatters.JsonFormatter);
    }
    else
    {
         return Request.CreateResponse(HttpStatusCode.OK, response, Configuration.Formatters.XmlFormatter);
    }    
}

さらに良いことに、このような配管インフラストラクチャ コードでコントローラーが乱雑になるのを避けるために、カスタム メディア フォーマッターを作成し、その中でこのテストを実行することもできます。

于 2012-10-03T09:13:53.997 に答える