CN106445822A - 高扩展性的前后端数据校验方法 - Google Patents
高扩展性的前后端数据校验方法 Download PDFInfo
- Publication number
- CN106445822A CN106445822A CN201610846694.XA CN201610846694A CN106445822A CN 106445822 A CN106445822 A CN 106445822A CN 201610846694 A CN201610846694 A CN 201610846694A CN 106445822 A CN106445822 A CN 106445822A
- Authority
- CN
- China
- Prior art keywords
- validator
- current authentication
- authentication device
- chain
- checking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Abstract
本发明提供了一种高扩展性的前后端数据校验方法,其特征在于,一次性验证多个属性,每个属性指定多个验证器,验证器在满足制定条件下运行,或在属性中添加注解,在注解中指定验证器完成一次验证,其中,多个验证器组成验证器链进行不同条件下的验证,为验证器链中的验证器指定前置验证器和后置验证器,所有验证器共享一个验证上下文,验证上下文中存储验证器链的共享变量。本发明提供的一种高扩展性的前后端数据校验方法实现了验证器在不同条件下的复用,而且增加了验证的灵活性,提高了代码的简洁度。
Description
技术领域
本发明涉及一种数据验证方法。
背景技术
在传统的信息系统开发中,服务端数据验证是一个必须的步骤,除了基本的数据格式验证之外,复杂的业务逻辑验证在代码中也到处存在。随着业务量的增加,大量的重复验证逻辑充斥在代码中,一个简单的存储业务,光验证逻辑就占据了大量的开发量,且造成了后期维护的不便。
目前,服务端开发的数据验证可以采用的验证方式,如基于XML验证的ApacheCommons Validator,基于JSR303的Hibernate Validator。这些框架可以满足基本的数据验证,但是一但需要实现一些复杂的自定义业务逻辑,往往需要一大堆复杂的配置,开发成本也随之提高。在某些情况下,如果验证逻辑需要在某一个特定条件下执行或者验证逻辑之间也存在依赖关系,往往的解决方式就是在代码中加入一堆判断条件,然后调用对应的验证逻辑,这会使得组件的复用性大大降低。从代码可读性与维护性角度来讲,这显然不是开发人员所期望的。
发明内容
本发明的目的是提供一种组件复用机制,能够在特定条件下执行某一个验证组件。
为了达到上述目的,本发明的技术方案是提供了一种高扩展性的前后端数据校验方法,其特征在于,一次性验证多个属性,每个属性指定多个验证器,验证器在满足制定条件下运行,或在属性中添加注解,在注解中指定验证器完成一次验证,其中,多个验证器组成验证器链进行不同条件下的验证,为验证器链中的验证器指定前置验证器和后置验证器,所有验证器共享一个验证上下文,验证上下文中存储验证器链的共享变量。
优选地,验证某个属性的方法包括以下步骤:
步骤1、获取当前属性的验证器链,从验证器链中取出第一个验证器作为当前验证器;
步骤2、判断当前验证器是否存在,若存在,进入步骤3,若不存在,进入步骤8;
步骤3、当前验证器的运行条件是否满足,若不满足,则将下一个验证器作为当前验证器,返回步骤2,若满足,则进入步骤4;
步骤4、执行当前验证器的前置验证器,进行前置验证;
步骤5、执行当前验证器,进行当前验证;
步骤6、执行当前验证器的后置验证器,进行后置验证;
步骤7、判断是否需要立即刷新验证结果,若需要,则进入步骤8,若不需要,则将下一个验证器作为当前验证器,返回步骤2;
步骤8、获取验证结果后结束。
本发明提供的一种高扩展性的前后端数据校验方法实现了验证器在不同条件下的复用,而且增加了验证的灵活性,提高了代码的简洁度。
附图说明
图1为本发明的一个属性验证的流程图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
验证组件在本发明中称为验证器,是整个验证组件的执行者。在本发明中,利用多个验证器组成验证器链,以进行不同条件下的验证,并且可以定义组合式验证器,为某一个验证器指定前置验证器和后置验证器。所有验证器共享一个验证上下文,验证上下文中可以存储验证器链的共享变量。可以在某一个验证过程中强制验证提交以跳过后续的验证。除此之外,本发明还提供了注解式的验证方式,只需要将定义的验证器加入到注解属性中,执行时便可自动调用对应的验证逻辑。下面分别从普通属性验证与注解式验证来叙述本发明的实现方式:
1、普通属性验证
本发明提供了类似JDK8的Stream式验证方式,可以一次性验证多个属性,每一个属性可以指定多个验证器,验证器可以在满足指定的条件下执行,并且采用了惰性求值的方式,一旦校验到错误,并不会把错误立即返回,除非手动刷新错误或者执行完毕。
2、Bean属性验证
除了可以使用基于属性的验证方式之外,还可以使用注解方式,通过在属性中添加@Check注解,同时在注解中指定验证器便可完成一次验证。
普通属性验证与Bean属性验证各有特点,前者增加了验证的灵活性,后者提高了代码的简洁度。在实际开发中,可以同时使用这两种方式进行混合验证。
结合图1,本发明验证一个属性的具体流程包括以下步骤:
步骤1、获取当前属性的验证器链,从验证器链中取出第一个验证器作为当前验证器;
步骤2、判断当前验证器是否存在,若存在,进入步骤3,若不存在,进入步骤8;
步骤3、当前验证器的运行条件是否满足,若不满足,则将下一个验证器作为当前验证器,返回步骤2,若满足,则进入步骤4;
步骤4、执行当前验证器的前置验证器,进行前置验证;
步骤5、执行当前验证器,进行当前验证;
步骤6、执行当前验证器的后置验证器,进行后置验证;
步骤7、判断是否需要立即刷新验证结果,若需要,则进入步骤8,若不需要,则将下一个验证器作为当前验证器,返回步骤2;
步骤8、获取验证结果后结束。
Claims (2)
1.一种高扩展性的前后端数据校验方法,其特征在于,一次性验证多个属性,每个属性指定多个验证器,验证器在满足制定条件下运行,或在属性中添加注解,在注解中指定验证器完成一次验证,其中,多个验证器组成验证器链进行不同条件下的验证,为验证器链中的验证器指定前置验证器和后置验证器,所有验证器共享一个验证上下文,验证上下文中存储验证器链的共享变量。
2.如权利要求1所述的一种高扩展性的前后端数据校验方法,其特征在于,验证某个属性的方法包括以下步骤:
步骤1、获取当前属性的验证器链,从验证器链中取出第一个验证器作为当前验证器;
步骤2、判断当前验证器是否存在,若存在,进入步骤3,若不存在,进入步骤8;
步骤3、当前验证器的运行条件是否满足,若不满足,则将下一个验证器作为当前验证器,返回步骤2,若满足,则进入步骤4;
步骤4、执行当前验证器的前置验证器,进行前置验证;
步骤5、执行当前验证器,进行当前验证;
步骤6、执行当前验证器的后置验证器,进行后置验证;
步骤7、判断是否需要立即刷新验证结果,若需要,则进入步骤8,若不需要,则将下一个验证器作为当前验证器,返回步骤2;
步骤8、获取验证结果后结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610846694.XA CN106445822A (zh) | 2016-09-23 | 2016-09-23 | 高扩展性的前后端数据校验方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610846694.XA CN106445822A (zh) | 2016-09-23 | 2016-09-23 | 高扩展性的前后端数据校验方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106445822A true CN106445822A (zh) | 2017-02-22 |
Family
ID=58166131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610846694.XA Pending CN106445822A (zh) | 2016-09-23 | 2016-09-23 | 高扩展性的前后端数据校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106445822A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848114A (zh) * | 2010-04-15 | 2010-09-29 | 华为技术有限公司 | 故障检测方法和装置 |
CN101925904A (zh) * | 2007-12-12 | 2010-12-22 | 3M创新有限公司 | 使用动态文档识别框架的文档验证 |
CN103152365A (zh) * | 2013-04-08 | 2013-06-12 | 北京奇虎科技有限公司 | 对数据进行验证的数据验证方法及服务器 |
US20150356069A1 (en) * | 2008-07-24 | 2015-12-10 | International Business Machines Corporation | Validating an xml document |
CN105677326A (zh) * | 2015-12-28 | 2016-06-15 | 国云科技股份有限公司 | 一种软件接口参数验证方法 |
-
2016
- 2016-09-23 CN CN201610846694.XA patent/CN106445822A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101925904A (zh) * | 2007-12-12 | 2010-12-22 | 3M创新有限公司 | 使用动态文档识别框架的文档验证 |
US20150356069A1 (en) * | 2008-07-24 | 2015-12-10 | International Business Machines Corporation | Validating an xml document |
CN101848114A (zh) * | 2010-04-15 | 2010-09-29 | 华为技术有限公司 | 故障检测方法和装置 |
CN103152365A (zh) * | 2013-04-08 | 2013-06-12 | 北京奇虎科技有限公司 | 对数据进行验证的数据验证方法及服务器 |
CN105677326A (zh) * | 2015-12-28 | 2016-06-15 | 国云科技股份有限公司 | 一种软件接口参数验证方法 |
Non-Patent Citations (2)
Title |
---|
NEO 时刻准备着: "Java的业务逻辑验证框架fluent-validator", 《HTTP://JU.OUTOFMEMORY.CN/ENTRY/241915》 * |
夜-FENG: "Spring3.1对Bean Validation规范的新支持(方法级别验证)", 《HTTPS://BLOG.CSDN.NET/U014351782/ARTICLE/DETAILS/51729181》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066375B (zh) | 安全关键软件自动化基于需求的测试实例生成系统和方法 | |
CN102331967B (zh) | 芯片验证测试用例的管理方法 | |
CN107464148A (zh) | 一种基于联盟链的智能合约升级方法和系统 | |
CN109634600B (zh) | 一种基于安全扩展SysML和AADL模型的代码生成方法 | |
CN107783758B (zh) | 一种智能合约工程方法 | |
CN105279090A (zh) | 应用于金融领域的测试脚本生成方法和装置 | |
CN106528424A (zh) | 基于后台系统服务或接口的测试方法和测试平台 | |
CN104573182A (zh) | 一种用于飞行器多模态控制系统的设计方法 | |
CN107220539B (zh) | 基于需求的ima安全验证分析方法 | |
CN109739740A (zh) | 一种aadl模型组合形式化验证方法 | |
CN106095376A (zh) | 一种快速组态监控画面的实现方法 | |
CN104077232A (zh) | 一种基于用例与源码双向追溯的测试装置及方法 | |
CN108197625A (zh) | 一种校正车牌识别的方法及系统 | |
US20090112554A1 (en) | Test Bench, Method, and Computer Program Product for Performing a Test Case on an Integrated Circuit | |
Sokenou | Generating test sequences from UML sequence diagrams and state diagrams | |
Mudhivarthi et al. | Model based design in automotive open system architecture | |
CN106445822A (zh) | 高扩展性的前后端数据校验方法 | |
Waszecki et al. | How to engineer tool-chains for automotive e/e architectures? | |
CN104182591A (zh) | 一种软件测试需求建模方法 | |
CN105701373A (zh) | 打开adb接口的方法和装置 | |
CN103729289B (zh) | 一种利用图式标明hpd逻辑可靠性的方法 | |
Kacimi et al. | Creating a reference technology platform: Performing model-based safety analysis in a heterogeneous development environment | |
CN103226512A (zh) | 基于构件测试用例集组合的构件组装测试方法 | |
Pinel et al. | Improving tests infrastructure through a model-based approach | |
Zhao et al. | Modelling and design of the formal approach for generating test sequences of ETCS level 2 based on the CPN |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170222 |
|
RJ01 | Rejection of invention patent application after publication |