【发布时间】:2017-06-21 22:11:55
【问题描述】:
在我当前的项目中,我们的一项微服务有以下需求列表:
- 任何对象都可以具有自定义验证规则列表,并且对象之间的验证规则可能不同(甚至可能是一个对象具有唯一验证规则列表)
- 创建对象初始版本的用户可以从 UI 配置这些自定义验证规则
- 任何时候当对象发生某些特定事件(更改和更新)时,我们都需要验证更改不违反开始时输入的任何自定义验证规则
- 我们还应该有标准检查列表,例如日期范围检查、对象中某些项目和元素的数量
现在我们将保存所有对象的验证规则
- 作为 JSON 对象,将包含验证规则的详细信息
- 或序列化的Groovy对象(*Validator)
在这两种情况下,它都会保存在数据库中,并在需要检查验证规则列表并执行它们的任何时候使用。
我不确定这两个选项都是最好的,可能还有其他一些方法可以实现它。您是否知道任何有助于实施自定义验证规则的模式或方法?
谢谢
【问题讨论】:
-
最好使用一些声明性语言(您的选项中的 json)然后使用脚本,因为稍后您可以生成文档或对此声明进行一些可视化。并阅读您的要求(服务、对象定义/验证) - 您对 swagger.io 有何看法
-
恕我直言,不管你使用的是一些“内置”的第三方库,比如 Hibernate 或你定制的 Json 描述,最后你都会有一堆 Java 代码片段。如果你需要一些核心逻辑(比如调用远程服务器或计算天空中的星星),在 Json pojos 中实现将非常棘手。这就是我投票支持 Groovy 实现的原因:1) 简单清晰的编码 2) 易于集成和良好的性能与已编译脚本的缓存 3) 提供自己的验证器库的可能性
标签: json validation groovy customization custom-validators