8

我了解 WEB API 使用内容协商来接受 - Content-Type 以返回 json 或 xml。这还不够好,我需要能够务实地决定是要返回 json 还是 xml。

互联网上充斥着过时的 using 示例,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 回答