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

Is it possible to use Web API project as a full scale web application

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

那么我们今天能否将 Web api 应用程序用作可以 return 视图的全面 Web 应用程序? 或者我如何使用 MVC 5 或 6 做到这一点?

如果我理解正确的话,这会起作用:

  1. Browser/client 调用 MVC 操作
  2. MVC 操作调用 Web 服务,检索 XML
  3. MVC 操作将 XML 转换为视图模型
  4. 视图模型传递给CSHTML视图生成
  5. 视图已return发送给客户端

您可以使用 AJAX 请求调用 MVC 操作并返回 HTML 响应。 WebAPI 更适合 returns 数据 (xml/json) 而不是 HTML 的 REST 风格接口。 在这种情况下,您想要 return 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
}