根据HTTP请求返回XML或JSON

时间:2011-08-12 20:49:44

标签: asp.net-mvc asp.net-mvc-3 http rest

我正在尝试将RESTful Web服务开发为ASP.NET MVC 3 Web应用程序。

(我知道,我应该使用正确的工具来完成这项工作,在这种情况下意味着我应该使用WCF。但是WCF有太多的抽象层,因此太大而不适合我的脑袋。这对于一个研究项目,但我正在努力完成我的工作。除了我之前尝试过的,现在我认为,尽管它有很大的承诺,但是WCF很有吸引力。

无论如何,我想要做的很简单:我希望我的Web服务将结果作为XML或JSON返回,具体取决于HTTP请求中指定的类型(默认情况下为JSON)。我该怎么做?

2 个答案:

答案 0 :(得分:6)

Json操作结果已存在。 MvcContrib有一个你可以返回的XML动作结果,或者你可以使用Content(xmlContent,“text / xml”)作为你的动作结果。

您可以查询accept标头以确定要返回的操作结果。只要你的action方法返回ActionResult类型,它返回的类型就无所谓了。

也就是说,一旦你证明了整体概念,就有更好的方法来构建你想要做的事情。

答案 1 :(得分:2)

快速解决方案是在Controller方法上创建一个可选参数,并以适当的格式返回视图。

public ActionResult GetFormattedResults(string format)
{
   var data = GetResults();

   ActionResult result = new JsonResult(data);

   switch(format.ToLower())
   {
     case "xml":
        result = new XmlResult(data); // this class doesn't exist in MVC3 you will need to roll your own
     case "html":
        result = new View(data);
   }

   return result;
}

您还可以将格式化功能包装到ActionFilter中,以便您可以跨控制器方法重用该功能。