【问题标题】:How to understand concepts like REST and AngularJS [closed]如何理解 REST 和 AngularJS 等概念
【发布时间】:2016-12-21 01:14:43
【问题描述】:

我发现很难正确理解 REST (ASP.NET Core API) 和 AngularJS 是如何结合在一起的。我也很难理解控制器和 API 之间的区别。 我观看了有关 ASP.NET Core Web 应用程序的视频: https://app.pluralsight.com/library/courses/aspdotnetcore-efcore-bootstrap-angular-web-app/table-of-contents 该视频展示了如何创建,例如,一个纯 html 联系表单,使用 ViewModel 和属性在服务器端对其进行验证。 然后,其他模块展示了如何创建 AngularJS 类型的表单,并在客户端进行验证。 我很难理解为什么验证应该是客户端的(代码重复......)。 在我看来,当 C# 语言被 Angular 取代时,剃须刀的所有“力量”......? 我希望我能正确地解释自己。

【问题讨论】:

    标签: c# angularjs rest asp.net-web-api asp.net-core


    【解决方案1】:

    正如 mariocatch 已经很好地解释了 Api 和 Angular JS。我将阐明您的问题,即为什么要在前端进行验证?这完全是为了性能而开发的。在大型应用程序中,性能很重要。所以不要像

    这样检查验证条件
    • 电子邮件格式正确

    • 密码必须至少为 6 个字符

    • 密码必须至少包含 1 个大写字母

    • 密码必须至少包含 1 个特殊字符

    理性思考一下,为什么要让服务器参与所有这些验证。现在网站拥有数百万、数十亿用户,服务器不能免费进行这些验证。这就是为什么将验证移到客户端的原因。是的,这正在取代 C# razor 的强大功能,但这显然是为了 Web 应用程序的长期良好性能。

    我认为这消除了您对客户端验证的困惑。

    【讨论】:

    • 服务器端验证始终是强制性的。客户端验证对性能有好处,是的,但仍然必须包括服务器端验证。从来没有一个很好的理由只做客户端验证。编程 101 就是你不信任用户输入。
    • 我明白了,所以,基本上,服务器端将提供 API,然后使用 Angular 与之通信。
    • 我并不是说应该排除服务器端验证。如果您使用客户端验证,您可能只想在提交信息之前在服务器上验证一次信息。但这只有在客户端通过客户端的所有验证并且大部分时间信息几乎正确时才会发生。
    • @NatanZB 是的,这是正确的
    • 致所有反对者。请就改善答案提出建议,而不仅仅是投反对票。
    【解决方案2】:

    网络 API

    数据提供者。

    Web API 的作用只是向消费者提供数据。假设您正在构建一个博客,并且希望将所有作者和博客文章存储在 SQL 数据库中。如果您只是让浏览器(您的客户端 javascript)访问数据库以开始随意向其中投掷博客文章,那么一个主要的安全漏洞将是。相反,在浏览器 javascript 和后端 SQL 之间放置一个服务器端 API 是一种常见的做法。这就是 API 的用武之地。您的 API 只是位于中间,并且知道如何检索博客文章、插入新博客文章等。

    角度

    数据显示。

    这是浏览器的 javascript 端。现在我们和数据库之间有一个 API,我们需要做的就是知道如何与 API 通信。当我们的页面加载时,我们可以简单地向 API 发送一个请求,上面写着:var posts = RetrieveBlogPosts();,也许 RetrieveBlogPosts 在底层只是发送一个 HTTP GET 请求到我们的 API http://localhost:8000/api/posts。 API 响应基于该路由的传入请求,并确切知道要进入哪个服务器端方法。然后它进入数据库,获取博客文章,并将它们发送回客户端浏览器上运行的 Angular 应用程序。它发回的数据通常采用 JSON 格式。然后,您的 Angular 应用程序将接收响应 (JSON),将其转换为代表博客文章的对象,然后在浏览器中显示该数据(HTML 模板/css/等)。

    【讨论】:

    • 嗨。我更熟悉这些主要差异。例如另一个问题:假设我有客户和订单。哪个部分负责整合(数据操作)? - 查找客户 A 的订单? API?角代码?常识说API,但是,每件小事都需要接近服务器,等等......
    • 您是否希望在用户浏览器中运行的前端 JavaScript 首先获取所有订单,然后过滤到仅用户的订单?这意味着任何人都可以访问每个人的订单。每当某些东西不适合用户时,它就不应该离开服务器。因此,在这种情况下,API 必须对调用者进行身份验证并返回允许他们查看的数据。
    • @juunas,我已经编辑了我的评论...但是在身份验证成功后说。
    • 当然是在认证之后,但是你仍然不会在客户端进行过滤。我可以看看我的 F12 工具并获取每个用户的订单。
    • 如果我们在谈论F12,有没有办法封装角度部分?比如说,没有向客户显示 ng-repeat ......而是向客户显示完成的结果。问这个问题的另一种方式 - Angular 是否向用户显示了太多信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多