掌桥专利:专业的专利平台
掌桥专利
首页

基于API的查询系统及方法

文献发布时间:2023-06-19 10:08:35


基于API的查询系统及方法

技术领域

本公开涉及大数据技术领域,特别涉及基于API的查询系统及方法。

背景技术

目前,针对elasticsearch的查询通用方式有两种:

一是直接编写QDL查询语句;

二是使用elasticsearch提供的客户端工具,通过编写代码生成QDL查询语句;

在提供大量的对外API接口或是接口变化时,使用上面的两种方式都存在几个很大的问题:

一、需要通过编程语言进行代码开发,并且相关的查询散落在各个模块当中不便于统一维护,并且会频繁的进行发布上线;

二、有问题时不能及时更新,接口的请求参数、返回结果或是处理逻辑变化时也不能及时的更新;

三、无法动态的添加新的查询服务;

四、同一个查询接口,对新的业务需求有小部分不同时,无法做兼容,需要重新修改原接口或添加新的接口。

在实际的工作中,elasticsearch的查询是由一个部门统一负责,根据业务需要提供api,在业务需求及时采用以上的方式问题还不明显,但在应对多个业务开发线的需求时,以上两个问题就特别难以解决,占用了大量的人力和时间。

发明内容

本公开针对上述现有问题中的一个或者多个,提出了基于API的查询系统及方法。

根据本公开的一个方面,提供基于API的查询方法,通过接收模块以数据库接口的方式接入用户输入的查询语句,并将用户输入的查询语句发送给控制模块;

通过控制模块解析用户输入的查询语句,进行编译以及定制对应的执行规划,其中,包括编译流程和执行流程,

通过编译流程进行接收用户输入的查询语句,并进行解析JS逻辑代码和查询语句,编译后生成最终的ES查询语句和java逻辑处理代码;

通过执行流程根据最终的ES查询语句进行调用执行器获取返回结果,并根据配置对结果进行过滤或是聚合处理,最终返回的结果是用户需要的数据格式。

在一些实施方式中,编译流程包括以下步骤:

通过DQL查询语句录入查询信息并进行定义返回JSON格式;

通过DQL解析器基于抽象语法树将DQL查询语句返回的JSON格式字符串转换为DQL查询模型,并将DQL查询模型保存入数据库;

通过DQL编译器将保存入数据库的DQL查询模型转换为DIL指令集。

在一些实施方式中,执行流程包括以下步骤:

通过DIL执行器使DIL指令集生成为DQL语句;

将DQL语句和接口参数结合生成最终的DQL语句;

通过使用ES查询,利用DQL调用ES接口,获取返回响应的结果,将获取的结果进行数据聚合;

进行格式化聚合数据,返回结果。

在一些实施方式中,用户输入的查询语句包括需要查询的JSON数据的查询条件,查询结果为根据查询条件所获得的JSON数据;数据库接口为JDBC或ODBC。

在一些实施方式中,还包括对API配置管理,包括以下内容:

配置API访问地址;

配置API的请求参数和返回结果;

配置API入参处理逻辑,根据不同的入参选择不同的查询语句;

配置API的冒烟测试的逻辑内容;

在一些实施方式中,查询方法的操作流程,包括以下步骤

步骤1.1:管理页新建接口;

步骤1.2:进行接口方法选择,包括GET、POST、PUT和DELETE;

步骤1.3:输入接口地址URL;

步骤1.4:输入接口请求头request header;

步骤1.5:输入DQL查询语言;

步骤1.6输入接口请求参数;

步骤1.7:输入接口返回格式,定制JSON字符串格式;

步骤1.8:运行接口返回确认,接口返回JSON格式确认;

步骤1.9:进行接口冒烟测试:修改入参后,点冒烟按钮,确认冒烟成功;

步骤2.0:接口信息保存,将步骤1.1至1.7数据保存进数据库DB;

步骤2.1:接口地址进行发布,修改接口状态,对外接口生效。

本公开还提供一种基于API的查询系统,包括:

接收模块,用于接收用户输入的查询语句;

控制模块,用于解析用户输入的查询语句,进行编译以及定制对应的执行规划,其中,控制模块包括编译单元和执行单元,

编译单元用于对输入查询语句进行解析,编译后生成最终的ES查询语句;

执行单元用于调用执行器获取返回结果,根据配置处理返回结果,返回的结果是用户需要的数据格式。

在一些实施方式中,接收用户通过客户端输入的以SQL描述的查询语句。

在一些实施方式中,编译单元包括:

DQL查询单元,用于通过DQL查询语句录入查询信息并进行定义返回JSON格式;

DQL解析单元,用于通过DQL解析器基于抽象语法树将DQL查询语句返回的JSON格式字符串转换为DQL查询模型,并将DQL查询模型保存入数据库;

DIL保存单元,用于通过DQL编译器将保存入数据库的DQL查询模型转换为DIL指令集。

在一些实施方式中,编译单元包括:

DQL查询单元,用于通过DQL查询语句录入查询信息并进行定义返回JSON格式;

DQL解析单元,用于通过DQL解析器基于抽象语法树将DQL查询语句返回的JSON格式字符串转换为DQL查询模型,并将DQL查询模型保存入数据库;

DIL保存单元,用于通过DQL编译器将保存入数据库的DQL查询模型转换为DIL指令集。

本公开的有益效果是:与现有技术相比,本公开能实现接口迭代零开发,开发速度大大加快;接口项目只需首次安装部署,之后的项目迭代不用再次发布;而且用DQL查询代替QDL完成ES查询;接口配置与冒烟测试集成,减少接口测试时间;接口冒烟测试通过才可发布,提高了接口正确性;接口集中管理,查找使用方便;也方便统一接口返回JSON格式。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1为本公开的基于API的查询方法的流程图;

图2为本公开的基于API的查询方法的编译流程的流程图;

图3为本公开的基于API的查询方法的执行流程的流程图;

图4为本公开的一个实施例提供的API查询系统结构示意图;

图5为本公开的一个实施例提供的API查询系统编译单元结构示意图;

图6为本公开的一个实施例提供的API查询系统执行单元结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

需要说明的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面结合附图,对本公开做进一步的详细说明。

实施例1:

参考说明书附图1所示,示出了本申请基于API的查询方法,该方法可以包括以下步骤:

S1.通过接收模块以数据库接口的方式接入用户输入的查询语句,并将用户输入的查询语句发送给控制模块;

S2.通过控制模块解析用户输入的查询语句,进行编译以及定制对应的执行规划,其中,包括编译流程和执行流程;

S3.通过编译流程进行接收用户输入的查询语句,并进行解析JS逻辑代码和查询语句,编译后生成最终的ES查询语句和java逻辑处理代码;

S4.通过执行流程根据最终的ES查询语句进行调用执行器获取返回结果,并根据配置对结果进行过滤或是聚合处理,最终返回的结果是用户需要的数据格式。

在本实施例中的ES是指ElasticSearch。

由此,通过单独设计了针对ElasticSearch的API编辑,同时配合API的查询引擎操作,包括编译流程和执行流程,实现了API的配置式开发,每次新增或修改API时,只需要修改对应的API配置项,保存后发布即可对外提供服务,不需要在业务中编写代码,实现API统一维护。

在可选的实施例中,参考说明书附图2所示,编译流程包括以下步骤:

S31.通过DQL查询语句录入查询信息并进行定义返回JSON格式;

S32.通过DQL解析器基于抽象语法树将DQL查询语句返回的JSON格式字符串转换为DQL查询模型,并将DQL查询模型保存入数据库;

S33.通过DQL编译器将保存入数据库的DQL查询模型转换为DIL指令集。

具体的,本申请中的DQL是指动态查询语言Dynamic query language,QDL是指ElasticSearch的结构化查询Query DSL。

在可选的实施例中,参考说明书附图3所示,执行流程包括以下步骤:

S41.通过DIL执行器使DIL指令集生成为DQL语句;

S42.通过将DQL语句和接口参数结合生成最终的DQL语句;

S43.通过使用ES查询,利用DQL调用ES接口,获取返回响应的结果,将获取的结果进行数据聚合或是过滤处理;

S44.进行格式化聚合数据,返回结果。

具体的,举例说明:比如过滤是指通过查询语句查出100条数据,每条语句20个字段,但有可能会根据某些属性,比如地区、人员权限等属性过滤掉一部分数据,同时在调用方可能只需求10个字段的时候,对于20个字段就会把多余的字段去除掉,可通过js对查询结果进行处理的;

举例说明:聚合是指一个api接口配置里面会多条查询语句,会把多个查询结果进行合并/重新组装数据,组成符合调用方需要的数据格式,这也是通过js代码对结果进行简单的逻辑处理的。

在可选的实施例中,用户输入的查询语句包括需要查询的JSON数据的查询条件,查询结果为根据查询条件所获得的JSON数据;数据库接口为JDBC或ODBC。

在可选的实施例中,还包括对API配置管理,包括以下内容:

配置API访问地址;

配置API的请求参数和返回结果;

配置API入参处理逻辑,根据不同的入参选择不同的查询语句;配置API的冒烟测试的逻辑内容。

具体的,API配置主要由四部分:1.api请求的地址;2.请求参数3.方法体;4.返回结果。

具体配置举例说明如下:api地址:/api/live/list

接口参数:

{

"housesId":7750,

"datetime":"2020-10-10"

}

配置内容:

返回结果格式:

由此,可实现WEB端对API进行可视化配置,具体包括:采用类JS语言,可对参数和查询结果进行简单的逻辑处理;编写查询QDL语句;API的请求参数和返回结果配置;保存、修改、删除API配置内容;对API接口进行冒烟测试、测试通过的可以进行发布、下架操作。

在可选的实施例中,基于API查询方法的操作流程,包括以下步骤

步骤1.1:管理页新建接口;

步骤1.2:进行接口方法选择,包括GET、POST、PUT和DELETE;

步骤1.3:输入接口地址URL;

步骤1.4:输入接口请求头request header;

步骤1.5:输入DQL查询语言;

步骤1.6输入接口请求参数;

步骤1.7:输入接口返回格式,定制JSON字符串格式;

步骤1.8:运行接口返回确认,接口返回JSON格式确认;

步骤1.9:进行接口冒烟测试:修改入参后,点冒烟按钮,确认冒烟成功;

步骤2.0:接口信息保存,将步骤1.1至1.7数据保存进数据库DB;

步骤2.1:接口地址进行发布,修改接口状态,对外接口生效。其中,冒烟测试就是模拟调用来调用该API接口,通过接口地址加上请求参数来访问API接口,测试接口是否正常,只测试正常的接口才能进行发布,对外提供服务,防止错误的API接口发布到线上。

在可选的实施例中,访问地址由调用方提供需要,根据参数查询数据以及数据处理逻辑,然后在配置器里面配置api,对调用方提供查询服务,由此,不用传统的开发方式通过java代码进行开发,再编译/发版/测试/上线重新部署才能使用,通过配置能够快速完成传统开发的功能,集成冒烟测试功能,可以不用进行停机部署发版,直接发布接口即可使用。

实施例2,参考说明书附图4,示出了本申请一个实施例提供的用于执行上述任一基于API查询方法的查询系统,包括:

接收模块1,用于接收用户输入的查询语句;

控制模块2,用于解析用户输入的查询语句,进行编译以及定制对应的执行规划,其中,控制模块包括编译单元和执行单元,

编译单元3,用于对输入查询语句进行解析,编译后生成最终的ES查询语句;

执行单元4,用于调用执行器获取返回结果,根据配置处理返回结果,返回的结果是用户需要的数据格式。

在可选的实施例中,接收用户通过客户端输入的以SQL描述的查询语句。

在可选的实施例中,参考说明书附图5,编译单元3包括:

DQL查询单元31,用于通过DQL查询语句录入查询信息并进行定义返回JSON格式;

DQL解析单元32,用于通过DQL解析器基于抽象语法树将DQL查询语句返回的JSON格式字符串转换为DQL查询模型,并将DQL查询模型保存入数据库;

DIL保存单元33,用于通过DQL编译器将保存入数据库的DQL查询模型转换为DIL指令集。

在可选的实施例中,参考说明书附图6,执行单元4包括:

DIL执行单元41,用于通过DIL执行器使DIL指令集生成为DQL语句;

DQL语句生成单元42,用于将DQL语句和接口参数结合生成最终的DQL语句;

ES查询单元43,用于通过使用ES查询,利用DQL调用ES接口,获取返回响应的结果,将获取的结果进行过滤或是数据聚合;

格式化单元44,用于将进行过滤或是数据聚合的结果进行数据格式化,并返回结果。

本公开有益效果:

接口迭代零开发,全配置,开发速度大大加快;接口项目只需安装部署1次,以后项目迭代不用再次发布;用DQL查询代替QDL完成ES查询;接口配置与冒烟测试集成,减少接口测试时间;接口冒烟测试通过才可发布,提高了接口正确性;接口集中管理,查找使用方便;方便统一接口返回JSON格式。

需要说明的是,上述实施例提供的系统,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的系统与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

以上的仅是本公开的一些实施方式。对于本领域的普通技术人员来说,在不脱离本公开创造构思的前提下,还可以做出若干变形和改进,这些都属于本公开的保护范围。

相关技术
  • 基于结构化查询语言的BI系统的API应用方法及系统
  • 基于API的实时、离线数据查询方法及系统
技术分类

06120112437306