CN115114052B - 一种智能提供数据库微服务的方法和装置 - Google Patents
一种智能提供数据库微服务的方法和装置 Download PDFInfo
- Publication number
- CN115114052B CN115114052B CN202211043940.XA CN202211043940A CN115114052B CN 115114052 B CN115114052 B CN 115114052B CN 202211043940 A CN202211043940 A CN 202211043940A CN 115114052 B CN115114052 B CN 115114052B
- Authority
- CN
- China
- Prior art keywords
- uplink request
- data
- field
- database
- uplink
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种智能提供数据库微服务的方法,由智能提供数据库微服务的装置采用,所述方法包括:预先自动读取数据库中的数据表的全部字段和字段类型;并且,根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;并且,根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;将所述下行响应发送给所述客户端。
Description
技术领域
本发明涉及微服务技术领域,尤其涉及一种智能提供数据库微服务的方法和装置。
背景技术
微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的 API(全称:Application Programming Interface,应用程序编程接口) 进行通信的独立服务组成。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间。如何能够更快速提供高性能,高可靠的微服务成为系统快速稳定交付的必要条件。
由于互联网应用的快速发展,基于PC的Web端应用、移动端App,微信小程序等应用,都需要快速开发,快速更新;后端的应用普遍采用微服务模式,进行系统的应用交互;后端基于数据库的存储和查询类应用,相对通用性较高。
在很多的微服务系统的服务中,基于数据库的数据表的增加,删除,修改,记录详细查询,列表翻页查询,在数据库表的微服务中占有较高的比例;特别是管理数据维护类系统中数据表的维护性交易占比较高;如果手工开发,调试,测试将需要较大的人工的工作量,
目前,存在的提供数据表维护的功能的方法,多为通过模版代码生成机制提供的服务获取数据库中多个数据表的全部字段,创建数据表的増加、删除、修改和査询的操作协议规则,并初始化用于数据表访问和编辑的初始化功能代码;
目前存在的数据库数据表维护的常用方法,需要代码生成,编译后再部署,再时间上和周期上,存在一定的不足,并且提供的服务需要一定开发环境进行开发和调试,不能够提供一套完整的系统方案;
主要存在的缺陷有:
不能够开箱即用、直接部署,需要代码生成,编译后再部署;
不能提供微服务的API接口调用手册和接口规范;
没有提供统一安全认证规范;
微服务报文没有进行参数的自动化验证,以及错误处理提示。
对于新增和查询的API没有区分细化,一般新增只是单记录新增,查询为列表查询。
对于系统的部署没有统一规范的部署方案,没有提供高可靠,高性能的解决方案。
在实现本发明过程中,申请人发现现有技术中至少存在如下问题:
现有技术中在项目开发中针对数据表的操作需要编写代码、编译后再部署且不能自动生成数据表API文档,从而降低开发效率。
发明内容
本发明实施例提供一种智能提供数据库微服务的方法和装置,也是一种自动提供数据库微服务的方法和装置,解决了现有技术中在项目开发中针对数据表的操作需要编写代码、编译后再部署且不能自动生成数据表API文档,从而降低开发效率的问题。
为达上述目的,一方面,本发明实施例提供一种智能提供数据库微服务的方法,由智能提供数据库微服务的装置采用,所述方法包括:
预先自动读取数据库中的数据表的全部字段和字段类型;并且,
根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;
收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;
根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;
如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;并且,
根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;
将所述下行响应发送给所述客户端;
其中,所述预设的协议规则包括:上行请求协议规则。
进一步地,所述预先自动读取数据库中的数据表的全部字段和字段类型,包括:
在所述智能提供数据库微服务的装置完成部署并启动后,自动连接所述数据库,并读取所述数据库的数据表的全部字段和字段类型。
进一步地,所述收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求,包括:
收到来自所述客户端的上行客户端报文,并且自动识别客户端报文格式,并且通过协议转换和/或数据类型转换将所述上行客户端报文转换为所述上行请求;
所述将所述下行响应发送给所述客户端,包括:
通过协议转换和/或数据类型转换将所述下行响应按所述客户端报文格式转换为下行客户端报文,并将所述下行客户端报文发送给所述客户端。
进一步地,所述上行请求协议规则包括:权限验证信息字段和数据项字段;
所述根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证,包括:
根据所述权限验证信息字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取权限验证信息,并根据所述权限验证信息判断所述上行请求的权限合法性;
如果判断出所述上行请求的权限合法,则根据所述数据项字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取数据项,并根据与所述数据项对应的所述数据表中的字段的属性对所述数据项的合法性进行验证;
如果验证出所述数据项为合法,则所述上行请求的验证通过。
进一步地,所述上行请求协议规则包括:交易码字段;
所述根据所述上行请求的内容完成对所述数据表的数据操作,包括:
根据所述交易码字段在所述上行请求协议规则中的位置从所述上行请求中获取交易码;
根据所述交易码识别所述上行请求对应的数据操作;
根据所述上行请求对应的数据操作生成与相应的SQL命令;
针对所述数据表执行所述SQL命令;
其中,所述SQL命令进行了SQL注入安全防护。
进一步地,所述协议规则还包括:下行响应协议规则;
所述根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应,包括:
获取所述SQL命令的执行结果;
根据所述上行请求对应的数据操作所对应的下行响应协议规则和所述SQL命令的执行结果生成所述下行响应。
进一步地,所述根据所述上行请求对应的数据操作生成与相应的SQL命令,包括:
根据所述上行请求对应的数据操作和所述上行请求中访问的数据表的字段生成预编译SQL语句;
根据所述上行请求中访问的数据表的字段对应的数据项执行所述预编译SQL语句,避免了SQL注入的发生。
另一方面,本发明实施例提供一种智能提供数据库微服务的装置,包括:
初始化单元,用于预先自动读取数据库中的数据表的全部字段和字段类型;
文档生成单元,用于根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;
请求接收单元,用于收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;
请求验证单元,用于根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;
数据表操作单元,用于如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;
响应生成单元,用于根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;
响应发送单元,用于将所述下行响应发送给所述客户端;
其中,所述预设的协议规则包括:上行请求协议规则。
进一步地,所述初始化单元,具体用于:
在所述智能提供数据库微服务的装置完成部署并启动后,自动连接所述数据库,并读取所述数据库的数据表的全部字段和字段类型。
进一步地,所述请求接收单元,具体用于:
收到来自所述客户端的上行客户端报文,并且自动识别客户端报文格式,并且通过协议转换和/或数据类型转换将所述上行客户端报文转换为所述上行请求;
所述响应发送单元,具体用于:
通过协议转换和/或数据类型转换将所述下行响应按所述客户端报文格式转换为下行客户端报文,并将所述下行客户端报文发送给所述客户端。
进一步地,所述上行请求协议规则包括:权限验证信息字段和数据项字段;
所述请求验证单元,包括:
权限验证模块,用于根据所述权限验证信息字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取权限验证信息,并根据所述权限验证信息判断所述上行请求的权限合法性;
数据验证模块,用于如果判断出所述上行请求的权限合法,则根据所述数据项字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取数据项,并根据与所述数据项对应的所述数据表中的字段的属性对所述数据项的合法性进行验证;如果验证出所述数据项为合法,则所述上行请求的验证通过。
进一步地,所述上行请求协议规则包括:交易码字段;
所述数据表操作单元,包括:
交易码获取模块,用于根据所述交易码字段在所述上行请求协议规则中的位置从所述上行请求中获取交易码;
数据操作获取模块,用于根据所述交易码识别所述上行请求对应的数据操作;
SQL命令生成模块,用于根据所述上行请求对应的数据操作生成与相应的SQL命令;
SOL命令执行模块,用于针对所述数据表执行所述SQL命令;
其中,所述SQL命令进行了SQL注入安全防护。
进一步地,所述协议规则还包括:下行响应协议规则;
所述响应生成单元,包括:
执行结果获取模块,用于获取所述SQL命令的执行结果;
下行响应生成模块,用于根据所述上行请求对应的数据操作所对应的下行响应协议规则和所述SQL命令的执行结果生成所述下行响应。
进一步地,所述SQL命令生成模块,包括:
预编译语句生成模块,用于根据所述上行请求对应的数据操作和所述上行请求中访问的数据表的字段生成预编译SQL语句,避免了SQL注入的发生;
预编译语句执行模块,用于根据所述上行请求中访问的数据表的字段对应的数据项执行所述预编译SQL语句。
上述技术方案具有如下有益效果:通过自动读取数据库的数据表,并根据数据表的字段和预设的协议规则自动生成微服务API接口文档,实现了自动提供开发文档,无需人工根据数据表的内容编写开发文档。对客户端发起的。基于协议规则解析上行请求和对上行请求进行验证,确保上行请求所要求的操作合法,提高了系统的安全性。进一步地,在部署后自动读取数据表并且根据数据表,在收到上行请求时,能根据协议规则和数据表完成响应,实现了部署即可用,无需再次开发或编译。通过提供协议和数据类型转换,可对接多种常见的客户端协议,显著提高了基于数据库的数据表的开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例之一的一种智能提供数据库微服务的方法的流程图;
图2是本发明实施例之一的一种智能提供数据库微服务的装置的架构图;
图3是本发明实施例之一的一种智能提供数据库微服务的装置的另一架构图;
图4是本发明实施例之一的一种智能提供数据库微服务的方法的另一流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一方面,如图1所示,本发明实施例提供一种智能提供数据库微服务的方法,由智能提供数据库微服务的装置采用,所述方法包括:
步骤S100,预先自动读取数据库中的数据表的全部字段和字段类型;并且,
步骤S101,根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;
步骤S102,收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;
步骤S103,根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;
步骤S104,如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;并且,
步骤S105,根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;
步骤S106,将所述下行响应发送给所述客户端;
其中,所述预设的协议规则包括:上行请求协议规则。
在一些实施例中,基于本发明实施例实现的系统或装置(例如智能提供数据库微服务的装置,也是自动提供数据库微服务的装置)的运行状态可以分为初始化阶段和提供微服务的阶段,在初始化阶段,当智能提供数据库微服务的装置启动时(可以只在初次启动时执行初始化阶段的操作,或者在每次启动时都执行初始化阶段的操作),在初始化阶段自动读取数据库的数据表中的全部字段和字段类型,从而获取要操作的一个或多个数据表的信息;本发明实施例连接的数据库可以通过在部署本发明实施例期间通过本发明实施例的配置信息预先指定,具体连接数据库的方法有很多种,包括但不限于通过ODBC(即OpenDatabase Connectivity)、JDBC(即Java DataBase Connectivity standard)等。需要特别说明的是,针对不同的项目或者针对不同的数据库,都可以直接部署本发明实施例直接获得相应的数据库微服务;从而无需针对不同的项目或针对不同的数据库进行相应的代码生成,再基于生成的代码提供数据库访问。获取到数据表的全部字段和字段类型后,可以根据预设的协议规则和数据表的全部字段和字段类型生成微服务API接口文档,本发明实施例还提供了用于客户端获取微服务API接口文档的API接口。客户端可以通过该获取微服务API接口文档的API接口向智能提供数据库微服务的装置请求获取与数据表对应的微服务API接口文档。上行请求可以是直接由客户端发出的,也可以是客户端发出客户端报文,客户端报文再经过报文协议的转换得到上行请求,从而通过报文协议转换可以支持多种客户端协议例如客户端可以是基于TCP、UDP、HTTP、MQ等通信协议,通过报文协议转换,可以将客户端的报文协议转换为本发明实施例的上行请求使用的协议。上行请求中可以包括但不限于要操作的数据表的信息、具体要执行的数据操作、具体要操作的字段和/或执行数据操作时需要满足的过滤条件等。上行请求协议规则定义了上行请求各字段的含义、类型和/或取值范围,上行请求中的某些字段可以包含权限验证信息,根据上行请求协议规则,可以正确解析上行请求个字段的数据,从而获取权限验证信息、数据操作、具体要操作的字段和/或执行数据操作时需要满足的过滤条件等,进一步地可以根据权限验证信息和其他字段的信息对上行请求的合法性进行验证,若验证失败,则向客户端反馈验证失败的原因,并终止针对客户端的本次上行请求的数据库微服务;若验证成功,则进一步根据上行请求的内容例如数据操作、要操作的数据表中的字段及其值、执行数据操作时的过滤条件等完成对数据表的操作;并且获取数据操作的结果,将结果以下行响应的方法发送个客户端。
本发明实施例具有如下技术效果:基于本发明实施例实现的系统(装置),可自动以微服务的方式提供API服务,由于可以自动读取数据库,自动完成与数据库有关的初始化,在部署后即可直接使用,无需重复编写基于数据库操作的代码,也无需代码编译,系统根据数据表结构自动生成与该数据表相应的API操作手册(即微服务API文档)。项目开发期间,针对任何数据库,为开发人员提供了部署即可直接使用的数据库操作层,无需重复开发调试用于操作数据库的相关代码,开发人员可以将精力更加集中在其他业务逻辑的开发上。自动结合数据表和上行请求协议规则对上行请求进行验证保证了上行请求的合法性,避免非法的上行请求以及SQL注入的执行,从而保护了数据表的安全,同时也无需开发人员进行操作权限和数据合法性检查的相关处理,进一步减少了开发人员在使用数据库时的重复劳动,提高了开发效率和质量。
进一步地,所述预先自动读取数据库中的数据表的全部字段和字段类型,包括:
在所述智能提供数据库微服务的装置完成部署并启动后,自动连接所述数据库,并读取所述数据库的数据表的全部字段和字段类型。
在一些实施例中,新构建的系统,只要数据库模型设计完成,通过将基于本发明实施例实现的系统部署为docker微服务,指定数据库连接,系统即可自动智能的提供数据库的数据表的数据操作,数据操作包括但不限于:增加(支持单记录和批量),删除,修改,记录详细查询,列表翻页查询等微服务功能,并且系统支持高可靠,负载均衡等分布式集群部署方式。系统可以以二进制镜像的方式直接部署不需要重新编译代码,只要数据库的数据表已经存在,系统可以自动连接部署期间指定的数据库,并根据读取到的数据表完成初始化。
本发明实施例具有如下技术效果:实现了部署后即可得的数据库微服务,部署后可自动获取具体的数据库的数据表的内容,无需人工干预更无需重新编写相关代码。
进一步地,所述收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求,包括:
收到来自所述客户端的上行客户端报文,并且自动识别客户端报文格式,并且通过协议转换和/或数据类型转换将所述上行客户端报文转换为所述上行请求;
所述将所述下行响应发送给所述客户端,包括:
通过协议转换和/或数据类型转换将所述下行响应按所述客户端报文格式转换为下行客户端报文,并将所述下行客户端报文发送给所述客户端。
在一些实施例中,本发明实施例可以适应客户端发出的多种报文协议,例如TCP、UDP、HTTP、MQ等,并且可以自动识别客户端报文格式,例如客户端报文格式包括但不限于:JSON格式,XML格式或者HTTP请求格式,通过本发明实施例的协议转换和数据类型转换,可以将使用各种不同客户端报文协议和客户端报文格式的报文转换为本发明实施例的上行请求使用的协议,例如通过本发明实施例同时提供的多种协议转换和/或数据类型换可将来自多种客户端的多种报文协议转换为包括但不限于XML格式、JSON格式或HTTP的表单POST模式以及GET模式的上行请求,并且将响应的下行响应也对应转换为相应客户端的下行报文协议。其中,当本发明实施例的上行请求和下行响应的协议使用HTTP的POST和GET模式时,不需要任何改造即可直接满足传统的html页面的请求。
本发明实施例具有如下技术效果:本发明实施例提供的数据库微服务可以在无需重新编码、编译的基础上,实现对多种客户端协议的支持,相当于提供了一个协议转换层,将外部的客户端协议与内部的请求和响应所使用的协议进行相互转换,可以最大限度的以二进制镜像的形式部署,并能够支持多种协议。即使需要新增对新的客户端报文协议的支持,也仅需要修改协议转换层的代码,实现了最小修改。
进一步地,所述上行请求协议规则包括:权限验证信息字段和数据项字段;
所述根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证,包括:
根据所述权限验证信息字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取权限验证信息,并根据所述权限验证信息判断所述上行请求的权限合法性;
如果判断出所述上行请求的权限合法,则根据所述数据项字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取数据项,并根据与所述数据项对应的所述数据表中的字段的属性对所述数据项的合法性进行验证;
如果验证出所述数据项为合法,则所述上行请求的验证通过。
在一些实施例中,可通过权限验证和数据验证确保上行请求的合法性,避免针对数据表的非法操作。权限验证方式很多,包括但不限于JWT(即JSON Web Token,定义了以一种紧凑的、自包含的 JSON 对象在各方之间安全传输信息的方式)权限认证。JWT采用RSA密钥对进行非对称加密,JWT权限验证信息包括但不限于应用信息、用户信息、时效时间信息以及用户可进行交易的列表信息;系统获取令牌(即权限验证信息)后,对令牌进行解密处理。并且进行信息检查,具体地:
根据上行请求中的权限验证信息中的应用信息判断上行请求中的权限验证信息是否为本应用的令牌(即权限验证信息),若不是本应用令牌则拒绝交易;否则,
继续根据上行请求中的权限验证信息中的时效时间信息判断令牌是否过期,若过期则拒绝交易,否则,
继续根据上行请求中的用户信息和用户可进行交易的列表信息判断当前交易是否为用户拥有权限的交易,若没有权限则拒绝交易,否则,
通过上述各判断确认上行请求中的权限验证信息是本应用的令牌,并且令牌没有超过时效时间信息规定的有效期,并且是用户拥有权限的交易,则权限验证通过;
数据验证,将根据数据库的数据表的字段的定义,进行数据的验证。数据库模型中字段的属性包括但不限于:
数据类型、数据长度(数值类型为精度)、是否非空、数据是否为枚举类型、和/或是否主键。
枚举类型:为定义的标志性类型数据,比如:1-男,2-女。这种格式的数据,此类格式的数据在数据库字段备注中使用[]进行描述。如:sex字段,为int类型,非空,非主键,类型名称为:性别[1-男,2-女]。
系统初始化连接数据库,获取数据库字段的所有字段的定义和字段描述。并且存储到系统的cache中,系统根据交易请求的数据库表的操作,进行逐一字段的验证,验证过程包括:
判断数据类型是否正确,若不正确,则在下行响应中返回发生数据类型错误的字段信息并指明相应正确的数据类型;
判断如果是字符串,则检查字符串的长度是否超过指定字符串长度;
如果数值类型,验证数值类型是否超出范围;
如果数据表规定的该字段的数据非空,并且提交的数据为空或没有提交此字段,则在下行响应中提示响应字段不可为空;
如果是枚举类型,则验证提交的数据是否在指定的枚举类型的范围内,如果提交数据不在定义预期的范围内,则在下行响应中提示提交数据不在指定的定义的范围内,并且给出明确的数据定义范围。
进一步地,所述上行请求协议规则包括:交易码字段;
所述根据所述上行请求的内容完成对所述数据表的数据操作,包括:
根据所述交易码字段在所述上行请求协议规则中的位置从所述上行请求中获取交易码;
根据所述交易码识别所述上行请求对应的数据操作;
根据所述上行请求对应的数据操作生成与相应的SQL命令;
针对所述数据表执行所述SQL命令;
其中,所述SQL命令进行了SQL注入安全防护。
在一些实施例中,数据操作包括但不限于:增加操作、修改操作、删除操作、详细查询操作、翻页列表查询操作等操作;通过交易码获取数据操作的种类,例如:“1”为增加操作,“2”为修改操作,“3”为删除操作,“4”为详细查询操作,“5”为翻页列表查询操作。
以下为增加操作的步骤:
打开数据库事务,因为需要判断需要插入数据是否存在,考虑到并发处理的问题,所以启动事务。
首先通过数据库的主键字段,构建查询SQL语句,通过查询SQL查询插入的数据单条记录是否存在,如果存在,回滚事务,返回插入数据特定行已经存在的错误信息返回,正常继续下一步处理。
通过前端提交的数据,通过字段名称和数据库表字段名称映射动态构建插入数据库的SQL语句。
如果多行数据采用批量插入模式,操作失败,回滚事务,返回失败的异常信息,成功返回影响的代码行数。
以下为修改操作的步骤:
通过前端提交的数据,通过字段名称和数据库表字段名称映射动态构建修改数据库的SQL修改部分SQL信息,通过前端传输的过滤字段,形成修改条件,共同构建SQL的修改语句。
操作失败,返回失败的异常信息,成功返回影响的代码行数。
以下为删除操作的步骤:
通过前端传输的过滤字段,形成的删除条件,通过字段名称和数据库表字段名称映射动态构建删除数据库的SQL语句。
操作失败,返回失败的异常信息,成功返回影响的代码行数。
以下为详细查询操作的步骤:
通过前端传输的过滤字段,形成的查询条件,通过字段名称和数据库表字段名称映射动态构建查询数据库的SQL语句。
查询记录为空,返回数据不存在,成功返回首行数据。
注意:详细查询的条件一般为数据库的主键查询字段,保证数据的唯一性。
以下为翻页列表查询操作的步骤:
翻页查询和普通查询,区别是前端增加上送参数:当前页和页行数字段;通过前端传输的过滤字段,形成的查询条件,通过当前页和页行数以及字段名称和数据库表字段名称映射动态构建查询数据库的SQL语句。
成功返回当前页的指定的数据行数,查询无结果返回空列表,不返回错误(这是前端列表常用模式,返回错误,图形化前端不方便处理,数据为空列表,前端已经一目了然)。
在一些实施例中,对于以数据库为依托的微服务系统,SQL注入是最大的安全风险,通过对SQL命令进行SQL注入安全防护,为系统的安全性提供了很大的保障。构建SQL语句时,可以对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击。
进一步地,所述协议规则还包括:下行响应协议规则;
所述根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应,包括:
获取所述SQL命令的执行结果;
根据所述上行请求对应的数据操作所对应的下行响应协议规则和所述SQL命令的执行结果生成所述下行响应。
在一些实施例中,通过获取SQL命令执行的结果,并根据上行请求对应的数据操作所对应的下行响应协议规则生成下行响应。
进一步地,所述根据所述上行请求对应的数据操作生成与相应的SQL命令,包括:
根据所述上行请求对应的数据操作和所述上行请求中访问的数据表的字段生成预编译SQL语句;
根据所述上行请求中访问的数据表的字段对应的数据项执行所述预编译SQL语句,避免了SQL注入的发生。
在一些实施例中,根据上行请求可以获得上行请求对应的数据操作,根据数据操作的类型和预设的协议规则,可以生成预编译SQL语句,在预编译SQL语句中将上行请求中与所要访问的数据表的字段对应的数据项的具体数值先设置为问号字符,在执行该预编译SQL语句时,从上行请求中取出上行请求中所要访问的数据表的字段对应的数据项的具体数值,并将得到的具体数值作为执行该预编译SQL语句的参数完成改预编译SQL语句的执行。
本发明实施例具有如下技术效果:通过将上行请求中与所要访问的数据表的字段对应的具体数值参数作为预编译SQL语句的执行参数完成操作数据表的数据操作,可以防止SQL注入,提高系统的安全性。
另一方面,如图2所示,本发明实施例提供一种智能提供数据库微服务的装置,包括:
初始化单元200,用于预先自动读取数据库中的数据表的全部字段和字段类型;
文档生成单元201,用于根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;
请求接收单元202,用于收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;
请求验证单元203,用于根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;
数据表操作单元204,用于如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;
响应生成单元205,用于根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;
响应发送单元206,用于将所述下行响应发送给所述客户端;
其中,所述预设的协议规则包括:上行请求协议规则。
进一步地,所述初始化单元200,具体用于:
在所述智能提供数据库微服务的装置完成部署并启动后,自动连接所述数据库,并读取所述数据库的数据表的全部字段和字段类型。
进一步地,所述请求接收单元202,具体用于:
收到来自所述客户端的上行客户端报文,并且自动识别客户端报文格式,并且通过协议转换和/或数据类型转换将所述上行客户端报文转换为所述上行请求;
所述响应发送单元206,具体用于:
通过协议转换和/或数据类型转换将所述下行响应按所述客户端报文格式转换为下行客户端报文,并将所述下行客户端报文发送给所述客户端。
进一步地,所述上行请求协议规则包括:权限验证信息字段和数据项字段;
所述请求验证单元203,包括:
权限验证模块,用于根据所述权限验证信息字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取权限验证信息,并根据所述权限验证信息判断所述上行请求的权限合法性;
数据验证模块,用于如果判断出所述上行请求的权限合法,则根据所述数据项字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取数据项,并根据与所述数据项对应的所述数据表中的字段的属性对所述数据项的合法性进行验证;如果验证出所述数据项为合法,则所述上行请求的验证通过。
进一步地,所述上行请求协议规则包括:交易码字段;
所述数据表操作单元204,包括:
交易码获取模块,用于根据所述交易码字段在所述上行请求协议规则中的位置从所述上行请求中获取交易码;
数据操作获取模块,用于根据所述交易码识别所述上行请求对应的数据操作;
SQL命令生成模块,用于根据所述上行请求对应的数据操作生成与相应的SQL命令;
SOL命令执行模块,用于针对所述数据表执行所述SQL命令;
其中,所述SQL命令进行了SQL注入安全防护。
进一步地,所述协议规则还包括:下行响应协议规则;
所述响应生成单元205,包括:
执行结果获取模块,用于获取所述SQL命令的执行结果;
下行响应生成模块,用于根据所述上行请求对应的数据操作所对应的下行响应协议规则和所述SQL命令的执行结果生成所述下行响应。
进一步地,所述SQL命令生成模块,包括:
预编译语句生成模块,用于根据所述上行请求对应的数据操作和所述上行请求中访问的数据表的字段生成预编译SQL语句;
预编译语句执行模块,用于根据所述上行请求中访问的数据表的字段对应的数据项执行所述预编译SQL语句。
本发明实施例提供一种智能提供数据库微服务的装置是与前述的智能提供数据库微服务的方法一一对应的实施例,可根据前述的智能提供数据库微服务的方法的实施例理解智能提供数据库微服务的装置实施例,在此不再赘述。
本发明实施例具有如下技术效果:通过自动读取数据库的数据表,并根据数据表的字段和预设的协议规则自动生成微服务API接口文档,实现了自动提供开发文档,无需人工根据数据表的内容编写开发文档。对客户端发起的。基于协议规则解析上行请求和对上行请求进行验证,确保上行请求所要求的操作合法,提高了系统的安全性。进一步地,在部署后自动读取数据表并且根据数据表,在收到上行请求时,能根据协议规则和数据表完成响应,实现了部署即可用,无需再次开发或编译。通过提供协议和数据类型转换,可对接多种常见的客户端协议,显著提高了基于数据库的数据表的开发效率。
下面结合具体的应用实例对本发明实施例上述技术方案进行详细说明,实施过程中没有介绍到的技术细节,可以参考前文的相关描述。
本发明实施例提供了一种智能数据库数据表维护的微服务系统,对于不同的数据库模型系统,系统配置数据库连接后,即可实现数据库数据表的增加,删除,修改,记录详细查询,列表翻页查询数据库表的微服务系统,不需要对于不同的数据库模型进行再次开发。本系统的直接部署后直接可用于数据表的操作,将大大缩短数据维护类系统的上线时间。
如果不需要开发,直接部署就可以实现数据库数据表的增加,删除,修改,记录详细查询,列表翻页查询数据库表的维护功能,将大大加快互联网应用的快速开发。并且在此微服务系统之上,再进行复杂逻辑的服务开发,将避免一些数据库表的基础功能的开发,意味着,系统的开发将需要更少开发人员、更短开发周期。
进一步地,本发明实施例可通过云系统部署提供分布式服务,实现开箱即用的基于云系统部署的高可能、高性能的分布式云服务完整的解决方案。
本系统具有以下特点:
本系统自动提供API服务,无需生成代码和代码编译,而是系统直接部署。
本系统部署,需要配置数据库连接,系统根据数据表结构自动提供API操作手册。
本系统部署后,系统可以设置认证进行访问,并且可以设置功能权限的认证,避免非安全访问数据。
本系统部署后,根据连接数据库表的字段定义和类型,自动提供上行报文参数验证功能。
本系统自动提供增加(支持单记录和批量)、删除、修改、记录详细查询、列表翻页查询的微服务功能。
本系统提供的基于docker的镜像部署,通过云平台提供负载均衡和高可用,高性能的微服务系统。
本系统通讯同时支持XML、JSON格式和/或HTTP的表单POST模式以及HTTP的POST和GET模式,其中HTTP的POST和GET模式,不需要任何改造即可直接满足传统的HTML页面的请求。
新构建的系统,只要数据库模型设计完成,通过docker部署本发明实施例的智能提供数据库微服务的装置(系统),部署需要配置指定数据库连接,系统即可智能的提供数据库数据表的增加(支持单记录和批量),删除,修改,记录详细查询,列表翻页查询的微服务功能,并且系统支持高可靠,负载均衡等分布式集群部署方式。
以下进行具体说明:
系统概述:
智能提供数据库数据表维护的智能提供数据库微服务的方法和装置(系统),如图3所示,系统包括服务接入层、参数解析层、权限认证层、数据验证层和数据操作层等核心处理模块,所有的交易处理数据全部保存在交易“数据总线”中、交易处理模块从数据总线中获取交易要处理的数据,并且处理完成的数据放到数据总线中,所有的交易模块在交易层面“数据总线”是共享的。
系统报文上行的参数中,为了统一识别处理是哪个数据表和哪种类型交易,以及便于验证用户权限,对上行参数进行了定义:
(1)除了业务请求字段包含上行参数中,还设置有交易码字段,交易码字段的英文定义为:transcode,transcode为系统的保留字,交易码为16位,前15位数据库表名大写,如果数据库表名中含有有下滑线则删除下滑线,不足16位则使用字符‘0’填充,最后一位数据操作类型位,“1”为增加操作,“2”为修改操作,“3”为删除操作,“4”为详细查询操作,“5”为翻页列表查询操作。
(2)为了进行用户操作权限的验证,在上行字段中预设令牌字段,我们英文定义为“jwt”,进行用户操作权限的验证;优选地,采用JWT认证模式。
JWT是目前流行的跨域认证解决方案,是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,该信息可以被验证和信任,因为它是数字签名的;JWT的信息内包含用户信息和用户的可操作交易列表信息。
(3)为了便于前端识别后端返回的错误处理信息,对返回的报文预设“错误码”和“错误信息”字段,英文分别定义为“errcode”和“errmsg”。
错误码根据验证的错误类型进行编码;错误信息根据数据验证的和数据逻辑验证的情况,明确返回特定的错误信息;交易处理成功,系统缺省的错误码为:“000000”,错误信息:“交易处理成功”,便于调用端微服务调用接口的统一封装处理。
如图4所示,具体的操作流程如下:
1、服务接入
服务接入,处理客户端请求的接入,以及请求后服务处理结果的返回。通讯协议支持:HTTP协议、TCP协议、其他通讯中间件;当然也可以支持其他中间件模式比如MQ的生产者和消费者模式。
接入层接入的报文格式:支持XML格式,XML请求返回XML格式;还支持JSON格式,JSON请求返回也为JSON格式;在HTTP通讯协议中,为了更好的兼容客户端HTML页面的请求调用,支持HTTP的POST和GET请求的request参数的提交模式,HTTP的POST和GET请求返回的为JSON格式。
2、参数解析
参数解析,处理客户端请求的参数格式化转化,XML和JSON提交的参数可以有数据类型的定义,但是对于HTTP的POST和GET的参数,通常采用的字符串提交模式,需要和数据库层面的库表的数据类型和格式进行转化,转化为符合数据库存储和操作格式的数据类型相匹配。
例如:前端提交的类型为字符串类型,数据库对应的字段为日期类型,需要将字符串类型自动转化为日期类型;如果前端为字符类型,数据库为数值类型,也需要系统自动将接口层的数据类型转化为数值类型对应的类型。
3、权限验证
权限验证方式很多,我们这里以JWT权限认证为例进行说明。
JWT采用RSA密钥对进行非对称加密,JWT中包含应用信息,用户信息,时效时间信息以及用户可进行交易的列表信息;系统获取令牌后,对令牌进行解密处理。并且进行信息检查,包括:
核对应用信息是否本应用的令牌,非本应用令牌拒绝交易。
检查令牌是否过期,过期将拒绝交易;
核对当前交易是否为用户拥有权限的交易,没有权限拒绝交易。
4、数据验证
数据验证,将根据数据库的字段的定义,进行数据的验证。数据库模型中字段具有以下属性:数据类型、数据长度(数值类型为精度)、是否非空、数据是否为枚举类型和/或是否主键;
枚举类型:为定义的标志性类型数据,比如:1-男,2-女。这种格式的数据,此类格式的数据在数据库字段备注中使用[]进行描述。如:sex字段,为int类型,非空,非主键,类型名称为:性别[1-男,2-女]。
系统初始化连接数据库,获取数据库字段的所有字段的定义和字段描述。并且存储到系统的cache中,系统根据交易请求的数据库表的操作,进行逐一字段的验证:
(1)、数据类型是否正确,不正确,将返回明确的的那个字段的数据类型错误,应该使用使用数据类型的数据格式。
(2)、如果是字符串,将检查字符串是否长度是否超长。如果数值类型,验证数值类型是否超出范围。
(3)、如果数据非空,提交的数据为空或没有提交此字段,系统提示,具体字段不可为空。
(4)、如果是枚举类型,系统将验证提交的数据是否在指定的枚举类型的范围内,如果提交数据不在定义预期的范围内,系统提示,提交数据不在指定的定义的范围内,并且给出明确的数据定义范围。
5、数据操作
数据操作层,为数据库操作的核心逻辑层,通过交易码操作,获取操作的数据库表名称和数据操作的种类:“1”为增加操作,“2”为修改操作,“3”为删除操作,“4”为详细查询操作,“5”为翻页列表查询操作。
以下为数据增加(即增加操作)的步骤:
打开数据库事务,因为需要判断需要插入数据是否存在,考虑到并发处理的问题,所以启动事务。
首先通过数据库的主键字段,构建查询SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击),通过查询SQL查询插入的数据单条记录是否存在,如果存在,回滚事务,返回插入数据特定行已经存在的错误信息返回,正常继续下一步处理。
通过前端提交的数据,通过字段名称和数据库表字段名称映射动态构建插入数据库的SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
如果多行数据采用批量插入模式,操作失败,回滚事务,返回失败的异常信息,成功返回影响的代码行数。
以下为修改操作的步骤:
通过前端提交的数据,通过字段名称和数据库表字段名称映射动态构建修改数据库的SQL修改部分SQL信息,通过前端传输的过滤字段,形成修改条件,共同构建SQL的修改语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
操作失败,返回失败的异常信息,成功返回影响的代码行数。
以下为删除操作的步骤:
通过前端传输的过滤字段,形成的删除条件,通过字段名称和数据库表字段名称映射动态构建删除数据库的SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
操作失败,返回失败的异常信息,成功返回影响的代码行数。
以下为详细查询操作的步骤:
通过前端传输的过滤字段,形成的查询条件,通过字段名称和数据库表字段名称映射动态构建查询数据库的SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
查询记录为空,返回数据不存在,成功返回首行数据。
注意:详细查询的条件一般为数据库的主键查询字段,保证数据的唯一性。
以下为翻页列表查询操作的步骤:
翻页查询和普通查询,区别是前端增加上送参数:当前页和页行数字段;通过前端传输的过滤字段,形成的查询条件,通过当前页和页行数以及字段名称和数据库表字段名称映射动态构建查询数据库的SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
成功返回当前页的指定的数据行数,查询无结果返回空列表,不返回错误(这是前端列表常用模式,返回错误,图形化前端不方便处理,数据为空列表,前端已经一目了然)。
下面以另一具体实施例对本发明技术方案进行说明:
以下为系统初始化的说明:
系统首先通过配置的数据库连接信息,实现数据库的正常连接,并且获取所有用户表的数据库的定义信息。
例如如表1所示的用户信息信息表,系统获取用户信息信息表,英文:sysuser,中文:人员信息;,并且将所有表的定义信息放到系统cache(即缓存)中。
表1 用户信息信息表
为了有效的达到,通过数据库定义的模型,就能提供对数据操作的微服务处理过程,我们在进行数据库模型设计的时候,为了对数据库模型中“枚举字段”进行定义,概述中已经特别说明了,“枚举字段”的字段说明,除了字段说明的中文含义外通过“[k1-v1,k2-v2,...]”,如表3.1中的“用户状态”字段和“人员性别”字段都是“枚举字段”类型。
所述预设的协议规则包括上行请求协议规则、下行响应协议规则;
所述上行请求协议规则包括:数据增加操作协议规则、修改操作协议规则、删除操作协议规则、信息详细查询协议规则和/或信息列表分页查询协议规则;
优选的,数据增加操作协议规则、修改操作协议规则、删除操作协议规则和信息详细查询协议规则可以使用相同协议规则,并通过交易码字段进行区分。
所述下行响应协议规则包括:下行确认响应协议规则和下行信息响应协议规则;
所述下行确认响应协议规则包括:错误码字段和错误信息字段;
下行信息响应协议规则包括:错误码字段、错误信息字段、响应列表开始标识字段和响应列表结束标识字段;在所述响应列表开始标识字段和响应列表结束标识字段之间是针对上行请求返回的数据表相关字段及其数值。
以下为用户信息增加操作的说明
如表2所示,数据增加操作协议规则包括:交易码字段、令牌字段(即权限验证信息字段)、过滤器字段(即判重条件字段)、列表开始标识字段和列表结束标识字段;
所述列表开始标识字段和所述列表结束标识字段可以相同或不同;
在所述列表开始标识字段和所述列表结束标识字段之间记录有所述上行请求所要操作的数据表的字段及相应字段的参数信息。
所述交易字段包括数据表标识字段和数据操作字段;所述数据表标识字段用于标识所述上行请求所要操作的数据表,可以是数据表的名称或者基于数据表的名称所作的一一对应的变换;所述数据操作字段用于记录所述上行请求要执行的数据操作;所述数据操作包括但不限于:数据增加操作、修改操作、删除操作、详细查询操作和/或翻页列表查询操作。
系统根据加载的数据库信息。生成的用户信息表的增加接口文档如表2
表2 用户信息表的增加接口文档
上表2描述了用户信息增加的接口内容,注意:filter字段,是判断插入重复条件字段,多个判断重复方案使用“;”分割,每种判重条件字段是多个字段组合判断重复的使用“,”分割。rows 列表开始和rows列表结束,表达的rows为列表,可以循环存放多条用户信息的内容。
服务接入
服务接入接受传入的报文,获取指定的报文内容以及自动判断上传报文结构,放入数据总线。
参数解析
参数解析解析出,如上表所示的交易码,令牌信息以及需要增加的列表信息放入数据总线。
权限认证
权限认证,根据交易码和令牌,认证用户是否存在用户信息增加的交易权限,如果不存在,返回错误码,错误信息:用户没有“用户信息”增加的权限。
数据验证层
数据验证,获取需要增加的“用户信息”列表,逐一验证每个字段,是否符合数据模型定义的数据库的定义,如果错误,返回错误码和相应的验证的错误信息。
数据操作
A、打开数据库事务。
B、根据filter字段判断数据是否重复规则和获取rows提交数据行字段内容,组合判断rows逐条信息的数据库中是否存在SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击),如果数据存在否则回滚事务,返回错误编码和错误信息。
注意:如果业务判断“用户ID”和“用户名称”组合不可重复,并且“邮箱”也不可重复;filter定义为:“userid,username;useremail”。如果判断“用户名称”,“邮箱”不可重复,“手机号”也不可重复,filter定义为:“username;useremail;usermobile”;判断条件组合中任何一个字段数据为空,此条件判断忽略。
C、如果是多行数据,设置为批提交模式,通过字段名称和数据库表字段名称映射动态构建插入数据库的SQL语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
D、预编译执行SQL,并且将上送的数据作为参数提交,提交成功结束事务,否则回滚事务,返回错误编码和错误信息。
以下为用户信息修改操作的说明:
系统根据加载的数据库信息。生成的用户信息表的修改接口文档如下表3
表3用户信息表的修改接口文档
上表3描述了用户信息修改的接口内容,注意:rows 列表开始和rows列表结束,表达的rows为列表,对于修改记录,rows中存放单条记录;filter字段存放修改条件字段,条件字段的值从rows的记录中获取,修改条件字段,其他字段为修改的内容字段,记录修改条件字段为数据库的主键字段;非条件字段和修改内容字段,不上送。
服务接入
服务接入接受传入的报文,获取指定的报文内容以及自动判断上传报文结构,放入数据总线。
参数解析
参数解析解析出,如上表所示的交易码,令牌信息以及需要修改的列表信息放入数据总线。
权限认证
权限认证,根据交易码和令牌,认证用户是否存在用户信息修改的交易权限,如果不存在,返回错误码,错误信息:用户没有“用户信息”修改的权限。
数据验证
数据验证,获取需要增加的“用户信息”列表,逐一验证每个字段,是否符合数据模型定义的数据库的定义,如果错误,返回错误码和相应的验证的错误信息。
数据操作
A、首先根据filter参数获取修改条件字段,构建SQL条件。
B、其次,根据rows内的非条件字段,构建修改字段的SQL内容(不需要修改也不是修改内容的字段,不需要发送数值内容)。
C、根据A和B构成的修改提交和修改内容,共同构建SQL的修改语句(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
操作失败,返回失败的异常信息,成功返回影响的代码行数。
以下为用户信息删除操作的说明:
系统根据加载的数据库信息。生成的用户信息表的删除接口文档如下表4
表4 用户信息删除的接口文档
上表4描述了用户信息删除的接口内容,注意:rows 列表开始和rows列表结束,表达的rows为列表,对于删除记录,rows中存放单条记录;filter字段存放修改条件字段,条件字段的值从rows的记录中获取,记录删除条件字段为数据库的主键字段。
服务接入
服务接入接受传入的报文,获取指定的报文内容以及自动判断上传报文结构,放入数据总线。
参数解析
参数解析解析出,如上表所示的交易码,令牌信息以及需要删除的列表信息放入数据总线。
权限认证
权限认证,根据交易码和令牌,认证用户是否存在用户信息删除的交易权限,如果不存在,返回错误码,错误信息:用户没有“用户信息”删除的权限。
数据验证
数据验证,获取需要删除的“用户信息”列表,逐一验证每个字段,是否符合数据模型定义的数据库的定义,如果错误,返回错误码和相应的验证的错误信息。
数据操作
根据filter参数获取删除条件字段,构建删除SQL(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
操作失败,返回失败的异常信息,成功返回影响的代码行数。
以下为用户信息详细查询的说明:
系统根据加载的数据库信息。生成的用户信息表的详细查询接口文档如下表5
表5 用户信息表的详细查询接口文档
上表5描述了用户信息详细查询的接口内容;
A、上行报文
rows 列表开始和rows列表结束,表达的rows为列表,对于查询记录,rows中存放单条记录;filter字段存放查询条件字段,条件字段的值从rows的记录中获取,一般记录条件字段为数据库的主键字段。
B、下行报文
rows 列表开始和rows列表结束,表达的rows为列表,对于详细查询返回记录为单条记录。
服务接入
服务接入接受传入的报文,获取指定的报文内容以及自动判断上传报文结构,放入数据总线。
参数解析
参数解析解析出,如上表所示的交易码,令牌信息以及需要查询的字段条件信息放入数据总线。
权限认证
权限认证,根据交易码和令牌,认证用户是否存在用户信息详细查询的交易权限,如果不存在,返回错误码,错误信息:用户没有“用户信息”详细查询的权限。
数据验证
数据验证,获取需要查询的“用户信息”查询条件,逐一验证每个字段,是否符合数据模型定义的数据库的定义,如果错误,返回错误码和相应的验证的错误信息。
数据操作
根据filter参数获取查询条件字段,构建查询SQL(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
操作失败,返回失败的异常信息,成功返回查询的单条记录。
以下为用户信息列表分页查询的说明:
所述信息列表分页查询协议规则包括:交易码字段、令牌字段(即权限验证信息字段)、过滤器字段(即判重条件字段)、当前页字段、页行数字段、查询排序字段、列表开始标识字段和列表结束标识字段;
系统根据加载的数据库信息。生成的用户信息表的详细查询接口文档如下表6
表6 用户信息详细查询的接口文档
上表6描述了用户信息详细查询的接口内容;
A、上行报文
rows 列表开始和rows列表结束,表达的rows为列表,对于查询记录,rows中存放单条记录;filter字段存放查询条件字段,条件字段的值从rows的记录中获取,一般记录条件字段为数据库的主键字段。
由于返回多条记录,并且翻页,需要一定的排序条件,否则会引起数据返回顺序错误,而造成数据错误,所以多条记录查询返回,需要有查询条件字段。
B、下行报文
rows 列表开始和rows列表结束,表达的rows为列表,对于详细查询返回记录为多条记录,最多为页的行数条记录。
服务接入
服务接入接受传入的报文,获取指定的报文内容以及自动判断上传报文结构,放入数据总线。
参数解析
参数解析解析出,如上表所示的交易码,令牌信息以及需要查询的字段条件信息放入数据总线。
权限认证
权限认证,根据交易码和令牌,认证用户是否存在用户信息列表分页查询的交易权限,如果不存在,返回错误码,错误信息:用户没有“用户信息”列表分页查询的权限。
数据验证
数据验证,获取需要查询的“用户信息”查询条件,逐一验证每个字段,是否符合数据模型定义的数据库的定义,如果错误,返回错误码和相应的验证的错误信息。
数据操作
根据filter参数获取查询条件字段,通过order指定字段构建查询排序,通过当前页和也行数,构建分野查询SQL(对入参进行问号字符处理即使用问号字符代替SQL语句中的输入参数,通过SQL预编译方式执行,可以有效阻止SQL注入攻击)。
操作失败,返回失败的异常信息,成功返回查询的单条记录。
本发明实施例具有如下技术效果:
通过上述方法构建系统,能够有效的解决项目中比较琐碎的常规数据维护类业务,能够有效减少开发人员的开发量和开发时间;如果配合前端相应的框架,使用模版生成的方案可能实现,数据维护类交易的0代码开发的实现方案。
通过以上方案构建的智能数据库数据表维护的微服务系统,可以直接构建成docker镜像,通过docker的基于分布式微服务集群系统比如k8s的部署,即可实现高性能,高可靠的“智能数据库数据表维护的微服务系统”的服务。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括:”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种智能提供数据库微服务的方法,其特征在于,由智能提供数据库微服务的装置采用,所述方法包括:
预先自动读取数据库中的数据表的全部字段和字段类型;并且,
根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;
收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;
根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;
如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;并且,
根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;
将所述下行响应发送给所述客户端;
其中,所述预设的协议规则包括:上行请求协议规则;
所述上行请求协议规则包括:权限验证信息字段和数据项字段;
所述根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证,包括:
根据所述权限验证信息字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取权限验证信息,并根据所述权限验证信息判断所述上行请求的权限合法性;
如果判断出所述上行请求的权限合法,则根据所述数据项字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取数据项,并根据与所述数据项对应的所述数据表中的字段的属性对所述数据项的合法性进行验证;
如果验证出所述数据项为合法,则所述上行请求的验证通过;
所述上行请求协议规则包括:交易码字段;
所述根据所述上行请求的内容完成对所述数据表的数据操作,包括:
根据所述交易码字段在所述上行请求协议规则中的位置从所述上行请求中获取交易码;
根据所述交易码识别所述上行请求对应的数据操作;
根据所述上行请求对应的数据操作生成与相应的SQL命令;
针对所述数据表执行所述SQL命令;
其中,所述SQL命令进行了SQL注入安全防护。
2.如权利要求1所述的智能提供数据库微服务的方法,其特征在于,所述预先自动读取数据库中的数据表的全部字段和字段类型,包括:
在所述智能提供数据库微服务的装置完成部署并启动后,自动连接所述数据库,并读取所述数据库的数据表的全部字段和字段类型。
3.如权利要求1所述的智能提供数据库微服务的方法,其特征在于,所述收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求,包括:
收到来自所述客户端的上行客户端报文,并且自动识别客户端报文格式,并且通过协议转换和/或数据类型转换将所述上行客户端报文转换为所述上行请求;
所述将所述下行响应发送给所述客户端,包括:
通过协议转换和/或数据类型转换将所述下行响应按所述客户端报文格式转换为下行客户端报文,并将所述下行客户端报文发送给所述客户端。
4.如权利要求1所述的智能提供数据库微服务的方法,其特征在于,所述协议规则还包括:下行响应协议规则;
所述根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应,包括:
获取所述SQL命令的执行结果;
根据所述上行请求对应的数据操作所对应的下行响应协议规则和所述SQL命令的执行结果生成所述下行响应。
5.如权利要求1所述的智能提供数据库微服务的方法,其特征在于,所述根据所述上行请求对应的数据操作生成与相应的SQL命令,包括:
根据所述上行请求对应的数据操作和所述上行请求中访问的数据表的字段生成预编译SQL语句;
根据所述上行请求中访问的数据表的字段对应的数据项执行所述预编译SQL语句。
6.一种智能提供数据库微服务的装置,其特征在于,包括:
初始化单元,用于预先自动读取数据库中的数据表的全部字段和字段类型;
文档生成单元,用于根据预设的协议规则和所述数据表中的全部字段和相应的字段类型自动生成微服务API接口文档;
请求接收单元,用于收到由客户端根据所述微服务API接口文档发起的针对所述数据表的上行请求;
请求验证单元,用于根据所述上行请求和相应的上行请求协议规则对所述上行请求进行验证;
数据表操作单元,用于如果验证通过,则根据所述上行请求的内容完成对所述数据表的数据操作;
响应生成单元,用于根据所述上行请求的操作结果和所述协议规则生成与所述上行请求相对应的下行响应;
响应发送单元,用于将所述下行响应发送给所述客户端;
其中,所述预设的协议规则包括:上行请求协议规则;
所述上行请求协议规则包括:权限验证信息字段和数据项字段;
所述请求验证单元,包括:
权限验证模块,用于根据所述权限验证信息字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取权限验证信息,并根据所述权限验证信息判断所述上行请求的权限合法性;
数据验证模块,用于如果判断出所述上行请求的权限合法,则根据所述数据项字段在所述上行请求相应的上行请求协议规则中的位置从所述上行请求中获取数据项,并根据与所述数据项对应的所述数据表中的字段的属性对所述数据项的合法性进行验证;如果验证出所述数据项为合法,则所述上行请求的验证通过;
所述上行请求协议规则包括:交易码字段;
所述数据表操作单元,包括:
交易码获取模块,用于根据所述交易码字段在所述上行请求协议规则中的位置从所述上行请求中获取交易码;
数据操作获取模块,用于根据所述交易码识别所述上行请求对应的数据操作;
SQL命令生成模块,用于根据所述上行请求对应的数据操作生成与相应的SQL命令;
SOL命令执行模块,用于针对所述数据表执行所述SQL命令;
其中,所述SQL命令进行了SQL注入安全防护。
7.如权利要求6所述的智能提供数据库微服务的装置,其特征在于,所述初始化单元,具体用于:
在所述智能提供数据库微服务的装置完成部署并启动后,自动连接所述数据库,并读取所述数据库的数据表的全部字段和字段类型。
8.如权利要求6所述的智能提供数据库微服务的装置,其特征在于,所述请求接收单元,具体用于:
收到来自所述客户端的上行客户端报文,并且自动识别客户端报文格式,并且通过协议转换和/或数据类型转换将所述上行客户端报文转换为所述上行请求;
所述响应发送单元,具体用于:
通过协议转换和/或数据类型转换将所述下行响应按所述客户端报文格式转换为下行客户端报文,并将所述下行客户端报文发送给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211043940.XA CN115114052B (zh) | 2022-08-30 | 2022-08-30 | 一种智能提供数据库微服务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211043940.XA CN115114052B (zh) | 2022-08-30 | 2022-08-30 | 一种智能提供数据库微服务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115114052A CN115114052A (zh) | 2022-09-27 |
CN115114052B true CN115114052B (zh) | 2022-11-18 |
Family
ID=83335467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211043940.XA Active CN115114052B (zh) | 2022-08-30 | 2022-08-30 | 一种智能提供数据库微服务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115114052B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10762045B2 (en) * | 2016-07-28 | 2020-09-01 | Caringo, Inc. | Mounting dynamic endpoints |
CN111309374B (zh) * | 2020-01-21 | 2022-11-01 | 苏州达家迎信息技术有限公司 | 一种微服务系统和微服务系统中的服务调用方法 |
CN112748908B (zh) * | 2020-12-31 | 2024-02-27 | 广东广宇科技发展有限公司 | 基于SSM框架的Restful服务开发方法与装置 |
CN113676336B (zh) * | 2021-10-22 | 2022-02-08 | 深圳市明源云采购科技有限公司 | 微服务访问代理方法、设备及存储介质 |
CN114138486B (zh) * | 2021-12-02 | 2024-03-26 | 中国人民解放军国防科技大学 | 面向云边异构环境的容器化微服务编排方法、系统及介质 |
-
2022
- 2022-08-30 CN CN202211043940.XA patent/CN115114052B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115114052A (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9578027B1 (en) | Multiple data store authentication | |
US8064583B1 (en) | Multiple data store authentication | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
US20180039770A1 (en) | Multi-Factor Profile and Security Fingerprint Analysis | |
CN108959076A (zh) | 一种api在线调试方法 | |
CN110728455B (zh) | 业务处理方法、业务处理装置、存储介质与电子设备 | |
CN111290742A (zh) | 参数验证方法、装置、电子设备及可读存储介质 | |
CN110636038A (zh) | 账号解析方法、装置、安全网关及系统 | |
US8484724B2 (en) | User permissions in computing systems | |
CN111966738A (zh) | 一种通过选择前端配置自动实现后端编程的系统 | |
CN101964710A (zh) | 数字签名和验签方法 | |
CN110362630A (zh) | 数据管理方法、装置、设备与计算机可读存储介质 | |
CN110516258B (zh) | 数据校验方法及装置、存储介质、电子装置 | |
WO2014043360A1 (en) | Multi-factor profile and security fingerprint analysis | |
CN115114052B (zh) | 一种智能提供数据库微服务的方法和装置 | |
CN112433936A (zh) | 测试方法、装置及存储介质 | |
CN111045660A (zh) | 一种网上税务申报数据校验方法、装置及存储介质 | |
CN117032634A (zh) | 组件处理方法及系统 | |
CN109246077B (zh) | 分布式并发交易校验方法、装置和计算机存储介质 | |
CN115437943A (zh) | 接口文档自动化验证方法、装置和服务器 | |
CN111639478B (zh) | 一种基于excel文档的数据自动稽核方法及系统 | |
CN111010676B (zh) | 一种短信缓存方法、装置及系统 | |
CN112711628A (zh) | 数据交互方法、装置和中台 | |
CN111242705A (zh) | 一种发票数据的获取方法和装置 | |
CN110839065A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |