CN111949274A - 参数校验器和基于结构体标签的字段校验方法 - Google Patents
参数校验器和基于结构体标签的字段校验方法 Download PDFInfo
- Publication number
- CN111949274A CN111949274A CN202011009761.5A CN202011009761A CN111949274A CN 111949274 A CN111949274 A CN 111949274A CN 202011009761 A CN202011009761 A CN 202011009761A CN 111949274 A CN111949274 A CN 111949274A
- Authority
- CN
- China
- Prior art keywords
- parameter
- verification
- check
- client
- field
- 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
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000012795 verification Methods 0.000 claims abstract description 71
- 230000002452 interceptive effect Effects 0.000 claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000003993 interaction Effects 0.000 abstract description 2
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Abstract
本发明公开了一种参数校验器和基于结构体标签的字段校验方法,属于字段校验领域。本发明中,参数校验器,包括解析器、校验处理器和错误提示处理组件;基于结构体标签的字段校验方法,包括:通过参数校验器接收客户端的原始交互数据;将所述原始交互数据发送至解析器;通过解析器解析原始交互数据的结构体标签内容,确定出校验处理器的类型,并选择一个该类型下的校验处理器;在选择出的校验处理器中初始化对应的参数校验句柄,通过参数校验句柄完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件;根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
Description
技术领域
本发明涉及字段校验领域,尤其涉及一种参数校验器和基于结构体标签的字段校验方法。
背景技术
传统的字段校验主要是通过对结构体中的每个字段,依次进行判断,由此校验整个结构体是否合法。
但实际上,大部分校验逻辑都较为相似,且不同结构体中的相同类型字段,校验规则也基本一致,故通过此方法进行校验,代码重用率低,校验过程繁琐,处理过程冗余,消耗了开发人员大量的时间。
发明内容
本发明的目的是提供一种参数校验器和基于结构体标签的字段校验方法,能够实现智能化、自动化、低代码地结构体字段有效性校验。
本发明解决其技术问题,采用的技术方案是:
本发明首先提出一种参数校验器,包括解析器、校验处理器和错误提示处理组件;
所述解析器,用于当接收客户端发送的原始交互数据时,解析原始交互数据的结构体标签内容,确定出校验处理器类型,并解析结构体中字段的类型和适用的校验规则,所述原始交互数据中至少包含待校验参数;
所述校验处理器,用于根据解析器解析出来的数据,对各个字段按照相应的校验规则执行校验逻辑,完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件;
所述错误提示处理组件,用于根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
进一步的是,所述解析器包括标签解析器以及结构与字段解析器,通过标签解析器解析原始交互数据的结构体标签内容,通过结构与字段解析器解析结构体中字段的类型和适用的校验规则。
进一步的是,所述待校验参数为客户端中的操作指令和客户端的状态信息。
进一步的是,所述校验处理器中包含有参数校验句柄,所述参数校验句柄包括通用校验规则的句柄和自定义校验规则的句柄,所述通用校验规则为email和/或URL的匹配规则。
进一步的是,当错误提示组件将与语种对应的标准提示信息返还至客户端时,同时将与该语种对应的标准提示信息传输至云端计算中心备份。
另外,本发明还提出一种基于结构体标签的字段校验方法,应用于所述的参数校验器,包括如下步骤:
步骤1、通过参数校验器接收客户端的原始交互数据;
步骤2、将所述原始交互数据发送至解析器;
步骤3、通过解析器解析原始交互数据的结构体标签内容,确定出校验处理器的类型,并选择一个该类型下的校验处理器;
步骤4、在选择出的校验处理器中初始化对应的参数校验句柄,通过参数校验句柄完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件;
步骤5、根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
本发明的有益效果是,通过上述参数校验器和基于结构体标签的字段校验方法,通过将检验规则的编写,转换为字段结构体标签的编写,使得开发者仅需编写一次对指定结构体标签的处理,即可在各结构体中多次使用,大大降低了开发人员的负担,提升了开发效率。
并且,把对各个字段有效性的校验逻辑,迁移到了参数校验器中,把开发人员对各字段的类型判断和对校验规则的匹配工作自动化、智能化,在充分利用golang语言的特性的情况下,大幅度减少了开发人员在进行字段校验逻辑实现时的简单重复性工作。
另外,本发明不仅支持使用者使用该方案校验一些通用的类型或是结构的参数有效性,还支持使用者利用标签对结构体的字段赋默认值,或是自定义需要校验的结构以及自定义校验规则和校验匹配规则。其中在特别强调参数有效性其参数校验规则及其复杂、需要校验的参数字段数目及其庞大的数据库交互场景里,如果将结构体中的字段一一取出,手动匹配校验规则,则会导致代码数量庞大且可读性差,是信息系统维护成本难以控制;如果在结构体标签中预设规则,则会导致校验规则匹配及其死板,可能无法覆盖大部分情况,使信息系统丧失安全性与稳定性。如果可以自动解析标签内容,对结构体标签动态设置匹配规则,自动实现结构体字段校验规则匹配和参数有效性校验,将极大地降低大型信息系统的开发、运维成本,大幅度提高大型信息系统的安全性和稳定性,并进一步提高软件开发工作的智能化和自动化。
附图说明
图1为本发明实施例1中的参数校验器的结构示意图;
图2为本发明实施例2中的基于结构体标签的字段校验方法的流程图。
具体实施方式
下面结合附图及实施例,详细描述本发明的技术方案。
实施例1
本实施例提出了一种参数校验器,其结构示意图见图1,其中,该参数校验器包括解析器、校验处理器和错误提示处理组件;其中:
解析器,用于当接收客户端发送的原始交互数据时,解析原始交互数据的结构体标签内容,确定出校验处理器类型,并解析结构体中字段的类型和适用的校验规则,这里,原始交互数据中至少包含待校验参数,实际应用过程中,待校验参数一般可以为客户端中的操作指令和客户端的状态信息。
校验处理器,用于根据解析器解析出来的数据,对各个字段按照相应的校验规则执行校验逻辑,完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件。
错误提示处理组件,用于根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
上述装置中,参数校验器整体架构可分为三个部分,一是解析器,包含标签解析器、结构与字段解析器,标签解析器负责解析结构体标签内容,以确定启动哪种校验处理器,结构与字段解析器负责解析结构体中字段的类型和适用的校验规则,为参数校验做准备;二是校验处理器,包含了大部分通用校验规则(比如email、URL的匹配规则)和使用者注册自定义校验规则的句柄,可以完成参数有效性的校验工作;三是对外提供国际化标准输出的输出格式化组件,该组件可以自动从客户端获取用户的语言信息,并自动匹配相应的标准错误提示信息。
需要指出的是,校验处理器中可以包含有参数校验句柄,本实施例中,参数校验句柄可以包括通用校验规则的句柄和自定义校验规则的句柄,本实施例中,通用校验规则可以为email和/或URL的匹配规则等。
具体地,当错误提示组件将与语种对应的标准提示信息返还至客户端时,同时将与该语种对应的标准提示信息传输至云端计算中心备份,方便用户查看存在问题的客户端。
实施例2
本实施例在实施例1的基础上,公开了一种基于结构体标签的字段校验方法,其流程图见图2,其中,该方法包括如下步骤:
步骤1、通过参数校验器接收客户端的原始交互数据;
步骤2、将所述原始交互数据发送至解析器;
步骤3、通过解析器解析原始交互数据的结构体标签内容,确定出校验处理器的类型,并选择一个该类型下的校验处理器;
步骤4、在选择出的校验处理器中初始化对应的参数校验句柄,通过参数校验句柄完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件;
步骤5、根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
在本实施例中,参数校验器将客户端的原始交互数据发给解析器,解析器先解析结构体标签,然后初始化对应的参数校验句柄,之后再将结构体的各个字段都解析出来,自动确定需要匹配的校验规则,等待校验处理器执行校验逻辑,不再需要开发者手动一个字段一个字段地匹配校验规则。
进一步,校验处理器拿到解析器解析出来的数据,对各个字段按照通用规则与用户自定义规则自动执行校验逻辑,并把结果发给国际化错误提示处理组件,国际化错误提示处理组件根据客户端的语种,会自动生成该语种的国际化的错误提示信息,并返还给客户端。这一整套流程实现了基于结构体标签的参数校验,大幅度降低了开发者的低级重复劳动量,节约了信息系统的开发成本,降低代码冗余度,提升了信息系统的稳定性和安全性。
Claims (6)
1.参数校验器,其特征在于,包括解析器、校验处理器和错误提示处理组件;
所述解析器,用于当接收客户端发送的原始交互数据时,解析原始交互数据的结构体标签内容,确定出校验处理器类型,并解析结构体中字段的类型和适用的校验规则,所述原始交互数据中至少包含待校验参数;
所述校验处理器,用于根据解析器解析出来的数据,对各个字段按照相应的校验规则执行校验逻辑,完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件;
所述错误提示处理组件,用于根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
2.根据权利要求1所述的参数校验器,其特征在于,所述解析器包括标签解析器以及结构与字段解析器,通过标签解析器解析原始交互数据的结构体标签内容,通过结构与字段解析器解析结构体中字段的类型和适用的校验规则。
3.根据权利要求1所述的参数校验器,其特征在于,所述待校验参数为客户端中的操作指令和客户端的状态信息。
4.根据权利要求1所述的参数校验器,其特征在于,所述校验处理器中包含有参数校验句柄,所述参数校验句柄包括通用校验规则的句柄和自定义校验规则的句柄,所述通用校验规则为email和/或URL的匹配规则。
5.根据权利要求1-4任意一项所述的参数校验器,其特征在于,当错误提示组件将与语种对应的标准提示信息返还至客户端时,同时将与该语种对应的标准提示信息传输至云端计算中心备份。
6.基于结构体标签的字段校验方法,应用于权利要求1-5任意一项所述的参数校验器,其特征在于,包括如下步骤:
步骤1、通过参数校验器接收客户端的原始交互数据;
步骤2、将所述原始交互数据发送至解析器;
步骤3、通过解析器解析原始交互数据的结构体标签内容,确定出校验处理器的类型,并选择一个该类型下的校验处理器;
步骤4、在选择出的校验处理器中初始化对应的参数校验句柄,通过参数校验句柄完成待校验参数有效性的校验,并将校验结果发送至错误提示处理组件;
步骤5、根据校验结果判断待校验参数是否出错,当出错时,根据当前客户端的语种,自动生成与该语种对应的标准提示信息,并返还至该客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011009761.5A CN111949274A (zh) | 2020-09-23 | 2020-09-23 | 参数校验器和基于结构体标签的字段校验方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011009761.5A CN111949274A (zh) | 2020-09-23 | 2020-09-23 | 参数校验器和基于结构体标签的字段校验方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111949274A true CN111949274A (zh) | 2020-11-17 |
Family
ID=73356856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011009761.5A Pending CN111949274A (zh) | 2020-09-23 | 2020-09-23 | 参数校验器和基于结构体标签的字段校验方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949274A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113657100A (zh) * | 2021-07-20 | 2021-11-16 | 北京百度网讯科技有限公司 | 实体识别方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579792A (zh) * | 2017-09-25 | 2018-01-12 | 上海卫星工程研究所 | 多型号在轨卫星工程参数并行解析方法 |
CN109408247A (zh) * | 2018-09-17 | 2019-03-01 | 天津龙拳风暴科技有限公司 | 交互数据处理方法及装置 |
CN110673838A (zh) * | 2019-09-10 | 2020-01-10 | 四川新网银行股份有限公司 | 输入校验的方法 |
-
2020
- 2020-09-23 CN CN202011009761.5A patent/CN111949274A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579792A (zh) * | 2017-09-25 | 2018-01-12 | 上海卫星工程研究所 | 多型号在轨卫星工程参数并行解析方法 |
CN109408247A (zh) * | 2018-09-17 | 2019-03-01 | 天津龙拳风暴科技有限公司 | 交互数据处理方法及装置 |
CN110673838A (zh) * | 2019-09-10 | 2020-01-10 | 四川新网银行股份有限公司 | 输入校验的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113657100A (zh) * | 2021-07-20 | 2021-11-16 | 北京百度网讯科技有限公司 | 实体识别方法、装置、电子设备及存储介质 |
CN113657100B (zh) * | 2021-07-20 | 2023-12-15 | 北京百度网讯科技有限公司 | 实体识别方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106777101B (zh) | 数据处理引擎 | |
CN106341444B (zh) | 数据访问方法和装置 | |
CN112416337B (zh) | 一种面向航天嵌入式系统的软件架构开发系统 | |
CN110347598B (zh) | 一种测试脚本生成方法、装置、服务器及存储介质 | |
CN113901083B (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN111949274A (zh) | 参数校验器和基于结构体标签的字段校验方法 | |
CN113094625B (zh) | 页面元素定位方法、装置、电子设备及存储介质 | |
CN113641804A (zh) | 预训练模型获取方法、装置、电子设备及存储介质 | |
CN116088846A (zh) | 一种持续集成代码格式的处理方法、相关装置及设备 | |
CN112149828A (zh) | 基于深度学习框架的算子精度检测方法和装置 | |
CN109684395B (zh) | 一种基于自然语言处理的可视化数据接口通用解析方法 | |
CN109359055B (zh) | 一种数据测试的方法和设备 | |
CN113238940B (zh) | 一种接口测试结果的比对方法、装置、设备和存储介质 | |
CN110853327B (zh) | 一种基于单片机的船舶机舱设备数据现场调试采集方法及装置 | |
CN114297057A (zh) | 一种自动化测试用例的设计及使用方法 | |
Zhang et al. | A method of automatic code generation based on AADL model | |
EP2782005A1 (en) | Verifying state reachability in a statechart model having computer program code embedded therein | |
US20200019452A1 (en) | System architecture framework | |
CN115361290B (zh) | 配置比对方法、装置、电子设备及存储介质 | |
KR20200121611A (ko) | 서버 및 그 제어 방법 | |
CN111930616B (zh) | 数据处理方法、装置、电子设备和可读存储介质 | |
CN114756474B (zh) | 一种cpu验证中随机向量的生成方法、装置以及电子设备 | |
CN113900665B (zh) | 一种智能合约的安全检测方法及装置 | |
CN117270838B (zh) | 一种通用公式脚本的生成方法、装置、设备及介质 | |
CN111522932B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201117 |