传入参数的自动校验方法与流程

文档序号:17696094发布日期:2019-05-17 21:32阅读:1458来源:国知局
传入参数的自动校验方法与流程

本发明涉及数据校验领域,特别涉及一种传入参数的自动校验方法。



背景技术:

接口(模型)是指校验功能可放在接口层或模型层,不同的框架不一样。

由前端数据通过rest请求到数据库保存的过程中,需要对数据进行类型(整数、浮点数等)、合法性(大小、长度等)和规则校验(是否手机、邮箱等)。传统的数据校验一般需经历两层校验:接口(模型)层校验和数据库层校验。

接口(模型)层校验存在如下缺点:1、修改更新不灵活、一旦修改则需要重新编译发布。2、与数据库校验在类型和部分合法性上重复,一旦修改需要两边同步,维护成本高。3、可能存在遗漏,导致数据异常。

数据库层校验存在如下缺点:1、校验开销大,每次需要建立数据连接。2、会产生大量数据异常日志。3、对合法性和规则性校验支持不足。

例如:注册用户接口,参数传入手机号和密码。数据库的用户表中,其中手机字段为字符类型,长度为11位,手机号规则。密码字段为字符类型,长度32位,md5规则。传统方式在接口层编写判断手机长度和手机格式规则判断,同样需要编写判断密码长度和md5规则校验。假如数据库用户表有n个字段,与其对应的参数有n个,在m个接口里用到,修改成本就是2n+n*m,严重影响项目的快速迭代。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种可简化开发流程和大幅度降低开发时间、集中管理校验规则、避免多方重复性修改、减少校验过程、避免数据库层校验失败的大量开销成本的传入参数的自动校验方法。

本发明解决其技术问题所采用的技术方案是:构造一种传入参数的自动校验方法,包括如下步骤:

a)在数据库层新建或修改字段名;

b)创建配置参数,并将其映射到所述数据库层的字段;

c)独立更新配置文件;

d)重新加载配置参数映射和数据库字段校验规则;

e)进入校验流程。

在本发明所述的传入参数的自动校验方法中,通过所述数据库层的字段定义数据类型、长度和字段备注,并填入所述数据库字段校验规则。

在本发明所述的传入参数的自动校验方法中,所述步骤e)进一步包括:

e1)前端传入参数;

e2)获取校验对象;

e3)使用所述校验对象对所述参数进行类型、合法和规则校验,判断校验是否成功,如是,执行步骤e5);否则,执行步骤e4);

e4)校验失败,返回错误;

e5)进行数据库校验,执行步骤e6);

e6)将所述参数写入数据库,执行步骤e7);

e7)返回写入结果。

在本发明所述的传入参数的自动校验方法中,所述校验对象采取键值对缓存在内存。

在本发明所述的传入参数的自动校验方法中,在所述步骤e2)之前包括:

e1′)读取所述配置参数映射和数据库校验字段备注的校验配置,生成所述校验对象。

在本发明所述的传入参数的自动校验方法中,所述步骤e1′)在项目启动时只执行一次,或者调用重新加载。

实施本发明的传入参数的自动校验方法,具有以下有益效果:由于在数据库层新建或修改字段名;创建配置参数,并将其映射到数据库层的字段;独立更新配置文件;重新加载配置参数映射和数据库字段校验规则;进入校验流程;与传统的校验开发方式相比,本发明采用读取字段校验配置,具有如下优点:可简化开发流程和大幅度降低开发时间,由传统的5个过程变为1个过程;集中管理校验规则,避免多方重复性修改;减低发布成本,由传统的整项目包编译更新变为独立配置文件;与传统的校验流程对比,本发明采用校验配置,具有以下优点:减少校验过程;避免数据库层校验失败的大量开销。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为传统技术中校验开发方式的流程图;

图2为传统技术中校验的流程图;

图3为本发明传入参数的自动校验方法一个实施例中的结构示意图;

图4为所述实施例中进入校验流程的具体流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1传统技术中校验开发方式的流程图,其主要包括如下步骤:1)在数据库的表创建(修改)字段,定义字段的类型和长度;2)接口(模型)层创建(修改)与数据库字段对应的参数;3)接口(模型)创建(修改)参数的类型校验,如:字符串、整数、浮点数、日期等;4)接口(模型)层创建(修改)参数的合法校验,如:长度、大于、小于、包含等;5)接口(模型)层创建(修改)参数的规则校验,邮箱格式、手机格式等;6)每次增加(修改)需重新编译;7)重新发布项目包。其中,1)至5)为规则更新,6)和7)为项目包更新。其校验开发步骤最少需要7个步骤。

图2为传统技术中校验的流程图,校验的流程包括如下步骤:(1)前端传入参数;(2)接口(模型)层校验;(3)数据库写入前的校验,如果没有(2)步骤的合法性和规则性校验,可能会产生异常数据;校验失败报错;在(3)步骤校验失败的开销很大,因为需要数据连接、查询编译器优化、写入日志、数据加锁、出错后事务回滚等过程;(4)数据写入。其中,步骤(2)具体细化为如下步骤:(21)是否有类型判断,没有则跳过,可能引起数据异常。校验失败报错。(22)是否有合法性判断,没有则跳过,可能引起数据异常;校验失败报错。(23)是否有规则性判断,没有则跳过,可能引起数据异常。校验失败报错。可见,数据校验步骤较多,成本较高。

为了解决传统技术中存在的问题,本发明提供一种传入参数的自动校验方法。在本发明传入参数的自动校验方法实施例中,该传入参数的自动校验方法的流程图如图3所示。图3中,该传入参数的自动校验方法包括如下步骤:

步骤s01在数据库层新建或修改字段名:本步骤中,在数据库层新建或修改字段名,包括定义数据类型、长度和字段备注,并填入数据库字段校验规则。数据库字段校验规则示例如下:min:90,max:100,regular:^((\d{18})|([0-9x]{18})|([0-9x]{18}))$。

步骤s02创建配置参数,并将其映射到数据库层的字段:本步骤中,创建配置参数,并将该配置参数映射到数据库层的字段。在步骤s01修改除字段名外,不需要修改映射。

步骤s03独立更新配置文件:本步骤中,独立更新配置文件。在步骤s01修改除字段名外,不需要更新其他数据。

步骤s04重新加载配置参数映射和数据库字段校验规则:本步骤中,重新加载配置参数映射和数据库字段校验规则。

步骤s05进入校验流程:本步骤中,进行数据校验流程。上述步骤s01用于规则更新,步骤s04用于配置更新,其开发步骤较少。与传统的校验开发方式相比,本发明采用读取字段校验配置,具有如下优点:可简化开发流程和大幅度降低开发时间,由传统的5个过程变为1个过程;集中管理校验规则,避免多方重复性修改;减低发布成本,由传统的整项目包编译更新变为独立配置文件。

对于本实施例而言,上述步骤s05还可进一步细化,其细化后的流程图如图4所示。图4中,该步骤s05进一步包括如下步骤:

步骤s51前端传入参数:本步骤中,前端传入参数。

步骤s52获取校验对象:本步骤中,获取校验对象。校验对象采取键值对缓存在内存。

步骤s53使用校验对象对参数进行类型、合法和规则校验,判断校验是否成功:本步骤中,使用校验对象对参数进行类型、合法和规则校验,判断校验是否成功,如果判断的结果为是,则执行步骤s55;否则,执行步骤s54。

步骤s54校验失败,返回错误:本步骤中,如果没有校验对象,可能引起数据异常,验失败报错。

步骤s55进行数据库校验:本步骤中进行数据库写入前的校验,由于步骤s53的校验对象是由数据库字段生成的,基本不会出现校验失败和校验失败报错。执行完本步骤,执行步骤s56。

步骤s56将参数写入数据库:本步骤中,将参数写入数据库。执行完本步骤,执行步骤s57。

步骤s57返回写入结果:本步骤中,返回写入结果。

本发明的方法最多使用一个数据校验步骤,即步骤s53。与传统的校验流程对比,本发明采用校验配置,具有以下优点:减少校验过程;避免数据库层校验失败的大量开销。

本步骤中,在上述步骤s52之前还包括如下步骤:

步骤s51′读取配置参数映射和数据库校验字段备注的校验配置,生成校验对象:本步骤中,读取配置参数映射和数据库校验字段备注的校验配置,生成校验对象。该步骤在项目启动时只执行一次,或者调用重新加载。

总之,与传统的校验开发方式相比,本发明采用读取字段校验配置,具有如下优点:可简化开发流程和大幅度降低开发时间,由传统的5个过程变为1个过程;集中管理校验规则,避免多方重复性修改;减低发布成本,由传统的整项目包编译更新变为独立配置文件;与传统的校验流程对比,本发明采用校验配置,具有以下优点:减少校验过程;避免数据库层校验失败的大量开销。当然,在实际应用中,在要求不高的情况下,也可以使用第三方库(如hibernatevalidation)实现参数的自动校验,在一定程度上节约开发时间、降低发布成本、减低校验开销。但不能减少开发流程和重复性问题。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1