我们有一个标准的Web应用程序,而前端正在使用Angular,后端是用Java 7编写的。我注意到的是,我们得到了大量的重复代码。也就是说,验证是通过角度在客户端执行的,但我不能完全信任他,因为用户可以禁用客户端验证并只是向服务器提交帖子查询。
因此,我必须在Java中在服务器端重复相同的验证逻辑。这很乏味,但我不知道如何避免这种情况。也许我可以用javascript框架(假设它是Node.js)编写后端的一些部分,它可以使用与前端相同的验证库,并使Java后端与node.js交互?解决这个问题的最佳方法是什么?
答案 0 :(得分:3)
Java可以运行JavaScript代码和其他动态脚本语言。在Java 7中,JavaScript ScriptEngine称为Rhino,在Java 8中称为Nashorn。
Oracle Java脚本程序员Java 7指南: https://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/
也许你可以在js文件中编写纯JavaScript,你可以将它放在BackEnd中为客户端服务并执行到服务器中。
答案 1 :(得分:0)
AngularBeans框架允许您在java端定义BeanValidation并转换为角形式验证,因此代码不会重复。请查看this文章中的使用示例。
答案 2 :(得分:0)
例如,将验证规则定义为JSON格式的数据,并通过暴露数据的同一API中的端点公开它们。现在,验证规则是公开的,任何其他服务都可以使用某些库来验证数据,这些库可以解析规则并接受/拒绝提交的数据(即从表单中)。