我正在过渡到响应更快的前端Web应用程序,并且对模型验证有疑问。这是设置:服务器具有用于插入,更新,检索等的标准REST API。这可以用Node或Java Spring编写,没关系。前端是用类似Angular(或类似语言)的东西编写的。
我需要弄清楚将验证代码放在哪里。要求如下:
所有验证代码应只写在一个地方。客户端和服务器都不一样。这意味着它在持久化时应该驻留在REST API内的服务器上。
前端应该能够理解来自服务器的验证错误,并将它们与引起错误的特定字段相关联。因此,如果“用户名”字段是必填字段,则客户端可以在该字段旁边放置一个错误,指出“用户名是必填字段”。
应该有可能验证正确的变量类型。因此,如果我们期望一个数字或一个日期而得到一个字符串,则错误将类似于“'Yo'不是正确的日期”之类的错误。
错误消息应被本地化为用户的语言。
谁能帮我吗?我需要一些简单而强大的工具。
谢谢
经过大量研究,我找到了使用Meteor.js平台的解决方案。由于它是在服务器和客户端上都运行的纯JavaScript解决方案,因此您只需定义一次脚本,即可在客户端和服务器上运行它们。
从官方的流星文档中:
客户端,服务器和测试子目录之外的文件都同时加载在客户端和服务器上!那是模型定义和其他功能的地方。
哇。如果您问我一次,仅定义模型和验证脚本是一件很酷的事情。此外,也无需在JSON和任何服务器端技术之间进行映射。另外,没有ORM映射可将其保存在数据库中。好的!
再次,从文档:
在Meteor中,客户端和服务器共享相同的数据库API。相同的确切应用程序代码(例如验证器和计算的属性)通常可以在两个地方运行。但是,尽管在服务器上运行的代码可以直接访问数据库,但是在客户端上运行的代码则不能。这种区别是Meteor数据安全模型的基础。
听起来不错。这是最后一个小宝石:
输入验证: Meteor允许您的方法和发布函数采用任何JSON类型的参数。(实际上,Meteor的有线协议支持EJSON,它是JSON的扩展,它还支持其他常见类型,例如日期和二进制缓冲区。)JavaScript的动态类型意味着您无需为应用程序中的每个变量声明精确的类型,但通常有助于确保客户端传递给您的方法和发布函数的参数属于您期望的类型。
无论如何,听起来我已经找到了解决问题的方法。如果其他人知道一次定义验证并在客户端和服务器上运行验证的方法,请在下面发布答案,我很乐意听到。
谢谢大家
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句