【问题标题】:How to display data after executing a Web API Get method执行 Web API Get 方法后如何显示数据
【发布时间】:2014-02-16 21:49:57
【问题描述】:

如果 ASP.Net MVC 用于返回数据并在视图中显示,而 Web API 用于传输数据,那么有人将何时以及如何显示从 Web API 调用返回的任何数据?

我很困惑在什么情况下你会使用其中一种。我在发布之前在网上对此进行了研究,但仍然无法得到简单明确的答案。

我知道 Web PI 用于通过 HTTP 公开 RESTful 服务,但是在检索到数据后(通过 GET),如果无法显示数据,使用 Web API 有什么意义?

任何简洁的解释将不胜感激。

【问题讨论】:

  • 您通常不会让 MVC 调用 Web API 来获取数据,因为它可以直接获取数据。 Web API 的用处是允许 JavaScript 进行 AJAX 调用(可能来自您使用 MVC 呈现的 HTML 页面)...
  • 抱歉,Anthony,还是不明白.... 如果是这样,那么在 Web API 上使用 ASP.Net MVC 有什么意义?如果我错了,请纠正我,但是对于 AJAX 调用中的 Web API url,您必须通过编号的 url 指定一个不同的端点,因为通过标准 MVC Controller/ActionMethod 调用将不存在任何端点。对吗?

标签: asp.net .net asp.net-mvc http asp.net-web-api


【解决方案1】:

您可以使用客户端javascript框架,例如

检索并显示您返回的数据。

看看这个关于 Knockout 的教程:http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-framework,-part-1

或者这个对于 Angular:http://code.msdn.microsoft.com/CRUD-Grid-Using-AngularJS-84afaf13

【讨论】:

  • Lars,感谢您的链接。我会看看安瓜拉的。但是,在我向 Brandon 提出的问题中,我目前正在寻找一种简单的方法来使用 ASP.Net MVC、Ajax 和 jQuery 来实现这一点。
【解决方案2】:

Web API 是一个构建 Web 服务的框架,它利用了 HTTP 的所有方面 - ASP.NET MVC 是一个构建网站的框架。

您可以将两者结合使用;例如,您可以使用 ASP.NET MVC 在服务器端生成 HTML“模板”,然后在客户端使用 JavaScript 调用您的 Web API 资源来获取和修改数据并将其“插入”到您的 HTML 模板中。查看@Lars 的答案以获取有关该特定场景的更多信息以及使之更容易的 JavaScript 框架。这种技术主要用于创建比传统网站更流畅的用户体验。

选择 Web API 而不是将所有内容都放在 ASP.NET MVC 网站中的一个重要原因是,如果您曾经从单个网站扩展到多种类型的客户端(例如,智能手机、Mac/Windows 应用程序等)。由于 ASP.NET MVC 确实适用于网站/生成 HTML,而本机客户端倾向于更喜欢简单的 Web 请求并在客户端呈现 UI,因此更简单的方法是在 Web API 后面进行所有数据操作并拥有所有的用户界面使用它。

关于 Web API 以及何时选择它而不是(或与 ASP.NET MVC 一起使用)还有很多话要说。实际上,我认为当您将其与 WCF 等基于 SOAP 的服务堆栈进行比较时,会出现更有趣的权衡。

【讨论】:

  • Brandon,来自 AJAX 请求的典型调用如何通过 jQuery 调用 Web API 方法?由于 Web API 本质上是一项服务,因此在 AJAX 调用中的某处,您必须指定要访问的特定端点/url 以及 Controller/Action 方法。
  • 那么,Brandon,您是说一个典型的场景可能是使用 ASP.Net MVC 应用程序来查看我将通过对 Web API 服务的 AJAX 调用检索的数据的生成?
  • 顺便说一句,我假设对 Web API 方法的 Ajax 调用将通过适当的 ASP.Net MVC 控制器/操作方法。我只是对这个场景在一个简单的方法调用中的样子感到困惑......在以前的情况下(在 Web API 之前),数据库调用将来自 Ajax 到 ASP.Net MVC Controller/Action 方法。如果您能按照我对 Lars 所说的话,让我了解 Web API 的使用,那就太好了。我想,Web API 可能更适合与 Lars 提到的 SPA 应用程序一起使用,而不是与 ASP.Net MVC 一起使用。
  • @sagesky36 在客户端,您不知道服务器端是使用 MVC 还是 Web API(例如,您可以使用 $.get("api/questions", ...,而在 Web API 中您会可能有一个 QuestionsController 继承自 ApiController 并带有一个 Get 操作来返回数据 - 但所有这些都是可配置的,我描述的设置只是惯例。
  • @sagesky36 正如我所说,它非常适合 SPA 应用程序,但它也适合移动应用程序,我也更喜欢它用于面向服务架构中的同步服务调用(尽管 WCF 和 MSMQ 仍然是首选用于单向、即发即弃的操作)
【解决方案3】:

您可以在GPLv3 下免费使用Telerik kendo UI Web。它使用knockoutjs

Download Kendo UI Web Open Source

Kendo UI Demos

那里有很多免费的,但我只是碰巧使用了那个剑道 UI。

【讨论】:

  • 谢谢,但我宁愿坚持使用带有 ASP.Net MVC 的纯 JavaScript、Ajax 和 jQuery。
猜你喜欢
  • 2023-03-18
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 2013-10-17
  • 2018-01-27
相关资源
最近更新 更多