一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

生成API的方法、装置、电子设备及存储介质与流程

2022-12-20 01:30:29 来源:中国专利 TAG:

生成api的方法、装置、电子设备及存储介质
技术领域
1.本技术涉及计算机软件开发技术领域,特别涉及一种生成api(application program interface,应用程序编程接口)的方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机软件技术的发展,web应用中使用多数据源的场景越来越多,特别是针对提供数据服务的web系统,需要利用不同数据源快速生成api对外提供服务,经常的在多个数据源之间切换。
3.然而,相关技术中,配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作,亟待解决。


技术实现要素:

4.本技术提供一种生成api的方法、装置、电子设备及存储介质,以解决相关技术中配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作等问题。
5.本技术第一方面实施例提供一种生成api的方法,包括以下步骤:获取用户传入的待使用数据源身份标识;根据所述待使用数据源身份标识从预设内存缓存的键值中获取所述待使用数据源身份标识对应的数据源连接池,并从所述数据源连接池中读取所述待使用数据源身份标识对应的数据源,将所述待使用数据源身份标识和所述待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串;将所述目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。
6.根据上述技术手段,解决相关技术中配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作等问题。
7.进一步地,在根据所述待使用数据源身份标识从所述预设的数据源连接池中获取所述待使用数据源身份标识对应的数据源之前,还包括:判断预设内存缓存的键值对中是否存在与所述待使用数据源身份标识对应的主键标识;若所述预设内存缓存的键值对中不存在与所述待使用数据源身份标识对应的主键标识,则从预设的分布式缓存数据库中查找是否存在与所述主键标识对应的数据源连接信息;若所述预设的分布式缓存数据库中不存在与所述主键标识对应的数据源连接信息,则从目标数据库中读取与所述主键标识对应的数据源连接信息,并将所述数据源连接信息存入所述预设的分布式缓存数据库,并结合所述主键标识对应的数据源连接信息生成待使用数据源的连接池,将所述待使用数据源连接池存入所述预设内存缓存的键值对中。
8.根据上述技术手段,不仅可以从预设内存缓存的键值对获取主键标识,还可以通过从预设的分布式缓存数据库和目标数据库中读取数据源连接信息,保证多数据源的高效使用。
9.进一步地,上述的生成api的方法,还包括:若所述预设的分布式缓存数据库中存
在与所述主键标识对应的数据源连接信息,则从所述预设的分布式缓存数据库中获取所述主键标识对应的数据源连接信息;根据所述主键标识对应的数据源连接信息生成所述待使用数据源连接池,并将所述待使用数据源连接池存入所述预设内存缓存的键值对中。
10.根据上述技术手段,将数据源连接信息存入数据库中,数据源的动态增减,不需要重新配置文件。
11.进一步地,在获取所述用户传入的待使用数据源身份标识之前,还包括:通过预设的可操作界面引入所述待使用数据源;对所述待使用数据源进行对称加密。
12.根据上述技术手段,对数据源进行对称加密处理,方便后续需要读取数据源使用。
13.进一步地,所述待使用数据源包括字段数据源类型、数据源名称、数据源连接url、数据源用户名、数据源密码和数据源描述中的至少一种。
14.根据上述技术手段,当用户需要使用数据源时可以准确有效地查询到数据源的信息。
15.本技术第二方面实施例提供一种生成api的装置,包括:第一获取模块,用于获取用户传入的待使用数据源身份标识;第一生成模块,用于根据所述待使用数据源身份标识从预设内存缓存的键值中获取所述待使用数据源身份标识对应的数据源连接池,并从所述数据源连接池中读取所述待使用数据源身份标识对应的数据源,将所述待使用数据源身份标识和所述待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串;第二生成模块,用于将所述目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。
16.进一步地,所述第一生成模块,包括:判断单元,用于判断预设内存缓存的键值对中是否存在与所述待使用数据源身份标识对应的主键标识;查找单元,用于若所述预设内存缓存的键值对中不存在与所述待使用数据源身份标识对应的主键标识,则从预设的分布式缓存数据库中查找是否存在与所述主键标识对应的数据源连接信息;存储单元,用于若所述预设的分布式缓存数据库中不存在与所述主键标识对应的数据源连接信息,则从目标数据库中读取与所述主键标识对应的数据源连接信息,并将所述数据源连接信息存入所述预设的分布式缓存数据库,并结合所述主键标识对应的数据源连接信息生成待使用数据源的连接池,将所述待使用数据源连接池存入所述预设内存缓存的键值对中。
17.进一步地,上述的生成api的装置,还包括:第二获取模块,用于若所述预设的分布式缓存数据库中存在与所述主键标识对应的数据源连接信息,则从所述预设的分布式缓存数据库中获取所述主键标识对应的数据源连接信息;存储模块,用于根据所述主键标识对应的数据源连接信息生成所述待使用数据源连接池,并将所述待使用数据源连接池存入所述预设内存缓存的键值对中。
18.进一步地,所述第一获取模块,包括:引入单元,用于通过预设的可操作界面引入所述待使用数据源;加密单元,用于对所述待使用数据源进行对称加密。
19.进一步地,所述待使用数据源包括字段数据源类型、数据源名称、数据源连接url、数据源用户名、数据源密码和数据源描述中的至少一种。
20.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的生成api的方法。
21.本技术第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上述实施例所述的生成api的方法。
22.由此,通过获取用户传入的待使用数据源身份标识,从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,并从数据源连接池中读取待使用数据源对应的数据源,将待使用数据源身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串,将目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。解决了相关技术中配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作等问题,实现对多数据源的管理及使用,提高开发人员的开发效率。
23.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
24.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
25.图1为根据本技术实施例提供的一种生成api的方法的流程图;
26.图2为根据本技术一个实施例数据表结构的示意图;
27.图3为根据本技术一个实施例的获取数据源的流程图;
28.图4为根据本技术实施例的生成api的装置的方框示意图;
29.图5为根据本技术实施例的电子设备的结构示意图。
30.附图标记说明:10-生成api的装置、100-第一获取模块、200-第一生成模块、300-第二生成模块、501-存储器、502-处理器、503-通信接口。
具体实施方式
31.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
32.下面参考附图描述本技术实施例的生成api的方法、装置、电子设备及存储介质。
33.在介绍本技术实施例的生成api的方法之前,先简单介绍下相关技术中的多源数据管理方法。
34.相关技术中公开了基于jdbctemplate的多数据源数据库操作实现方法及装置,用于对实现不同数据源的数据库访问,然而,该方法需要通过修改配置文件进行多数据源的管理,对于正在运行的系统需要进行重启才能进行新的数据源加入以及老数据源删除。
35.相关技术中还公开了一种多数据源服务化处理方法、装置及存储介质,用于不同数据源进行快速查询,然而,该方法针对每一个数据源都需要配一个config类,导致数据源和代码耦合能力低。
36.正是基于上述问题,本技术提出一种生成api的方法,在该方法中,通过获取用户传入的待使用数据源身份标识,从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,并从数据源连接池中读取待使用数据源对应的数据源,将待使用数据源
身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串,将目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。由此,解决了相关技术中配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作等问题,实现对多数据源的管理及使用,提高开发人员的开发效率。
37.具体而言,图1为本技术实施例所提供的一种生成api的方法的流程图。
38.如图1所示,该生成api的方法包括以下步骤:
39.在步骤s101中,获取用户传入的待使用数据源身份标识。
40.可选地,在一些实施例中,在获取用户传入的待使用数据源身份标识之前,还包括:通过预设的可操作界面引入待使用数据源;对待使用数据源进行对称加密。
41.可选地,在一些实施例中,待使用数据源包括字段数据源类型、数据源名称、数据源连接url、数据源用户名、数据源密码和数据源描述中的至少一种。
42.其中,预设的可操作界面可以为计算机的操作界面。
43.具体地,用户通过提供的可操作界面引入需要使用的数据源,包括字段数据源类型、数据源名称、数据源连接url、数据源用户名、数据源密码。
44.需要说明的是,用户需要先进行数据库连接测试才能保存数据源,其中,保存的数据源的数据表结构如图2所示,本技术实施例可以使用drivermanager进行数据源连接的测试,并且用户在首次引入数据源时可以查看密码,数据源保存成功后密码不可见,若对数据源连接信息进行修改,需要重新输入正确的数据源密码,因数据源使用时需要将其读出,可以使用对称加密的方式对数据源进行加密。
45.在步骤s102中,根据待使用数据源身份标识从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,并从数据源连接池中读取待使用数据源身份标识对应的数据源,将待使用数据源身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串。
46.应当理解的是,本技术实施例在获取到用户传入的待使用数据源身份标识后,为得到其对应的数据源,可以从从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,进而就可以从该数据源连接池中读取得到待使用数据源身份标识对应的数据源,其中,数据源的获取流程将会在后文进行详细说明。
47.进一步地,为将待使用数据源身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,本技术实施例可以先定义一个代码模板,每一次生成api使用该模板进行动态编译。该代码模板为web应用中controller的代码字符串,该controller只有一个接口,该接口的功能为根据用户传入的sql语句与数据源身份标识,使用上述多数据源管理的工具类根据数据源身份标识获取到对应数据源连接池,使用jdbc(java database connectivity,java数据库连接)连接操作对应数据并返回结果。该代码模板字符串中间将5个部分作为参数,其中类名以及接口方法名由一部分固定字符串加上后缀组成,避免后面对该代码模板进行编译出现重复的类名与方法名,两个后缀作为前2个参数,第3个参数为接口的访问路径,接口访问路径只在接口方法上执行,不在类上执行,防止重复,第4个参数为用户传入的sql语句,第5个参数为用户使用的数据源身份标识。
48.需要说明的是,每次需要生成api,用户需选择所使用的数据源身份标识,传入对
应sql语句,规定接口路径,使用代码模板进行参数的替换,类名与方法名后缀采用系统时间作为替换防止重复,生成完整的代码模板字符串。
49.可选地,在一些实施例中,在根据待使用数据源身份标识从预设的数据源连接池中获取待使用数据源身份标识对应的数据源之前,还包括:判断预设内存缓存的键值对中是否存在与待使用数据源身份标识对应的主键标识;若预设内存缓存的键值对中不存在与待使用数据源身份标识对应的主键标识,则从预设的分布式缓存数据库中查找是否存在与主键标识对应的数据源连接信息;若预设的分布式缓存数据库中不存在与主键标识对应的数据源连接信息,则从目标数据库中读取与主键标识对应的数据源连接信息,并将数据源连接信息存入预设的分布式缓存数据库,并结合主键标识对应的数据源连接信息生成待使用数据源的连接池,将待使用数据源连接池存入预设内存缓存的键值对中。
50.可选地,在一些实施例中,上述的生成api的方法,还包括:若预设的分布式缓存数据库中存在与主键标识对应的数据源连接信息,则从预设的分布式缓存数据库中获取主键标识对应的数据源连接信息;根据主键标识对应的数据源连接信息生成待使用数据源连接池,并将待使用数据源连接池存入预设内存缓存的键值对中。
51.为便于理解,将在此处结合图3进行详细说明数据源的获取流程,图3为本技术一个实施例的获取数据源的流程图。
52.在步骤s301中,确定数据源身份标识对应的主键id(即主键标识)。
53.在步骤s302中,判断主键id是否存在于内存缓存键值对中,若存在,则执行步骤s303;若不存在,则执行步骤s304。
54.在步骤s303中,取出主键id对应数据源连接池返回。
55.在步骤s304中,判断redis(即预设的分布式缓存数据库)中是否存在主键id对应的数据源连接信息,若存在,则执行步骤s305-s307;若不存在,则执行步骤s308-s311。
56.在步骤s305中,从redis取出主键id对应的数据源连接信息。
57.在步骤s306中,根据连接信息生成连接池。
58.在步骤s307中,将数据连接池放入内存缓存的键值对中并返回。
59.在步骤s308中,从mysql(即目标数据库)取出主键id对应的数据源连接信息。
60.在步骤s309中,将数据源连接信息存入redis中。
61.在步骤s310中,将数据源连接信息生成连接池并放入内存缓存键值对。
62.在步骤s311中,将数据源连接池返回。
63.综上,在获取对应的数据源之前,本技术实施例可以从预设内存缓存的键值对中找是否存在与待使用数据源身份标识对应的主键id,若预设内存缓存的键值对中存在主键标识对应的数据源连接信息,则将主键id对应的数据源连接池返回;如果不存在主键id,则从redis中查找是否存在该主键id对应的数据源连接信息,若redis存在与主键id对应的数据源连接信息,则直接获取对应的数据源连接信息,生成待使用数据源连接池,将待使用数据源连接池存入预设内存缓存的键值对中,并返回;如果不存在主键id对应的数据源连接信息,则从mysql中根据获取主键id对应的数据源连接信息,存入redis中,结合主键id对应的数据源连接信息生成待使用数据源的连接池,存入预设内存缓存的键值对中,并将数据源连接池返回。
64.在步骤s103中,将目标代码模板字符串编译到目标内存,并进行bean注册和
mapping注册,生成目标应用程序编程接口api。
65.具体地,将生成的代码模板字符串调用java底层方法编译到内存中,并进行bean的注册,最后进行mapping的注册,进而完成目标应用程序编程接口api的生成。
66.根据本技术实施例提出的生成api的方法,通过获取用户传入的待使用数据源身份标识,从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,并从数据源连接池中读取待使用数据源对应的数据源,将待使用数据源身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串,将目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。由此,解决了相关技术中配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作等问题,实现对多数据源的管理及使用,提高开发人员的开发效率。
67.其次参照附图描述根据本技术实施例提出的生成api的装置。
68.图4是本技术实施例的生成api的装置的方框示意图。
69.如图4所示,该生成api的装置10包括:第一获取模块100、第一生成模块200和第二生成模块300。
70.其中,获取模块100,用于获取用户传入的待使用数据源身份标识;第一生成模块200,用于根据待使用数据源身份标识从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,并从数据源连接池中读取待使用数据源对应的数据源,将待使用数据源身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串;第二生成模块300,用于将目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。
71.可选地,在一些实施例中,第一生成模块200,包括:判断单元,用于判断预设内存缓存的键值对中是否存在与待使用数据源身份标识对应的主键标识;查找单元,用于若预设内存缓存的键值对中不存在与待使用数据源身份标识对应的主键标识,则从预设的分布式缓存数据库中查找是否存在与主键标识对应的数据源连接信息;存储单元,用于若预设的分布式缓存数据库中不存在与主键标识对应的数据源连接信息,则从目标数据库中读取与主键标识对应的数据源连接信息,并将数据源连接信息存入预设的分布式缓存数据库,并结合主键标识对应的数据源连接信息生成待使用数据源的连接池,将待使用数据源连接池存入预设内存缓存的键值对中。
72.可选地,在一些实施例中,上述的生成api的装置10,还包括:第二获取模块,用于若预设的分布式缓存数据库中存在与主键标识对应的数据源连接信息,则从预设的分布式缓存数据库中获取主键标识对应的数据源连接信息;存储模块,用于根据主键标识对应的数据源连接信息生成待使用数据源连接池,并将待使用数据源连接池存入预设内存缓存的键值对中。
73.可选地,在一些实施例中,第一获取模块100,包括:引入单元,用于通过预设的可操作界面引入待使用数据源;加密单元,用于对待使用数据源进行对称加密。
74.可选地,在一些实施例中,待使用数据源包括字段数据源类型、数据源名称、数据源连接url、数据源用户名、数据源密码和数据源描述中的至少一种。
75.需要说明的是,前述对生成api的方法实施例的解释说明也适用于该实施例的生
成api的装置,此处不再赘述。
76.根据本技术实施例提出的生成api的装置,通过获取用户传入的待使用数据源身份标识,从预设内存缓存的键值中获取待使用数据源身份标识对应的数据源连接池,并从数据源连接池中读取待使用数据源对应的数据源,将待使用数据源身份标识和待使用数据源身份标识对应的数据源填充至预设的代码模板字符串中,生成目标代码模板字符串,将目标代码模板字符串编译到目标内存,并进行bean注册和mapping注册,生成目标应用程序编程接口api。由此,解决了相关技术中配置web系统较为复杂且需要修改配置文件并且重启应用,出现大量重复工作等问题,实现对多数据源的管理及使用,提高开发人员的开发效率。
77.图5为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
78.存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序。
79.处理器502执行程序时实现上述实施例中提供的生成api的方法。
80.进一步地,电子设备还包括:
81.通信接口503,用于存储器501和处理器502之间的通信。
82.存储器501,用于存放可在处理器502上运行的计算机程序。
83.存储器501可能包含高速ram(random access memory,随机存取存储器)存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。
84.如果存储器501、处理器502和通信接口503独立实现,则通信接口503、存储器501和处理器502可以通过总线相互连接并完成相互间的通信。总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component,外部设备互连)总线或eisa(extended industry standard architecture,扩展工业标准体系结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
85.可选的,在具体实现上,如果存储器501、处理器502及通信接口503,集成在一块芯片上实现,则存储器501、处理器502及通信接口503可以通过内部接口完成相互间的通信。
86.处理器502可能是一个cpu(central processing unit,中央处理器),或者是asic(application specific integrated circuit,特定集成电路),或者是被配置成实施本技术实施例的一个或多个集成电路。
87.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的生成api的方法。
88.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不是必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
89.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性
或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
90.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
91.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列,现场可编程门阵列等。
92.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
93.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献