是否可以将Web API项目用作完整规模的Web应用程序

时间:2015-04-09 14:37:55

标签: asp.net-mvc asp.net-web-api partial-views

我正在尝试在应用中实现一项功能,该功能将在Google地图上显示一些数据。它将在显示它的页面上的iframe中调用web api服务。 我想要的是,并且考虑是否可能,web api接收请求,调用返回xml的外部API。 Web api接受xml,处理它并生成一个视图(或部分视图),即cshtml,并将其返回给已请求它的应用程序。通过这样做,我将有一个共同的后端,将来如果有另一个应用程序(肯定将来很快就会存在)需要稍微不同的数据,可以共享相同的后端,然后是web api,具体取决于哪个应用程序请求了它,可以将重复观点归还给它。

我们今天可以使用web api应用程序作为可以返回视图的全面Web应用程序吗? 或者任何想法如何使用MVC 5或6进行操作?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这可行:

  1. 浏览器/客户端调用MVC操作
  2. MVC操作调用Web服务,检索XML
  3. MVC操作将XML转换为视图模型
  4. 将视图模型传递给CSHTML视图以生成
  5. 视图将返回给客户
  6. 您可以使用AJAX请求调用MVC操作并获取HTML响应。 WebAPI更适合于返回数据(xml / json)而不是HTML的REST样式接口。 在这种情况下,您希望返回HTML,因此MVC是更直接的方法。

    您希望在中间步骤中调用某些Web服务这一事实并未改变这一点。无论您是采用哪种方式,如果您需要调用Web服务的操作方法,您可以使用HttpClient或类似的实用程序来进行该调用。

    这是一些伪代码来演示

    // this method called from browser client
    public ActionResult SomeMvcAction(int someId)
    {
         MyViewModel vm = new MyViewModel();
         using(var client = new HttpClient())
         {
            // retrieve XML from web service
            // pump data into view model
            vm.Items = xml.Select(...);
         }
    
         return View("SomeViewName", vm); // pass view model to view to return HTML
    }