【问题标题】:Single Source of Truth (DRY) to validate AngularJS Forms on client- and server-side在客户端和服务器端验证 AngularJS 表单的单一事实源 (DRY)
【发布时间】:2016-12-09 15:37:02
【问题描述】:

我正在计划一个基于 AngularJS 在客户端的新项目,比如说在服务器上使用 Java 或 PHP。

AngularJS 应用程序提供了一个简单的注册表格,例如用户名、名字和姓氏、电子邮件、密码和确认密码。

我目前正在寻找定义表单输入数据验证的最佳方式。

一方面,定义应该影响客户端应用程序。例如,验证定义用户名必须有 4 到 14 个字符,AngularJS 应该在无效输入上显示错误,而不首先向服务器发送验证请求。我想 AngularJS 在启动时读取定义文件(可能是 JSON 或 XML)并在客户端强制执行这些要求。

另一方面,接收提交的表单数据的服务器端代码也应该依赖相同的定义文件来验证传递的表单数据。

当然,客户端无法在没有服务器的情况下执行某些验证,例如,是否输入了唯一的用户名。

我的问题是,在客户端使用 AngularJS 和例如服务器端的 Java 或 PHP?

【问题讨论】:

  • 当然,对于几乎所有可能的计算机科学问题,有许多库、框架等。不幸的是,Stack Overflow 不是要求这些外部资源的地方,因为每个人都会根据他们的经验有不同的答案。请参阅help center 了解更多信息。

标签: angularjs forms validation


【解决方案1】:

我在后端使用了 Spring,在前端使用了 Angular,在进行验证时我也想知道同样的事情,但是没有任何类型的框架可以做到这一点。最好的办法是使用 HTTP 标准从后端传达错误。

例如,如果您完成客户端验证(用户名和密码足够长,而不是 null 等),然后将该数据发送到后端以确保尚未使用用户名,那么您会想要以适当的 HTTP 状态代码以及响应中的任何其他内容进行响应。在这种情况下,如果后端一切正常,则为 200 状态,或者类似 409 的状态以表示冲突。 HTTP 可能是您正在寻找的标准,它仍然为您提供了难以置信的灵活性。

然后,您可以在 Angular 中处理这些状态代码,并在处理完逻辑后在客户端执行不同的操作。

【讨论】:

    【解决方案2】:

    我找到了http://json-schema.org/,并将坚持使用https://github.com/everit-org/json-schema 实现服务器端Java 验证和https://github.com/zaggino/z-schema 实现客户端JavaScript 验证。

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 2012-12-19
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      相关资源
      最近更新 更多