通常,在编写 Web 应用程序时,我们希望在客户端执行验证以提供即时反馈,并在服务器端执行验证以确保数据完整性和安全性。但是,客户端浏览器应用程序通常是用 JavaScript 编写的。服务器端可以用 Java、Php、Ruby、Python 和许多其他语言编写。当服务器端由 node.js 之类的东西支持时,在客户端和服务器上重用相同的验证代码真的很容易,但是如果服务器端基于 Rails 或 Django(或任何其他您可以命名的框架) ),确保验证代码保持同步的最佳方法是什么?必须用多种语言重新实现相同的代码似乎有点多余。
最佳答案
如果您牢记以下观点,重复某些验证似乎是可以的。
让我们将验证分为两部分。 A) 业务验证,例如“如果选中复选框 Y,则字段 X 中的金额应大于 500 美元” B) 基本数据验证,例如数据类型检查、空检查等(我们可能会争论每个验证都是业务验证,但这纯粹是特定于上下文的)。
A类:它是您业务逻辑的一部分,应仅保留在服务器端。
B类:这种类型的验证是放置在客户端的潜在候选者。但请记住,浏览器端验证 can be bypassed .这并不意味着您根本不应该在浏览器端进行验证,但此类验证应仅被视为节省来自服务器的网络往返的奖励。服务器必须重新执行这些验证。
简而言之,不应将验证视为跨层可重用代码的单元。他们的目标各不相同,应该允许冗余。
希望这可以帮助。
关于validation - 如何同步客户端验证和服务器端验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8557968/