【问题标题】:Calling a Web API from ASP.Net Core 2 Web App using Razor使用 Razor 从 ASP.Net Core 2 Web App 调用 Web API
【发布时间】:2018-12-30 16:19:56
【问题描述】:

我对这个话题做了很多研究,但似乎找不到答案。

我编写了一个 ASP.Net Core 2 Web API。我现在想开发一个前端。我一直在研究使用 razor 使用 ASP.Net Core 2 Web App,但是我很难调用我的 Web API。所有 ASP.NET 指南似乎都在 Web 应用程序控制器中包含数据库访问,而不是调用外部 Web api。

我看到了一些在 Razor 控制器中使用 HTTP 客户端调用 Web API 的示例,但我不确定这是否是最佳实践。

我的最终目标是拥有两个应用程序一个 web api 和一个 web 应用程序。我不介意学习新技术,但我已经开始使用 Razor,因为它看起来很简单。

我也考虑过遵循 ASP.NET Core 指南并且没有 API,但这似乎也不是最佳实践。

【问题讨论】:

    标签: asp.net-web-api razor asp.net-core asp.net-core-2.1


    【解决方案1】:

    您似乎仍在争论是否有 API,这让我认为您还没有 100% 清楚地解决您要解决的任何问题。我想说回答这可能是第一步。

    关于 Razor;我不知道剃须刀控制器是什么。 这取决于您的前端是什么,但假设它是一个网站(听起来像是),那么我个人的偏好是拥有一个 Razor 前端,对 API 进行 AJAX 调用。

    您可能会更进一步,并希望将后端和前端分开。如果您有 API,那么您可以将其视为要调用的单独应用程序,在这种情况下,您将不受限于您使用的前端技术。

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的回复。我仍在争论是否使用 API。我只会开发一个网站前端,所以我个人认为不需要 API,但是有很多信息表明你应该总是开发一个 API,这就是我走这条路的原因。如果我沿着 web api 路线走,那么它将是一个单独的应用程序,所以我想我的主要问题是如何从 ASP.NET Core Web App 中调用 web api。
    • 我不确定您从哪里获得信息,但“您应该始终开发 API”的说法并不真实。您不应该“总是”做任何一件事,而应该为您的特定问题找出最佳方法。当您想要分离后端和前端时,通常最好使用 API;将 API 视为您调用以运行函数、取回数据等的服务。通过阅读其他答案,听起来确实像一个简单的 MVC 网站可能确实是您最好的方法。祝你好运!
    【解决方案2】:

    除非将分别部署这两个应用程序,否则您可能不应该在 MVC(Razor) 控制器中使用 HttpClient。

    对于您的前端,您需要决定是只坚持使用 Razor,还是使用 Angular 或 React 等客户端框架。如果您使用的是 Razor,那么您实际上是从服务器生成的文件运行客户端。在这种情况下,您不妨放弃 WebApi 并直接提供数据(即经典 MVC 应用程序)。

    如果您想坚持使用 WebApi,那么理想情况下您需要从 JavaScript 调用它。大多数大型框架/库都可以做到这一点。如果您想要一个示例(以及哪个库),请告诉我,我将扩展此答案。

    【讨论】:

    • 我担心的是删除 web api 并直接提供数据是不好的做法,我读过的很多文章都说你应该总是写一个 API(我可能完全错了)。基本上我的目标是编写一个与数据库交互的网站,无论是否通过 web api,这并不重要,我只是想找出最佳实践。我是一名 C++ 开发人员,这是我第一次做任何 Web 的东西,所以只是试图掌握一切!我热衷于使用 Razor 纯粹是因为它看起来很简单并且使用了 C#。
    • 社区的普遍感觉是写2个不同的应用程序。一个 WebApi 和一个客户端。选择是否使用 Razor 取决于最简单和最容易维护的情况。在您的情况下,一个单独的 MVC 应用程序似乎是最好的选择。这使用服务器上的 Razor 来生成和交付静态客户端页面/部分。正是从这些页面中,您需要使用 JS 来进行 WebApi 调用。简而言之,Razor 无法为您执行此操作,因为它需要在浏览器中运行。
    • 您可以只编写一个 MVC 应用程序,并开发您的后端服务,就好像您在它们之上编写一个 WebApi(但不是)。基本上,将所有逻辑和数据保存在不同的项目中。我认为这将是我的方法。这是一个单一的应用程序/解决方案,可以让您专注于前端。
    • 啊,好吧,我认为这开始有意义了。因此,如果我使用 API,我仍然可以将 Razor 用于 UI,然后使用其他库 (JS) 来调用 Web api 来检索数据?当您谈论仅编写 MVC 应用程序的另一种选择时,您的意思是所有数据库交互都将在应用程序中进行,而不是让 Web api 来完成吗?谢谢:)
    • 确实如此 - MVC 应用程序将直接与数据库交互(最好通过一些专用服务类)。这将消除对 API 的需求。
    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2017-11-01
    • 2021-08-22
    • 2018-03-15
    • 2016-12-17
    • 2018-08-25
    相关资源
    最近更新 更多