CN112182037B - 数据校验方法、装置、设备以及存储介质 - Google Patents

数据校验方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN112182037B
CN112182037B CN202011044885.7A CN202011044885A CN112182037B CN 112182037 B CN112182037 B CN 112182037B CN 202011044885 A CN202011044885 A CN 202011044885A CN 112182037 B CN112182037 B CN 112182037B
Authority
CN
China
Prior art keywords
parameter
incoming data
expression
name
verification
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.)
Active
Application number
CN202011044885.7A
Other languages
English (en)
Other versions
CN112182037A (zh
Inventor
顾春辉
曹雷
葛又嘉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202011044885.7A priority Critical patent/CN112182037B/zh
Publication of CN112182037A publication Critical patent/CN112182037A/zh
Application granted granted Critical
Publication of CN112182037B publication Critical patent/CN112182037B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请公开了数据校验方法、装置、设备以及存储介质,涉及页面交互领域和数据校验领域。具体实现方案为:获取传入数据,该传入数据包括第一参数名和针对第一参数名的参数值;基于第一参数名,确定以针对第一参数名的参数值作为输入参数的业务对象;确定业务对象是否具有目标注解,目标注解包括校验表达式;在业务对象具有目标注解的情况下,根据校验表达式校验传入数据。其中,校验表达式用于指示业务对象的输入参数的校验规则。

Description

数据校验方法、装置、设备以及存储介质
技术领域
本申请涉及互联网技术领域,具体涉及页面交互领域和数据校验领域,更具体地涉及一种数据校验方法、装置、设备以及存储介质。
背景技术
为了实现线上功能,线上产品(例如应用程序、小程序、网站等)一般都具有多个业务逻辑,该业务逻辑需要以用户通过交互界面输入的数据作为输入参数。其中,通常需要对输入的数据进行校验以保证数据的正确性,保证业务逻辑的正常运行。
相关技术中,一般通过构建基于注解类的实例来进行校验,每个注解类对应一个传入数据或一个校验规则。随着业务逻辑的复杂化,注解类会一直膨胀,不利于校验规则的维护和变更。
发明内容
提供了一种便于实施且便于维护的数据校验方法、装置、设备以及存储介质。
根据第一方面,提供了一种数据校验方法,包括:获取传入数据,该传入数据包括第一参数名和针对第一参数名的参数值;基于第一参数名,确定以针对第一参数的参数值作为输入参数的业务对象;确定业务对象是否具有目标注解,该目标注解包括校验表达式;以及在业务对象具有目标注解的情况下,根据校验表达式校验传入数据,其中,校验表达式用于指示业务对象的输入参数的校验规则。
根据第二方面,提供了一种数据校验装置,包括:数据获取模块,用于获取传入数据,该传入数据包括第一参数名和针对第一参数名的参数值;对象确定模块,用于基于第一参数名,确定以针对第一参数名的参数值作为输入参数的业务对象;注解确定模块,用于确定业务对象是否具有目标注解,该目标注解包括校验表达式;以及参数校验模块,用于在业务对象具有目标注解的情况下,根据校验表达式校验传入数据,其中,校验表达式用于指示业务对象的所有输入参数的校验规则。
根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行前文描述的数据校验方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行前文描述的数据校验方法。
根据第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现前文描述的数据校验方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请实施例的数据校验方法、装置、设备和存储介质的应用场景图;
图2是根据本申请实施例的数据校验方法的流程示意图;
图3是根据本申请实施例的确定以传入数据作为输入参数的业务对象的原理示意图;
图4是根据本申请实施例的确定业务对象是否具有目标注解的原理示意图;
图5是根据本申请实施例的根据校验表达式校验传入数据的流程示意图;
图6是根据本申请实施例的数据校验装置的结构框图;以及
图7是用来实现本申请实施例的数据校验方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请提供了一种数据校验方法。该方法从终端获取传入数据,该传入数据包括第一参数名和针对第一参数名的参数值。获取到传入数据后,基于第一参数名,确定多个预定义的业务对象中以针对第一参数名的参数值作为输入参数的业务对象。在确定的业务对象具有包括校验表达式的目标注解的情况下,根据目标注解中的校验表达式对传入数据进行校验,以确定传入数据是否满足预先规定的输入参数的参数定义内容,例如是否满足参数类型的规定、参数长度的规定等。其中,校验表达式用于指示业务对象的输入参数的校验规则。
图1是根据本申请实施例的数据校验方法、装置、设备和存储介质的应用场景图。
如图1所示,本申请实施例的场景100包括用户110、终端设备120和服务器130。终端设备120与服务器130之间例如可以通过网络进行交互。网络可以包括各种连接类型,例如有线通信网络或无线通信网络。
终端设备120例如可以为具有处理功能和显示功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。示例性地,终端设备120可以安装有各种客户端应用,且终端设备120例如可以向用户110提供交互界面,以向用户110显示需要输入的数据的参数名。用户110例如可以通过输入操作(例如使用鼠标、键盘或触控笔等输入设备对交互界面的操作或者触控操作)向终端设备120提供输入数据。
服务器130例如可以为具有处理功能,用于向终端设备120中安装的客户端应用提供各种服务的服务器。示例性地,该服务器130例如可以为应用程序服务器、分布式系统的服务器,或者是结合了区块链的服务器。示例性地,该服务器130例如还可以为虚拟服务器或云服务器等。
示例性地,服务器130例如可以设置有便于终端设备120调用的接口,该接口中封装有业务逻辑;或者该服务器130例如可以预先存储有业务逻辑,业务逻辑用于向终端设备120提供数据录入服务、账户注册服务、信息查询服务等。相应地,用户110向终端设备提供的输入数据可以为需要录入的数据、注册账户的账号和密码、信息查询的关键词等。如图1所示,终端设备120在接收到用户提供的输入数据后,例如可以根据该输入数据向服务器130发送传入数据,服务器130例如可以对传入数据进行校验,确定该传入数据是否满足业务逻辑的输入参数的参数定义内容。
在一实施例中,如图1所示,该应用场景100例如还可以包括数据库140,服务器130例如具有数据库140的访问权限。该数据库140用于存储录入的数据、注册的账户信息或需查询的数据等。服务器130通过对数据库140的访问从数据库140中读取数据或往数据库140中写入数据。
需要说明的是,本申请实施例所提供的数据校验方法一般可以由服务器130执行。相应地,本申请实施例所提供的数据校验装置一般可以设置在服务器130中。
应该理解,图1中的终端设备、服务器和数据库的数目和类型仅仅是示意性的。根据实现需要,可以具有任意数目和类型的终端设备、服务器和数据库。
以下将结合图1,通过图2~图5对本申请实施例所提供的数据校验方法进行详细描述。
图2是根据本申请实施例的数据校验方法的流程示意图。
如图2所示,该实施例的数据校验方法200包括操作S210~操作S240。
在操作S210,获取传入数据,该传入数据包括第一参数名和针对第一参数名的参数值。
根据本申请的实施例,该传入数据例如可以由终端设备对用户提供的输入数据打包封装后发送给服务器。
根据本申请的实施例,终端设备展示的交互界面例如可以显示有提示用户提供输入数据的第一参数名,用户根据第一参数名输入的数据为针对第一参数名的参数值。因此,该传入数据例如可以包括第一参数名以及用户根据第一参数名输入的参数值,第一参数名和针对第一参数名的参数值可以以键值对的形式封装为传入数据。示例性地,在用户注册账户的应用场景中,第一参数名可以包括“账户”和“密码”,其中,针对“账户”的参数值例如可以为“XXXX”,针对“密码”的参数值例如可以为“YYYYYYYY”。
根据本申请的实施例,传入数据例如还可以包括终端设备提供的交互界面的统一资源定位符(Uniform Resource Locator,URL)。在交互界面为小程序提供的界面时,传入数据例如可以包括交互界面的访问路径,以便于根据该URL或访问路径确定以传入数据作为输入参数的业务对象。其中,终端设备提供的交互界面向用户提供有添加输入数据的输入框。
根据本申请的实施例,传入数据例如还可以包括生成交互界面的业务逻辑所属方法的方法名等,以便于根据该方法名确定以传入数据作为输入参数的业务对象。
在操作S220,基于第一参数名,确定以针对第一参数名的参数值作为输入参数的业务对象。
根据本申请的实施例,操作S220可以确定包括传入数据中的所有第一参数名的业务逻辑为业务对象。
根据本申请的实施例,在传入数据包括URL或访问路径的情况下,可以确定URL或访问路径所调用的预定义接口为业务对象。或者也可以是确定调用的预定义接口对应的业务逻辑为业务对象。示例性地,在传入数据不包括URL或访问路径的情况下,例如还可以根据传递传入数据的URL或访问路径来确定调用的预定义接口。
根据本申请的实施例,在传入参数包括生成交互界面的业务逻辑所属方法的方法名的情况下,确定业务逻辑所属的第一方法调用的第二方法的业务逻辑为业务对象。
在操作S230,确定业务对象是否具有目标注解,目标注解包括校验表达式。
根据本申请的实施例,校验表达式例如可以指示业务对象的输入参数的校验规则。例如,该校验表达式可以指示至少一个信息对,每个信息对应一个输入参数的参数名和该一个输入参数的校验逻辑构成。例如,在参数名为“账号”,校验逻辑为“不小于5个字符”的情况下,校验表达式可以表示为:账号≥5个字符。为了便于区分,下文采用第二参数名的描述来指示输入参数的参数名。
示例性地,校验表达式指示的校验规则可以针对业务对象的所有输入参数中,需要校验的输入参数。通过该校验表达式,能够获得业务对象所有需要校验的输入参数的校验规则。例如,在业务对象的所有需要进行校验的第二参数名为“账号”和“密码”,针对账号的校验逻辑为“不小于5个字符”,针对密码的校验逻辑为“不小于8个字符”的情况下,校验表达式可以表示为:账号≥5个字符and密码≥8个字符。
根据本申请的实施例,确定业务对象是否具有目标注解例如可以先确定业务对象是否具有注解。在确定有注解的情况下,通过对注解进行解析,确定注解是否为目标注解。
示例性地,该实施例可以通过解析注解,并检测注解中是否具有运算符来确定注解是否为目标注解。在检测到注解中具有运算符的情况下,确定注解为目标注解。其中,运算符例如可以包括:关系运算符(例如“==”、“!=”、“>”、“<”等)、逻辑运算符(例如“and”、“or”、“!”等)、条件运算符(例如if、else等)、正则表达式(例如规定输入数据由多少位的数字和/或字母组成)或自定义的任意运算符等。
根据本申请的实施例,目标注解例如可以是预设注解类的实例对象,该实施例可以通过检测注解中是否具有预设注解类的类名来确定注解是否为目标注解。在注解中具有预设注解类的类名的情况下,确定注解为目标注解。
在操作S240,在业务对象具有目标注解的情况下,根据校验表达式校验传入数据。
根据本申请的实施例,在确定业务对象具有目标注解后,可以根据目标注解中指示校验规则的校验表达式来校验传入数据。例如可以将传入数据中的第一参数值代入校验表达式,确定校验表达式是否成立。若校验表达式成立,则传入数据校验成功,若校验表达式不成立,则传入数据校验失败。
示例性地,对于前述表达式“账号≥5个字符and密码≥8个字符”,将传入数据中的第一参数名“账号”的参数值“XXXX”和第一参数名“密码”的参数值“YYYYYYYY”代入该表达式,得到“XXX≥5个字符and YYYYYYYY≥8个字符”的表达式,由于该表达式不成立,因此确定传入数据校验失败,确定用户提供的输入数据不满足需求。
综上可知,本申请实施例的数据校验方法,通过为业务对象添加指示校验规则且根据预设模板生成的校验表达式,可以依据校验表达式对传入数据进行校验,而无需调用多个模板进行校验。再者,由于注解表达式可以指示校验规则,因此,通过更改校验表达式可以引入新的输入参数或引入新的校验规则,而无需增加新的模板。因此,可以避免随着业务对象的增加,模板膨胀所导致的业务对象的校验规则和注解难以维护的情况。
示例性地,校验表达式例如可以由注解类实例化得到,因此本申请实施例提供的数据校验方法无需调用多个注解类进行校验。因此,可以避免随着业务对象的增加,注解类膨胀所导致的业务对象的校验规则和注解难以维护的情况。
根据本申请的实施例,由于校验表达式可以指示多个输入参数的校验规则,无需为每个校验规则或为每个输入参数添加一个注解,因此不同业务对象的目标注解可以通过依据同一个预设模板得到。从而本申请可以通过预定义一个模板来实现对多个业务对象的目标注解的添加。
根据本申请的实施例,注解表达式例如可以为Spring表达式(Spring ExpressionLanguage,SpEL),该注解表达式支持标准数学运算符、关系运算符、逻辑运算符、集合和正则表达式等。采用该Spring表达式,可以节省大量的Java代码,使得用于实现数据校验方法的代码更为简洁,便于维护。
图3是根据本申请实施例的确定以传入数据作为输入参数的业务对象的原理示意图。
如图3所示的原理示意300,确定以针对第一参数名的参数值作为输入参数的业务对象的操作例如可以先确定传入数据所针对的统一资源定位符(URL 301)。在确定URL 301之后,可以确定该URL所调用的接口302。最终确定与接口302具有映射关系的业务逻辑303为以针对第一参数名的参数值作为输入参数的业务对象。
示例性地,传入数据所针对的URL 301例如可以是传入数据中包括的URL,或者可以是传递传入数据的URL。在确定与接口具有映射关系的业务逻辑时,例如可以确定针对接口中定义的方法的业务逻辑为具有映射关系的业务逻辑。其中,在通过调用URL所调用的接口时,可以实现与接口具有映射关系的业务逻辑的运行。
根据本申请的实施例,服务器还可以根据获取的传入数据,确定终端设备提交传入数据时所调用的接口。随之确定与提交传入数据的接口具有映射关系的业务逻辑为以针对第一参数名的参数值作为输入参数的业务对象。其中,可以根据传入数据携带的接口标识,确定提交传入数据时所调用的接口。
图4是根据本申请实施例的确定业务对象是否具有目标注解的原理示意图。
在一实施例中,目标注解根据预设模板生成,即目标注解通过将校验规则中的参数(例如待校验参数的参数名)代入预设模板生成。确定业务对象是否具有目标注解的操作例如可以包括:以预设模板的模板名为切入点拦截针对业务对象的业务代码的运行;以及在业务代码的运行被拦截的情况下,确定业务对象具有目标注解。
示例性地,目标注解可以为预设注解类的实例,目标注解通过实例化预设注解类生成,目标注解可以调用注解类的方法。相应地,拦截业务代码的运行时,以预设注解类的类型为切入点。
在一实施例中,如图4所示的原理示意400,可以采用拦截器401对业务对象中业务逻辑的运行进行拦截。其中,在拦截时,以注解类名402作为切入点,且该拦截可以是在业务逻辑的业务代码403运行之前进行。其中,业务代码403可以包括多个代码段1~n。
示例性地,拦截器401例如可以采用面向切面编程(Aspect OrientedProgramming,AOP)拦截器。该拦截器401的通知(Advice)类例如可以采用before,以在业务对象的业务代码运行之前执行拦截操作。该通知用于定义切面做什么。该拦截器401的切入点用于定义切面发生在哪里,切入点一般为某个类或方法的名称,在业务代码中主要体现为切入点表达式。切入点和通知类构成拦截器401的切面。在具体实施例中,若预先定义了注解类CheckParams,则可以通过在业务代码前插入以下代码来实现对业务代码的运行的拦截。
public class ParamCheckAspect{
@Pointcut(“@annotation(……,CheckParams)”)
@before(“paramCheckAspect()”)
通过此方式,在服务器获取到传入数据,并在运行业务对象的业务代码的起始阶段,通过调用拦截器可以先检测业务对象是否具有注解类CheckParams的实例化注解,若具有该注解类CheckParams的实例化注解,则确定业务对象具有目标注解,并根据目标注解中的校验表达式对传入数据进行校验。否则,确定业务对象不具有目标注解,继续运行业务对象的业务代码。
根据本申请的实施例,通过以预设模板的模板名为切入点拦截业务代码的运行,可以在业务对象具有目标注解时先根据校验表达式校验传入数据。便于在传入数据校验成功的情况下再运行业务代码,从而可以保证业务代码的顺利运行,保证传入数据的合理性,便于传入数据的管理和维护。
图5是根据本申请实施例的根据校验表达式校验传入数据的流程示意图。
在一实施例中,在根据目标注解的校验表达式校验传入数据时,例如可以采用Java的反射机制来获取到业务对象的输入参数的参数名,以根据该参数名与传入数据中针对第一参数名的参数值一一对应地代入至校验表达式。示例性地,还可以在得到第二参数名后,采用解析器来对校验表达式,以实现将参数值代入校验表达式,并确定校验表达式是否成立的目的。因此,如图5所示,根据校验表达式校验传入数据的操作可以包括操作S541~操作S545。
在操作S541,采用反射机制获取输入参数的第二参数名和校验表达式。
根据本申请的实施例,通过反射机制,在Java程序的运行中,能够反射得到某个类的所有属性和方法。在通过反射机制反射得到属性和方法时,可以首先加载相应类的字节码至内存中,该字节码可以为通过对Java源代码编译而得到的.class文件。在此基础上可以反射得到字节码中的构造函数、方法以及变量等。
示例性地,在业务对象为业务逻辑(即业务方法时),反射机制可以通过反射实例化得到业务对象的方法类的字节码,得到该业务对象中的第二参数名和参数类型等。类似地,反射机制可以通过反射实例化得到目标注解的注解类的字节码,得到变量值,该变量值即为校验表达式。
根据本申请的实施例,由于通过反射机制从业务对象的方法类的字节码中得到的信息不仅包括第二参数名,还包括参数类型及该方法类的其他属性。本申请实施例在采用反射机制获取输第二参数名时,可以先采用反射机制获取到输入参数的参数信息,再调用预定义的参数名获取方法,从参数信息中获取第二参数名。其中,参数信息包括参数名和参数类型,通过调用预定义的参数名获取方法,可以从反射到的类的所有属性信息中挑选得到第二参数名。因此,可以在解析校验表达式时,便捷的将传入数据代入校验表达式,而不受除参数名外的其他属性的干扰。其中,参数名获取方法例如可以采用for循环对反射得到的参数信息进行遍历,从参数信息中挑选得到符合参数名规则的字段。
根据本申请的实施例,在业务对象的输入参数为多个的情况下,该实施例还可以将获取的第二参数名构成参数名列表。相应地,该实施例也可以采用反射机制从传入数据中获取到待校验的参数值列表。
在操作S542,根据传入数据和第二参数名解析校验表达式。
在操作S543,确定传入数据是否满足校验表达式。
根据本申请的实施例,可以将传入数据和获取的第二参数名输入预定义解析器,调用并运行该预定义解析器来实现对校验表达式的解析。该预定义解析器可以返回true或false的运行结果。在预定义解析器返回的运行结果为true时,确定传入数据满足校验表达式。相反,在预定义解析器返回的运行结果为false时,确定传入数据不满足校验表达式。
示例性地,具体可以根据参数名数组和参数值列表来解析校验表达式。即将参数名数组和参数值列表作为预定义解析器的输入,通过预定义解析器对校验表达式进行解析运行,确定运行结果。
示例性地,可以预先定义解析类,该解析类具有根据参数名将参数值一一对应的代入校验表达式的业务逻辑,以及判断校验表达式是否成立的业务逻辑。通过实例化该解析类,可以得到解析器。
根据本申请的实施例,在用户通过输入操作向终端设备提供的输入数据为多组数据时,传入数据包括针对第一参数名的参数值数组。该多个参数值数组包括多个元素,多个元素中的每个元素对应多组数据中的一组数据,且该每个元素包括针对第一参数名的一条参数值。例如,若第一参数名包括“用户”和“年龄”,则多组数据中的每组数据包括一个用户名和该一个用户名指示的用户的年龄,相应地,每个元素包括的一条参数值由一个用户名和用户名指示的用户的年龄构成。此种情况下,在对传入数据进行校验时,需要对每条参数值进行校验。因此,操作S542例如可以包括循环执行的以下操作,直至参数值数组被遍历完:遍历参数值数组,以获得多个元素中的一个元素;以及根据获得的元素和第二参数名解析校验表达式,以确定获得的元素包括的参数值是否满足校验表达式。其中,操作S543仅在多个元素包括的参数值均满足校验表达式的情况下,才确定传入数据满足校验表达式。其中,根据获得的元素和第二参数名解析校验表达式的方法与前文通过解析器实现解析的方法类似,在此不再赘述。
在操作S544,在传入数据满足校验表达式的情况下,确定传入数据校验成功。
在操作S545,在传入数据不满足校验表达式的情况下,确定传入数据校验失败。
在一实施例中,如图5所示,根据校验表达式校验传入数据的操作还可以包括操作S546,确定传入数据中针对第一参数名的参数值的个数与第二参数名的个数是否相等。在传入数据中针对第一参数名的参数值的个数与第二参数名的个数相等的情况下,才执行根据传入数据和第二参数名解析校验表达式的操作。通过该操作S546的设置,可以保证对校验表达式的正确解析,从而可以保证得到的校验结果的准确性。其中,传入数据针对第一参数名的参数值的个数具体可以为反射得到的待校验的参数值列表中参数值的个数,第二参数名的个数为反射得到的参数名数据中第二参数名的个数。
在一实施例中,根据校验表达式校验传入数据的操作例如还可以包括确定通过反射机制获取到的参数值列表是否为空。若该列表组为空,则直接结束数据校验。
示例性地,在参数值列表为空的情况下,该实施例可以向终端设备反馈提示信息,以提示终端设备的用户输入与显示的参数名对应的参数值。
根据本申请的实施例,在传入数据包括针对第一参数名的参数值数组的情况下,操作S546可以与操作S542融合为同一个循环操作,且具体为在确定获得的元素包括的参数值个数与第二参数名的个数是否相等。在获得的元素包括的参数值个数与第二参数名的个数相等的情况下,才执行根据获得的元素和第二参数名解析校验表达式,以确定获得的元素包括的参数值是否满足校验表达式的操作。该实施例可以保证对校验表达式的正确解析,从而保证得到的校验结果的准确性。
在一实施例中,根据校验表达式校验传入数据的操作还可以包括操作S547,发送提示信息。
根据本申请的实施例,该操作S547例如可以在操作S545之后执行,以在传入数据中的参数值校验失败的情况下,使得终端设备通过显示该提示信息来提示用户对输入的参数值进行修改。
示例性地,目标注解除了校验表达式外,例如还可以包括提示信息,该提示信息用于提示更改传入数据。该实施例在确定预定义解析器返回的运行结果为指示校验表达式不成立的false时,例如可以抛出非法参数异常(Illegal Argument Expression),并将目标注解中的提示信息后反馈给终端设备。
示例性地,该目标注解中的提示信息例如可以与校验表达式相对应。例如,在输入参数中第一参数名包括“name”和“age”,校验表达式为“user.name!=null and user.ag>20”时,提示信息errorMsg可以为“用户名不可为null,且年龄需要大于20”。通过服务器向终端设备发送该提示信息,终端设备可以显示该提示信息,以向用户更改输入的参数值提供参考。
示例性地,在目标注解中没有提示信息时,可以调用预定义的提示信息生成方法,以反射得到的校验表达式作为输入,生成预设提示信息。由于该预设提示信息依据校验表达式生成,因此同样可以起到向用户更改输入的参数值提供参考的作用。
示例性地,预定义的提示信息生成方法除了以校验表达式作为输入外,例如还可以同时以得到的参数值和参数名作为输入,以使得生成的提示信息中包括参数名与参数值的对应关系,便于用户依据该对应关系确定不符合校验规则的参数值,起到向用户更改输入的参数值提供更丰富的参考信息的作用。
根据本申请的实施例,在确定通过反射机制获取到的参数值列表为空时,或在针对第一参数名的参数值的个数与第二参数名的个数不相等的情况下,也可以通过操作S547发送提示信息。该情况下,提示信息可以与校验失败的情况下发送的提示信息相同,或者,也可以不同。例如,在参数值数组为空时,反馈的提示信息例如可以为用于提示输入参数值的信息。在参数值的个数与参数名的个数不相等的情况下,反馈的提示信息例如可以为用于提示输入预定数量个参数值的信息。此处的预定数量与业务对象中包括的参数名的个数相等。
以下将结合图6,对本申请实施例的用于执行数据校验方法的数据校验装置进行详细描述。
图6是根据本申请实施例的数据校验装置的结构框图。
如图6所示,数据校验装置600例如可以包括数据获取模块610、对象确定模块620、注解确定模块630和参数校验模块640。
数据获取模块610用于获取传入数据,该传入数据包括第一参数名和针对第一参数名的参数值。在一实施例中,数据获取模块610用于执行前述描述的操作S210,在此不再赘述。
对象确定模块620用于基于第一参数名,确定以针对第一参数名的参数值作为输入参数的业务对象。在一实施例中,对象确定模块620用于执行前文描述的操作S220,在此不再赘述。
注解确定模块630用于确定业务对象是否具有目标注解,该目标注解包括校验表达式。在一实施例中,注解确定模块630用于执行前文描述的的操作S230,在此不再赘述。
参数校验模块640用于在业务对象具有目标注解的情况下,根据校验表达式校验传入数据。在一实施例中,参数校验模块640用于执行前文描述的操作S240,在此不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时可以实现上述任意实施例的方法。
如图7所示,是实现根据本申请实施例的数据校验方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图7所示,该电子设备700包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器701为例。
存储器702即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的数据校验方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的数据校验方法。
存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的数据校验方法对应的程序指令/模块(例如,附图6所示的数据获取模块610、对象确定模块620、注解确定模块630和参数校验模块640)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据校验方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储用于实现数据校验方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至实现数据校验方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现数据校验方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图7中以通过总线连接为例。
输入装置703可接收输入的数字或字符信息,以及产生与实现数据校验方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过为业务对象添加指示校验规则且由注解类实例化得到的校验表达式,可以依据校验表达式对传入数据进行校验,而无需调用多个注解类进行校验。再者,由于注解表达式可以指示校验规则,因此,通过更改校验表达式可以引入新的输入参数或引入新的校验规则,而无需增加新的注解类。因此,可以避免随着业务对象的增加,注解类膨胀所导致的业务对象的校验规则和注解难以维护的情况。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (10)

1.一种数据校验方法,包括:
获取传入数据,所述传入数据包括第一参数名和针对所述第一参数名的参数值;
基于所述第一参数名,确定以针对所述第一参数名的参数值作为输入参数的业务对象;
确定所述业务对象是否具有目标注解,所述目标注解包括校验表达式;以及
在所述业务对象具有所述目标注解的情况下,根据所述校验表达式校验所述传入数据,
其中,所述校验表达式用于指示业务对象的输入参数的校验规则;
其中,根据所述校验表达式校验所述传入数据包括:
采用反射机制获取所述输入参数的第二参数名和所述校验表达式;
根据所述传入数据和所述第二参数名解析所述校验表达式,以确定所述传入数据是否满足所述校验表达式;以及
在所述传入数据满足所述校验表达式的情况下,确定所述传入数据校验成功,以运行针对所述业务对象的业务代码;
其中,所述传入数据包括针对所述第一参数名的参数值数组,所述参数值数组包括多个元素,所述多个元素中的每个元素包括针对所述第一参数名的一条参数值;根据所述传入数据和所述第二参数名解析所述校验表达式包括循环执行的以下操作,直至所述参数值数组被遍历完:
遍历所述参数值数组,以获得所述多个元素中的一个元素;以及
根据获得的元素和所述第二参数名解析所述校验表达式,以确定所述获得的元素包括的参数值是否满足所述校验表达式,
其中,在所述多个元素包括的参数值均满足所述校验表达式的情况下,确定所述传入数据满足所述校验表达式。
2. 根据权利要求1所述的方法,其中,所述目标注解基于预设模板生成,所述确定所述业务对象是否具有目标注解包括:
以所述预设模板的模板名为切入点拦截针对所述业务对象的业务代码的运行;以及
在所述业务代码的运行被拦截的情况下,确定所述业务对象具有所述目标注解。
3.根据权利要求1所述的方法,其中,根据所述传入数据和所述第二参数名解析所述校验表达式包括:
在所述针对所述第一参数名的参数值的个数与所述第二参数名的个数相等的情况下,根据所述传入数据和所述第二参数名解析所述校验表达式。
4.根据权利要求1所述的方法,其中,根据获得的元素和所述第二参数名解析所述校验表达式包括:
在确定获得的元素包括的参数值的个数与所述第二参数名的个数相等的情况下,根据获得的元素和所述第二参数名解析所述校验表达式。
5. 根据权利要求1所述的方法,其中,采用反射机制获取所述输入参数的第二参数名包括:
采用反射机制获取所述输入参数的参数信息,所述参数信息包括所述第二参数名和参数类型;以及
调用预定义的参数名获取方法,从所述参数信息中获取所述第二参数名。
6. 根据权利要求1所述的方法,还包括:
在所述传入数据不满足所述校验表达式的情况下,确定所述传入数据校验失败;以及
在所述目标注解包括用于提示更改传入数据的提示信息的情况下,发送所述提示信息,
在所述目标注解不包括用于提示更改传入数据的提示信息的情况下,发送包括所述校验表达式的预设提示信息。
7. 根据权利要求1所述的方法,其中,确定以所述传入数据作为输入参数的业务对象包括:
确定所述传入数据所针对的统一资源定位符;以及
确定与所述统一资源定位符所调用的接口具有映射关系的业务逻辑,作为以针对所述第一参数名的参数值作为输入参数的业务对象。
8.一种数据校验装置,包括:
数据获取模块,用于获取传入数据,所述传入数据包括第一参数名和针对所述第一参数名的参数值;
对象确定模块,用于基于所述第一参数名,确定以针对所述第一参数名的参数值作为输入参数的业务对象;
注解确定模块,用于确定所述业务对象是否具有目标注解,所述目标注解包括校验表达式;以及
参数校验模块,用于在所述业务对象具有所述目标注解的情况下,根据所述校验表达式校验所述传入数据,
其中,所述校验表达式用于指示业务对象的输入参数的校验规则;
其中,所述参数校验模块包括:
获取单元,用于采用反射机制获取所述输入参数的第二参数名和所述校验表达式;
解析单元,用于根据所述传入数据和所述第二参数名解析所述校验表达式,以确定所述传入数据是否满足所述校验表达式;以及
运行单元,用于在所述传入数据满足所述校验表达式的情况下,确定所述传入数据校验成功,以运行针对所述业务对象的业务代码;
其中,所述传入数据包括针对所述第一参数名的参数值数组,所述参数值数组包括多个元素,所述多个元素中的每个元素包括针对所述第一参数名的一条参数值;
所述解析单元,还用于循环执行的以下操作,直至所述参数值数组被遍历完:遍历所述参数值数组,以获得所述多个元素中的一个元素;以及根据获得的元素和所述第二参数名解析所述校验表达式,以确定所述获得的元素包括的参数值是否满足所述校验表达式,其中,在所述多个元素包括的参数值均满足所述校验表达式的情况下,确定所述传入数据满足所述校验表达式。
9. 一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
CN202011044885.7A 2020-09-28 2020-09-28 数据校验方法、装置、设备以及存储介质 Active CN112182037B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011044885.7A CN112182037B (zh) 2020-09-28 2020-09-28 数据校验方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011044885.7A CN112182037B (zh) 2020-09-28 2020-09-28 数据校验方法、装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN112182037A CN112182037A (zh) 2021-01-05
CN112182037B true CN112182037B (zh) 2024-03-29

Family

ID=73945684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011044885.7A Active CN112182037B (zh) 2020-09-28 2020-09-28 数据校验方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN112182037B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113821829B (zh) * 2021-01-07 2024-04-16 北京沃东天骏信息技术有限公司 一种数据校验的方法、装置和存储介质
CN114723532A (zh) * 2022-04-12 2022-07-08 广州有信科技有限公司 订单操作的限制方法、装置、设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343287B1 (en) * 1999-05-19 2002-01-29 Sun Microsystems, Inc. External data store link for a profile service
US6868413B1 (en) * 2001-05-10 2005-03-15 Networks Associates Technology, Inc. System and method for customizing and processing business logic rules in a business process system
EP1783647A2 (en) * 2005-10-10 2007-05-09 MediCel oy Database techniques for storing biochemical data items
CN106991023A (zh) * 2017-03-22 2017-07-28 深圳市彬讯科技有限公司 一种接口参数校验方法及组件
CN107145437A (zh) * 2016-03-01 2017-09-08 阿里巴巴集团控股有限公司 一种java注解测试方法及装置
CN108415834A (zh) * 2018-02-12 2018-08-17 平安科技(深圳)有限公司 注解后端校验方法、装置、计算机设备及存储介质
CN109558134A (zh) * 2017-09-27 2019-04-02 北京京东尚科信息技术有限公司 业务数据校验的方法和装置
CN110765422A (zh) * 2018-07-25 2020-02-07 北京京东尚科信息技术有限公司 一种参数校验方法和装置
CN111209014A (zh) * 2018-11-22 2020-05-29 北京京东尚科信息技术有限公司 一种参数校验的方法和装置
CN111339137A (zh) * 2020-02-19 2020-06-26 北京奇艺世纪科技有限公司 一种数据校验方法及装置
CN111680068A (zh) * 2020-06-02 2020-09-18 深圳乐信软件技术有限公司 一种校验方法、装置、设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343287B1 (en) * 1999-05-19 2002-01-29 Sun Microsystems, Inc. External data store link for a profile service
US6868413B1 (en) * 2001-05-10 2005-03-15 Networks Associates Technology, Inc. System and method for customizing and processing business logic rules in a business process system
EP1783647A2 (en) * 2005-10-10 2007-05-09 MediCel oy Database techniques for storing biochemical data items
CN107145437A (zh) * 2016-03-01 2017-09-08 阿里巴巴集团控股有限公司 一种java注解测试方法及装置
CN106991023A (zh) * 2017-03-22 2017-07-28 深圳市彬讯科技有限公司 一种接口参数校验方法及组件
CN109558134A (zh) * 2017-09-27 2019-04-02 北京京东尚科信息技术有限公司 业务数据校验的方法和装置
CN108415834A (zh) * 2018-02-12 2018-08-17 平安科技(深圳)有限公司 注解后端校验方法、装置、计算机设备及存储介质
CN110765422A (zh) * 2018-07-25 2020-02-07 北京京东尚科信息技术有限公司 一种参数校验方法和装置
CN111209014A (zh) * 2018-11-22 2020-05-29 北京京东尚科信息技术有限公司 一种参数校验的方法和装置
CN111339137A (zh) * 2020-02-19 2020-06-26 北京奇艺世纪科技有限公司 一种数据校验方法及装置
CN111680068A (zh) * 2020-06-02 2020-09-18 深圳乐信软件技术有限公司 一种校验方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112182037A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
US10846204B2 (en) Remediation of design time and runtime workflow errors
US10915702B2 (en) Methods and systems for validating multiple methods of input using a unified rule set
US11663110B2 (en) Analysis to check web API code usage and specification
US20200117692A1 (en) Systems and methods for web analytics testing and web development
WO2018113596A1 (zh) 应用程序审核操作权限处理方法、装置和存储介质
US20170046135A1 (en) Configurable Development Platform Integrating Heterogeneous Persistence Systems
JP7289334B2 (ja) コードをテストするための方法及び装置、電子機器、記憶媒体並びにコンピュータプログラム
CN111026470A (zh) 用于输入数据的验证和转换的系统和方法
CN112182037B (zh) 数据校验方法、装置、设备以及存储介质
US11063828B2 (en) Detecting software misconfiguration at a remote machine
CN111813623B (zh) 一种页面监控方法、装置、电子设备及存储介质
CN111475164B (zh) 组件依赖关系检测方法、装置以及电子设备
CN112269706B (zh) 接口参数校验方法、装置、电子设备以及计算机可读介质
US20210182416A1 (en) Method and system for secure access to metrics of time series data
CN111459813B (zh) 测试处理方法及装置
US9600596B2 (en) Parser wrapper class
Rattanapoka et al. An MQTT-based IoT cloud platform with flow design by Node-RED
US20220027214A9 (en) System and method for automated application programming interface generation
US11947677B2 (en) Dynamic taint tracking in abstract syntax tree interpreters
US20200167209A1 (en) Configurable Analytics For Microservices Performance Analysis
CN113885876A (zh) 一种参数校验方法、装置、存储介质及计算机系统
CN115380278A (zh) 对象属性动态验证
EP4030280A1 (en) Seamless lifecycle stability for extensible software features
US11250139B2 (en) Greybox fuzzing for web applications
US11741237B2 (en) Content-driven debugging by taint tracking along data flows

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant