是否可以将 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 做到这一点?
如果我理解正确的话,这会起作用:
- Browser/client 调用 MVC 操作
- MVC 操作调用 Web 服务,检索 XML
- MVC 操作将 XML 转换为视图模型
- 视图模型传递给CSHTML视图生成
- 视图已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
}
我正在尝试在应用程序中实现一项功能,该功能将在 Google 地图上显示一些数据。它将在将要显示的页面上的 iframe 中调用 Web api 服务。 我想要的是并考虑这是否可能,网络 api 接收请求,调用外部 API,其中 return 是 xml。 Web api 获取 xml,对其进行处理并生成一个视图(或部分视图),即 cshtml 并 return 将其发送给请求它的应用程序。通过这样做,我将拥有一个共同的后端,并且将来如果有另一个应用程序(将来肯定会很快存在)需要稍微不同的数据,可以共享相同的后端,然后共享网络 api,具体取决于哪个应用程序已请求它,可以 return 对它的代表视图。
那么我们今天能否将 Web api 应用程序用作可以 return 视图的全面 Web 应用程序? 或者我如何使用 MVC 5 或 6 做到这一点?
如果我理解正确的话,这会起作用:
- Browser/client 调用 MVC 操作
- MVC 操作调用 Web 服务,检索 XML
- MVC 操作将 XML 转换为视图模型
- 视图模型传递给CSHTML视图生成
- 视图已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
}