CN113761588A - 一种数据校验方法、装置、终端设备及存储介质 - Google Patents

一种数据校验方法、装置、终端设备及存储介质 Download PDF

Info

Publication number
CN113761588A
CN113761588A CN202110127497.3A CN202110127497A CN113761588A CN 113761588 A CN113761588 A CN 113761588A CN 202110127497 A CN202110127497 A CN 202110127497A CN 113761588 A CN113761588 A CN 113761588A
Authority
CN
China
Prior art keywords
attribute
verification
annotation
interface
data
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
Application number
CN202110127497.3A
Other languages
English (en)
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 Jingdong Tuoxian Technology Co Ltd
Original Assignee
Beijing Jingdong Tuoxian 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 Jingdong Tuoxian Technology Co Ltd filed Critical Beijing Jingdong Tuoxian Technology Co Ltd
Priority to CN202110127497.3A priority Critical patent/CN113761588A/zh
Publication of CN113761588A publication Critical patent/CN113761588A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种数据校验方法、装置、终端设备及存储介质,其中该方法包括:响应于接口的调用请求,解析该请求中携带的入参数据,得到与接口对应的预设接口类的对象;获取预设接口类中的属性名称和属性注解,并获取对象中与属性名称对应的属性值;基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。通过将入参数据解析为预设接口类的对象,能够实现根据预设接口类中定义的属性注解,对对象中的属性值进行校验,进而实现对入参参数校验。与传统的采用校验框架进行校验相比,无需依赖第三发JAR包,故减少了大量的依赖注解,实现了校验工具的轻量级,同时也规避了由于JAR包升级困难导致的校验工具升级困难的问题。

Description

一种数据校验方法、装置、终端设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据校验方法、装置、终端设备及存储介质。
背景技术
当接口被调用者调用时,为保证入参数据符合接口的调用规范,存在对入参数据进行校验的需求。现有技术中,通常采用集成的校验框架(例如Spring自带的校验框架Validation等),对入参数据进行校验。
在实现本发明的过程中,发明人发现现有技术中至少存在以下技术问题:由于校验框架通常需要依赖较多的第三方JAR包,依赖注解较多,导致占用代码空间较大的问题;并且,当校验框架进行升级时,需要对依赖的JAR包进行版本升级或变更,导致升级困难。
发明内容
本发明实施例提供一种数据校验方法、装置、终端设备及存储介质,能够减少校验代码的占用代码空间,且升级更为便捷。
第一方面,本发明实施例提供了一种数据校验方法,包括:
响应于接口的调用请求,解析所述调用请求中携带的入参数据,得到与所述接口对应的预设接口类的对象;
获取所述预设接口类中定义的属性名称,和与所述属性名称对应的属性注解,并获取所述对象中与所述属性名称对应的属性值;
基于与所述属性注解对应的校验逻辑,对所述属性值进行校验,得到所述属性值的校验结果。
第二方面,本发明实施例提供了一种数据校验装置,包括:
参数解析模块,用以响应于接口的调用请求,解析所述调用请求中携带的入参数据,得到与所述接口对应的预设接口类的对象;
信息获取模块,用以获取所述预设接口类中定义的属性名称,和与所述属性名称对应的属性注解,并获取所述对象中与所述属性名称对应的属性值;
校验模块,用以基于与所述属性注解对应的校验逻辑,对所述属性值进行校验,得到所述属性值的校验结果。
第三方面,本发明实施例提供了一种终端设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所述的数据校验方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的数据校验方法。
本发明实施例提供的一种数据校验方法、装置、终端设备及存储介质,响应于接口的调用请求,解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象;获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值;基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。
通过将入参数据解析为预设接口类的对象,能够实现根据预设接口类中定义的属性注解,对对象中的属性值进行校验,进而实现对入参参数校验。与传统的采用校验框架进行校验相比,无需依赖第三发JAR包,故减少了大量的依赖注解,减少校验代码的占用代码空间,实现了校验工具的轻量级。同时,规避了由于依赖的第三方JAR包升级困难,导致的校验工具升级困难的问题,且面向对象的校验代码的适配性极高,对校验工具升级影响很小,使得校验工具升级更为便捷。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例一提供的一种数据校验方法流程图;
图2示出了本发明实施例二提供的一种数据校验方法流程图;
图3示出了本发明实施例三提供的一种数据校验方法流程图;
图4示出了本发明实施例四提供的一种数据校验方法流程图;
图5示出了本发明实施例五提供的一种数据校验装置结构示意图;
图6示出了本发明实施例六提供的一种终端设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
实施例一
图1示出了本发明实施例一提供的一种数据校验方法流程图。本发明实施例提供的数据校验方法可适用于,对被调用接口的入参数据进行校验的情况,例如对接口传输的文件类型数据、JSON字符串类型数据或XML字符串类型数据进行校验的情况。该方法可由数据校验装置来执行,该装置采用软件和/或硬件的方式实现,且数据校验装置优选是配置于终端设备中。
如图1所示,本发明实施例中提供的数据校验方法,包括如下步骤:
S110、响应于接口的调用请求,解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象。
JAVA是一种面向对象的编程语言,具有功能强大和简单易用的特征。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为,即每一对象是其状态和行为的封装。
本实施例中,可以通过基于JAVA开发工具包(JAVA Development Kit,JDK)开发的校验工具,来实现本实施例提供的数据校验方法,以进行对预设接口类和对象的处理。其中,校验工具可属于本发明实施例提供的数据校验装置,且可以以接口数据拦截器的形式进行呈现。
当调用者需要调用接口时,可以向被调用者发送携带有入参数据的调用请求,以使被调用者根据入参数据来执行接口对应的方法。为保证基于入参数据能成功执行接口对应的方法,被调用者可以对入参数据是否符合调用规范进行校验。在一些实现方式中,拦截器可响应于接口的调用请求,对调用请求进行拦截,对调用请求中的入参数据进行自动解析校验,并于校验通过后执行接口对应的方法。
在执行本实施例提供的数据校验方法之前,校验工具中可以预先定义一接口类,并在该预设接口类中定义参数格式信息;其中,参数格式信息可用于表征接口内各属性的规则规范。此外,校验工具中还可以对与定义的参数格式对应的解析代码进行存储。相应的,解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象,可以包括:通过解析代码对调用请求进行解析,得到符合参数格式的实际入参数据,并赋值给预先声明的预设接口类的对象,以得到与接口对应的预设接口类的对象。
本实施例中,通过解析调用请求中携带的入参数据,旨在转化为支持JAVA类的对象,能够实现转化为对象的解析代码皆可应用于此。通过将调用请求的入参数据,解析为预设接口类的对象,能够便于后续对预设接口类,以及对象的相关信息的获取,为数据校验奠定基础。
S120、获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值。
其中,在预设接口类中定义的参数格式信息,可以包括但不限于属性名称、各属性名称的属性注解等信息。其中,每个类中可以包括至少一种属性(例如学生类中可以包括性别、年龄和班级等属性),可以为每个属性进行命名,即为属性名称。其中,属性注解可以认为是,为属性名称设置的标签,且可用于表征对属性名称对应的属性值的校验范围(例如属性注解@NotNull表征的校验范围为,被注解的属性必须不为Null等)。
JAVA的反射(reflection)机制是一种动态获取程序信息以及动态调用对象的功能的机制。本实施例中,当校验工具拿到解析后的对象时,可以基于JAVA反射机制,获取到对象所属的预设接口类中定义的属性名称、与属性名称对应的属性注解,以及获取对象中与属性名称对应的属性值。
其中,基于JAVA反射机制获取属性名称、属性注解和属性值的过程,例如可以包括:首先,可以通过对象的getClass()等方法,得到对象所属的类的类对象;接着,可通过类对象的getFields()等方法确定预设接口类中定义的属性名称,可通过类对象的getAnnotations()等方法确定属性名称上的属性注解;最后可根据“对象.属性名称”等方法,获取对象中与属性名称对应的属性值。
通过JAVA反射机制能够获取解析得到的对象中的属性值,以及可用于对属性值进行校验的属性注解,实现了对未知类型JAVA对象的相关信息的获取,为数据校验奠定基础。
S130、基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。
其中,在预设接口类中定义属性注解之前,可对属性注解的校验逻辑进行实现。例如,针对属性注解@NotNull,可以采用if(null!=aa)等语句进行校验逻辑的实现,其中aa可表征对象中标注有@NotNull的属性名称的属性值。并且,校验工具可以对属性注解的校验逻辑进行存储。
由于属性注解和属性值均与属性名称具备对应关系,属性注解和属性值同样具备的对应关系。校验工具在获取到属性注解和与属性注解对应的属性值时,可从预先存储的校验逻辑中获取与属性注解对应的校验逻辑,并基于获取的校验逻辑,对对应的属性值进行校验,得到属性值的校验结果。此外,当待校验的属性值为至少一个时,可分别根据对应的属性注解的校验逻辑,对各属性值进行依次校验,得到各属性值的校验结果。
本发明实施例提供的一种数据校验方法,校验工具通过将入参数据解析为预设接口类的对象,能够实现根据预设接口类中定义的属性注解,对对象中的属性值进行校验,进而实现对入参参数校验。并且,校验工具可以依赖JDK进行开发得到,无需依赖第三方的JAR包,从而避免了注入大量的依赖注解,减少校验代码的占用代码空间,实现了校验工具的轻量级。同时,由于基于JDK开发的校验代码的适配性极高,校验工具对JDK版本依赖性非常低。当对校验工具进行升级时,无需对JDK进行对应的升级,与传统的对校验框架升级相比,规避了对依赖JAR包升级困难导致的校验工具升级困难的问题,使校验工具升级更为便捷。
实施例二
图2示出了本发明实施例二提供的一种数据校验方法流程图。本实施例在上述实施例基础上,对校验步骤进行优化,能够根据不同类型的属性注解,采用不同的获取方法获取校验逻辑,并根据获取的校验逻辑实现属性值的校验。并且,属性注解的类型可至少覆盖JDK基础类型、自主定义类型和业务扩展类型,从而大大提高了校验代码的通用性。进一步的,自主定义类型的属性注解,可支持自定义枚举类型的正则模板校验,从而校验工具能够支持多种类型数据的校验,使得通用校验更加简易。
参见图2,本发明实施例中提供的数据校验方法,包括如下步骤:
S210、响应于接口的调用请求,解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象。
S220、获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值。
S230、确定属性注解的注解类型。
本发明实施例中,预设接口类中定义的属性注解的类型,可以至少覆盖JDK校验注解、校验工具的自主注解,以及用户自定义校验注解。
其中,JDK校验注解可以认为是,JDK中自带的基础类型的注解。其中,校验工具的自主注解可以认为是,在开发校验工具过程中自定义的属性注解,并且校验工具中可存储有相应的校验逻辑。其中,用户自定义校验注解可以认为是,针对被调用接口实现复杂业务的情景,在校验工具中预先定义业务扩展类型的属性注解(可仅定义属性注解的接口类),并且定义的接口类可以通过调用外接的用户自定义校验逻辑进行具体实现。
S240、根据与注解类型对应的校验逻辑获取方式,获取与属性注解对应的校验逻辑。
其中,不同注解类型的校验逻辑存储于不同位置,可以根据注解类型从相应存储位置获取校验逻辑,以进行属性值的校验。其中,同一属性值可对应至少一个属性注解,并且属性注解可以为至少一种注解类型。当属性注解为多个时,可以实现基于多种校验逻辑对属性值进行校验;当注解类型为多种时,可以通过不同获取方式获取校验逻辑,并基于不同校验逻辑对属性值进行校验,从而大大提高了校验的灵活性。
在一些可选的实现方式中,若注解类型包括JDK基础类型,则根据与注解类型对应的校验逻辑获取方式,获取与属性注解对应的校验逻辑,包括:从原生的JDK注解校验逻辑中,获取与属性注解对应的校验逻辑。
在这些可选的实现方式中,JDK基础类型即为JDK中自带的基础类型的注解。当属性注解为JDK中自带的基础类型的注解时,可以直接从原生的JDK注解校验逻辑中,获取与属性注解对应的校验逻辑。
在一些可选的实现方式中,若注解类型包括自主定义类型,则根据与注解类型对应的校验逻辑获取方式,获取与属性注解对应的校验逻辑,包括:从自定义枚举类型的正则校验逻辑中,获取与属性注解对应的校验逻辑。
其中,自主定义类型即为在开发校验工具过程中自定义的属性注解。并且,自定义的属性注解的校验逻辑可以是正则模板校验逻辑,且当正则模板校验逻辑为至少一个时,可以用枚举类型的形式对正则模板校验逻辑进行存储。相应的,当注解类型包括自主定义类型时,可以从枚举的正则校验逻辑中,查找与属性注解对应的校验逻辑。
传统采用校验框架进行校验时,校验框架的性能较为单一,通常只对入参参数长度、非空等校验范围进行校验,而不支持自定义正则表达式这种校验方式,故不能使用校验框架进行自动正则模板校验。在需要通过正则表达式进行校验时,需要手动在每一个待校验接口中编写正则模板校验逻辑,导致人力物力资源消耗较大,校验成本较高。
而在这些可选的实现方式中,通过预先自定义大量正则校验逻辑,能够使校验工具自动获取与属性注解对应的校验逻辑,从而实现自动化的正则模板枚举校验,降低校验成本,提高校验工具的通用性。
在一些可选的实现方式中,若注解类型包括业务扩展类型,则根据与注解类型对应的校验逻辑获取方式,获取与属性注解对应的校验逻辑,包括:确定与业务扩展类型对应的校验接口,并调用校验接口;其中,校验接口实现有与属性注解对应的校验逻辑。
其中,业务扩展类型的校验注解,可以认为是在校验工具中预先定义的接口类。当属性注解为业务扩展类型时,可从预先定义的校验接口中,查找与属性注解对应的校验接口。当校验接口被调用时,可以基于用户自定义的与属性注解对应的校验逻辑,进行属性值校验。
在这些可选的实现方式中,通过预先自定义校验接口,能够实现对校验逻辑的扩展,从而满足不同复杂业务场景下的属性值校验。
此外,当通过调用校验接口完成属性值校验时,还可以将校验结果进行回调,并继续基于JDK基础类型,和/或自主定义类型的属性注解进行属性值校验;当基于JDK基础类型,和/或自主定义类型的属性注解完成属性值校验时,还可以继续调用校验接口,并继续基于外接的校验逻辑对属性值进行校验,从而大大提升了校验的灵活性。
S250、基于所获取的校验逻辑,对属性值进行校验,得到属性值的校验结果。
本发明实施例在上述实施例基础上,对校验步骤进行优化,能够根据不同类型的属性注解,采用不同的获取方法获取校验逻辑,并根据获取的校验逻辑实现属性值的校验。并且,属性注解的类型可至少覆盖JDK基础类型、自主定义类型和业务扩展类型,从而大大提高了校验代码的通用性。进一步的,自主定义类型的属性注解,可支持自定义枚举类型的正则模板校验,从而校验工具能够支持多种类型数据的校验,使得通用校验更加简易。
此外,本发明实施例与上述实施例提出的数据校验方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,且本实施例与上述实施例具有相同的有益效果。
实施例三
图3示出了本发明实施例三提供的一种数据校验方法流程图。本实施例在上述实施例基础上,对解析入参数据步骤进行优化,能够根据不同类型的入参数据,采用不同的解析方法进行解析,以得到符合预设接口类中定义的参数格式的对象,基于校验工具能够实现不同类型数据的校验,从而大大提高了校验代码的通用性。
如图3所示,本发明实施例中提供的数据校验方法,包括如下步骤:
S310、响应于接口的调用请求,确定调用请求中携带的入参数据的数据类型。
本实施例中,调用请求中的入参数据的数据类型,可以至少包括文件类型、JSON字符串类型或XML字符串类型。此外,各业务场景中接口的入参数据的数据类型皆可包含于本实施例中,在此不做穷举。
其中,确定调用请求中携带的入参数据的数据类型,包括:根据调用请求中携带的请求标识,确定调用请求中携带的入参数据的数据类型;和/或,根据接口的接口标识,确定调用请求中携带的入参数据的数据类型。
其中,校验工具可以提前设置请求标识-数据类型的对应关系,和/或设置接口标识-数据类型的对应关系。相应的,校验工具可以基于调用请求中携带的请求标识,和/或通过查找被调用接口的接口标识,从预设的对应关系中查找与请求标识和/或接口标识对应的数据类型。
S320、获取与接口对应的预设接口类的解析代码,并从解析代码中,确定与数据类型对应的目标解析代码。
其中,不同数据类型的入参数据,其对应的解析代码不同。在校验工具中,可以针对不同数据类型的入参数据,预先存储不同的解析代码。相应的,在确定入参数据的数据类型后,可以根据数据类型从解析代码中确定需要使用的目标解析代码,以进行入参数据解析。
S330、基于目标解析代码,对入参数据进行处理,以得到符合预设接口类中定义的参数格式的对象。
不同业务场景中,接口传输的入参数据的数据类型不同。例如,当业务场景为提取数据并存入数据库时,接口传输的入参数据的数据类型可以为文件类型;又如,当业务场景为系统间数据交互时,接口传输的入参数据的数据类型可以为JSON字符串类型,或XML字符串类型。
针对不同类型数据,基于目标解析代码进行解析的过程不同。其中,当数据类型为文件类型时,对入参数据进行解析的步骤可以为:通过文件后缀,确定文件类型;根据文件类型,对文件内的IO流数据进行记录转化。例如,当文件类型为Word类型时,可以查找Word文档中的表格,并对表格中的行列数据进行记录转化;又如,当文件类型为Excel时,可以直接将Word文档中行列数据进行记录转化。其中,当数据类型为JSON字符串类型或XML字符串类型,对入参数据进行解析的步骤可以为,基于JSON字符串或XML字符串中的特定字符或字符组合,对字符串进行解析。
通过在校验工具中,针对不同数据类型的入参数据,预先存储不同的解析代码,能够实现基于同一校验工具对不同类型数据进行校验,从而大大提高了校验代码的通用性。
S340、获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值。
S350、基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。
本发明实施例提供的一种数据校验方法,对解析入参数据步骤进行优化,能够根据不同类型的入参数据,采用不同的解析方法进行解析,以得到符合预设接口类中定义的参数格式的对象,基于校验工具能够实现不同类型数据的校验,从而大大提高了校验代码的通用性。此外,本发明实施例与上述实施例提出的数据校验方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,且本实施例与上述实施例具有相同的有益效果。
实施例四
图4示出了本发明实施例四提供的一种数据校验方法流程图。本实施例在上述实施例基础上,增加了对是否开启自动校验的判断步骤,能够实现在不希望进行自动校验的业务场景下,通过接口内部定义的功能代码执行特定的业务逻辑,提高了校验工具的适配场景。此外,还可以增加向调用者反馈提示信息的步骤,以使调用者基于将校验失败的属性值进行入参数据修正,进而可提高接口调用的成功率。
参见图4,本发明实施例中提供的数据校验方法,包括如下步骤:
S410、响应于接口的调用请求,判断接口的自动校验状态是否为开启状态。
其中,被调用接口的内部可以编写有自动校验状态的语句,且自动校验状态可以包括开启状态和未开启状态。校验工具可以响应于接口的调用请求,对接口内部的自动校验状态的语句进行判断。
S421、若否,则执行接口内部定义的功能代码。
其中,当自动校验状态的语句为未开启状态时,表征无需进行入参数据的解析和校验,可执行接口内部定义的功能代码。其中,接口内部定义的功能代码可以认为是,在执行接口对应的方法前,根据业务需求预先编写的具备其他功能的代码,例如可以为对入参数据记录的功能代码,又如可以为调用用户需求的校验工具的代码等,在此不做穷举。其中,当功能代码为空时,可直接执行接口对应的方法。
通过对接口的自动校验状态进行判断,可以实现在无需进行自动校验解析的情况下,执行接口内部定义的功能代码,从而丰富校验工具的应用场景。
S422、若是,则解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象。
其中,当自动校验状态的语句为开启状态时,可直接通过校验工具进行入参数据的自动解析校验。
S430、获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值。
S440、基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。
S450、根据校验失败的属性值生成提示信息,并将提示信息反馈至调用者。
本实施例中,当属性值不符合属性注解表征的校验范围时,可认为属性值不符合接口的调用规范。此时,可根据校验失败的属性值生成提示信息,并将提示信息反馈至调用者,以使调用者基于将校验失败的属性值进行入参数据修正,进而可提高接口调用的成功率。
本发明实施例在上述实施例基础上,增加了对是否开启自动校验的判断步骤,能够实现在不希望进行自动校验的业务场景下,通过接口内部定义的功能代码执行特定的业务逻辑,提高了校验工具的适配场景。此外,还可以增加向调用者反馈提示信息的步骤,以使调用者基于将校验失败的属性值进行入参数据修正,进而可提高接口调用的成功率。本发明实施例与上述实施例提出的数据校验方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,且本实施例与上述实施例具有相同的有益效果。
实施例五
图5示出了本发明实施例五提供的一种数据校验装置结构示意图。本发明实施例可适用于,对被调用接口的入参数据进行校验的情况,例如对接口传输的文件类型数据、JSON字符串类型数据或XML字符串类型数据进行校验的情况。通过本发明提供的数据校验装置,可实现上述实施例提供的数据校验方法。
如图5所示,本发明实施例中数据校验装置,包括:
参数解析模块510,用以响应于接口的调用请求,解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象;
信息获取模块520,用以获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值;
校验模块530,用以基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。
在一些可选的实现方式中,校验模块,包括:
注解类型确定单元,用以确定属性注解的注解类型;
检验逻辑获取单元,用以根据与注解类型对应的校验逻辑获取方式,获取与属性注解对应的校验逻辑;
校验单元,用以基于所获取的校验逻辑,对属性值进行校验。
在一些可选的实现方式中,若注解类型包括JDK基础类型,则校验逻辑获取单元,用以从原生的JDK注解校验逻辑中,获取与属性注解对应的校验逻辑。
在一些可选的实现方式中,若注解类型包括自主定义类型,则校验逻辑获取单元,用以从自定义枚举类型的正则校验逻辑中,获取与属性注解对应的校验逻辑。
在一些可选的实现方式中,若注解类型包括业务扩展类型,则校验逻辑获取单元,用以确定与业务扩展类型对应的校验接口,并调用校验接口;其中,校验接口实现有与属性注解对应的校验逻辑。
在一些可选的实现方式中,参数解析模块,包括:
数据类型确定单元,用以确定调用请求中携带的入参数据的数据类型;
解析代码获取单元,用以获取与接口对应的预设接口类的解析代码,并从解析代码中,确定与数据类型对应的目标解析代码;
参数解析单元,用以基于目标解析代码,对入参数据进行处理,以得到符合预设接口类中定义的参数格式的对象。
在一些可选的实现方式中,数据类型确定单元,具体用于:根据调用请求中携带的请求标识,确定调用请求中携带的入参数据的数据类型;和/或,根据接口的接口标识,确定调用请求中携带的入参数据的数据类型。
在一些可选的实现方式中,数据校验装置,还包括:
判断模块,用以在解析调用请求中携带的入参数据之前,判断接口的自动校验状态是否为开启状态;
接口代码执行模块,用于若自动校验状态为未开启状态,则执行接口内部定义的功能代码;
相应的,参数解析模块,用于若自动校验状态为开启状态,则解析调用请求中携带的入参数据。
在一些可选的实现方式中,数据校验装置,还包括:
反馈模块,用以在得到属性值的校验结果之后,根据校验失败的属性值生成提示信息,并将提示信息反馈至调用者。
本发明实施例提供的数据校验装置,与上述实施例提供的数据校验方法属于同一发明构思,未在本发明实施例中详尽描述的技术细节可参见上述实施例,并且本发明实施例与上述实施例具有相同的有益效果。
实施例六
图6示出了本发明实施例六提供的一种终端设备的硬件结构示意图。本发明实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,终端设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(Read-Only Memory,ROM)602中的程序或者从存储装置608加载到随机访问存储器(Random Access Memory,RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有终端设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许终端设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的终端设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本发明实施例提供的数据校验方法中限定的上述功能。
本发明实施例提供的终端与上述实施例提供的数据校验方法属于同一发明构思,未在本发明实施例中详尽描述的技术细节可参见上述实施例,并且本发明实施例与上述实施例具有相同的有益效果。
实施例七
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所提供的数据校验方法。
需要说明的是,本发明实施例上述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)或闪存(FLASH)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读存储介质可以是上述终端设备中所包含的,也可以是单独存在,而未装配入该终端设备中的。
上述终端设备存储承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备:
响应于接口的调用请求,解析调用请求中携带的入参数据,得到与接口对应的预设接口类的对象;获取预设接口类中定义的属性名称,和与属性名称对应的属性注解,并获取对象中与属性名称对应的属性值;基于与属性注解对应的校验逻辑,对属性值进行校验,得到属性值的校验结果。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如JAVA、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能页可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范样式的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (12)

1.一种数据校验方法,其特征在于,包括:
响应于接口的调用请求,解析所述调用请求中携带的入参数据,得到与所述接口对应的预设接口类的对象;
获取所述预设接口类中定义的属性名称,和与所述属性名称对应的属性注解,并获取所述对象中与所述属性名称对应的属性值;
基于与所述属性注解对应的校验逻辑,对所述属性值进行校验,得到所述属性值的校验结果。
2.根据权利要求1所述的方法,其特征在于,所述基于与所述属性注解对应的校验逻辑,对所述属性值进行校验,包括:
确定所述属性注解的注解类型;
根据与所述注解类型对应的校验逻辑获取方式,获取与所述属性注解对应的校验逻辑;
基于所获取的校验逻辑,对所述属性值进行校验。
3.根据权利要求2所述的方法,其特征在于,若所述注解类型包括JDK基础类型,则所述根据与所述注解类型对应的校验逻辑获取方式,获取与所述属性注解对应的校验逻辑,包括:
从原生的JDK注解校验逻辑中,获取与所述属性注解对应的校验逻辑。
4.根据权利要求2所述的方法,其特征在于,若所述注解类型包括自主定义类型,则所述根据与所述注解类型对应的校验逻辑获取方式,获取与所述属性注解对应的校验逻辑,包括:
从自定义枚举类型的正则校验逻辑中,获取与所述属性注解对应的校验逻辑。
5.根据权利要求2所述的方法,其特征在于,若所述注解类型包括业务扩展类型,则所述根据与所述注解类型对应的校验逻辑获取方式,获取与所述属性注解对应的校验逻辑,包括:
确定与所述业务扩展类型对应的校验接口,并调用所述校验接口;其中,所述校验接口实现有与所述属性注解对应的校验逻辑。
6.根据权利要求1所述的方法,其特征在于,所述解析所述调用请求中携带的入参数据,得到与所述接口对应的预设接口类的对象,包括:
确定所述调用请求中携带的入参数据的数据类型;
获取与所述接口对应的预设接口类的解析代码,并从所述解析代码中,确定与所述数据类型对应的目标解析代码;
基于所述目标解析代码,对所述入参数据进行处理,以得到符合所述预设接口类中定义的参数格式的对象。
7.根据权利要求6所述的方法,其特征在于,所述确定所述调用请求中携带的入参数据的数据类型,包括:
根据所述调用请求中携带的请求标识,确定所述调用请求中携带的入参数据的数据类型;和/或,
根据所述接口的接口标识,确定所述调用请求中携带的入参数据的数据类型。
8.根据权利要求1所述的方法,其特征在于,在所述解析所述调用请求中携带的入参数据之前,还包括:
判断接口的自动校验状态是否为开启状态;
若否,则执行所述接口内部定义的功能代码;
若是,则解析所述调用请求中携带的入参数据。
9.根据权利要求1所述的方法,其特征在于,在所述得到所述属性值的校验结果之后,还包括:
根据校验失败的属性值生成提示信息,并将所述提示信息反馈至调用者。
10.一种数据校验装置,其特征在于,包括:
参数解析模块,用以响应于接口的调用请求,解析所述调用请求中携带的入参数据,得到与所述接口对应的预设接口类的对象;
信息获取模块,用以获取所述预设接口类中定义的属性名称,和与所述属性名称对应的属性注解,并获取所述对象中与所述属性名称对应的属性值;
校验模块,用以基于与所述属性注解对应的校验逻辑,对所述属性值进行校验,得到所述属性值的校验结果。
11.一种终端设备,其特征在于,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的数据校验方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的数据校验方法。
CN202110127497.3A 2021-01-29 2021-01-29 一种数据校验方法、装置、终端设备及存储介质 Pending CN113761588A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110127497.3A CN113761588A (zh) 2021-01-29 2021-01-29 一种数据校验方法、装置、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110127497.3A CN113761588A (zh) 2021-01-29 2021-01-29 一种数据校验方法、装置、终端设备及存储介质

Publications (1)

Publication Number Publication Date
CN113761588A true CN113761588A (zh) 2021-12-07

Family

ID=78786538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110127497.3A Pending CN113761588A (zh) 2021-01-29 2021-01-29 一种数据校验方法、装置、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN113761588A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116346961A (zh) * 2023-05-30 2023-06-27 成方金融科技有限公司 金融报文处理方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116346961A (zh) * 2023-05-30 2023-06-27 成方金融科技有限公司 金融报文处理方法、装置、电子设备及存储介质
CN116346961B (zh) * 2023-05-30 2023-09-05 成方金融科技有限公司 金融报文处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN111291103A (zh) 接口数据的解析方法、装置、电子设备及存储介质
CN112684968A (zh) 页面展示方法、装置、电子设备和计算机可读介质
WO2022135547A1 (zh) 业务运行方法、装置、电子设备和计算机存储介质
CN111309304B (zh) 一种生成idl文件的方法、装置、介质和电子设备
US11818491B2 (en) Image special effect configuration method, image recognition method, apparatus and electronic device
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN113761588A (zh) 一种数据校验方法、装置、终端设备及存储介质
CN111488286B (zh) 一种Android模块独立开发的方法及装置
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
CN110704050B (zh) 模块初始化方法、装置、电子设备及计算机可读存储介质
CN111124627B (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN113391860A (zh) 服务请求处理方法、装置、电子设备及计算机存储介质
CN111414154A (zh) 前端开发的方法、装置、电子设备和存储介质
CN111124541A (zh) 一种配置文件的生成方法、装置、设备及介质
CN111309323B (zh) 参数初始化方法、装置和电子设备
CN109669720B (zh) 基于Promise的链式异步请求处理方法、装置及电子设备
CN111796865A (zh) 一种字节码文件修改方法、装置、终端设备及介质
CN113760382B (zh) 一种插件启动方法、装置、终端设备及存储介质
CN115374320B (zh) 文本匹配方法、装置、电子设备、计算机介质
CN114428823B (zh) 基于多维变量表达式的数据联动方法、装置、设备和介质
CN112256326B (zh) 信息的处理方法、装置、设备及存储介质
CN114047922A (zh) 用于预编译器的代码转换方法、装置、介质及设备
CN118036561A (zh) 轻量级标记语言文本转换方法、装置、电子设备与介质
CN113419716A (zh) 一种代码生成方法、装置、终端设备及存储介质
CN116382804A (zh) 应用运行方法、装置、介质及设备

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