http接口的数据表字段查询方法及系统与流程

文档序号:29356405发布日期:2022-03-23 00:07阅读:501来源:国知局
http接口的数据表字段查询方法及系统与流程

1.本技术涉及计算机技术领域,具体涉及一种http接口的数据表字段查询方法及一种http接口的数据表字段查询系统。


背景技术:

2.通过软件编程语言实现的web服务器,会额外提供可以http/https调用的api接口功能,api接口中经常会有这样一种功能需求,一种情况是通过api接口调用,可以查询到某种表格中的数据,返回多条/行数据列表,这种表格的每一条/行数据中包含有多列数据字段;另一种情况是在查询该表格数据的同时,将返回数据列表对某列数据字段进行过滤,即只查询某列字段为特定数据值的数据列表。基于上述针对web服务器软件系统中http接口,对这种特定表单数据的过滤查询功能需求。在现有的处理方法中,主要是获取具体的查询表格,然后在每一个实现的api接口中,对每个不同的列字段进行多层的if-else,经过逐层判断是否存在查询目标。或者通过switch语句进行查找匹配,基于查找匹配结果进行判断的方法实现。这种方法在实现过程中,对于不同的api接口表单,需要进行大量重复代码编写,且单个表单字段的代码逻辑会出现过长的情况,且对于表单字段的添加、修改、删除上的变更,涉及到代码修改的地方太多,api接口更不便于后期的维护与更新。这就使得无论是编写效率还是处理效率,均受到了极大的影响。针对现有处理方法存在的编写效率和处理效率均很低的问题,亟需一种新的http接口的数据表字段查询方法。


技术实现要素:

3.本技术实施例的目的是提供一种http接口的数据表字段查询方法及系统。
4.为了实现上述目的,本技术第一方面提供一种http接口的数据表字段查询方法,包括:获取指定数据字段的查询参数;根据预设结构列表创建规则和所述指定数据字段的查询参数,创建待返回表单;获取查询请求的对应api接口的数据表单,基于指定数据字段的查询参数和所述待返回表单,在所述数据表单中对所述指定数据字段进行查询,并将查询获得的数据保存到所述待返回表单中;基于完成数据保存的待返回表单,输出json格式的字符串,并基于所述json格式的字符串进行服务响应。
5.在本技术实施例中,所述指定数据字段的查询参数包括:由指定数据字段的名称和对应的值组成的键值对。
6.在本技术实施例中,所述待返回表单被定义为struct数据类型;其中,所述待返回表单包含多个数据字段列,每一数据字段列被定义为该struct数据的一个成员变量。
7.在本技术实施例中,每一成员变量设置有一个结构体标签,所述结构体标签的key为json和column;其中,json用于描述各数据字段在实体字串中的名称;column用于描述各数据字段在数据表单中的名称;其中,每一个成员变量表示一个数据字段在实体字串中的名称与在数据表单中的名称之间的映射关系。
8.在本技术实施例中,在基于指定数据字段的查询参数和所述待返回表单,在所述
数据表单中对所述指定数据字段进行查询之前,所述方法还包括:基于所述指定数据字段的查询参数和所述待返回表单,在所述数据表单中进行所述指定数据字段的校验,包括:根据指定数据字段在实体字串中的名称,根据所述映射关系,获得该指定数据字段在数据表单中的名称;将指定数据字段在数据表单中的名称与对应api接口的数据表单中各数据列的名称进行对比,判断是否存在匹配关系;若不存在匹配关系,确定所述指定数据字段不存在于对应api接口的数据表单中,判断该指定数据字段校验失败;若存在匹配关系,输出指定数据字段的校验成功信号。
9.在本技术实施例中,所述基于指定数据字段的查询参数和所述待返回表单,在所述数据表单中对所述指定数据字段进行查询,并将查询获得的数据保存到所述待返回表单中,包括:响应于校验成功信号,对所述指定数据字段的查询参数和所述待返回表单进行拼接,获得查询结构体参数;基于所述查询结构体参数,在所述数据表单中对所述指定数据字段进行查询,获得所述指定数据字段下的具体数据值;输出所述指定数据字段下的具体数据值,并将所述具体数据值保存到所述待返回表单中。
10.在本技术实施例中,所述基于完成数据保存的待返回表单,输出json格式的字符串,包括:根据预设json字符串序列化方法,将完成数据保存的待返回表单中的数据转化为对应的json格式的字符串。
11.本技术第二方面提供一种http接口的数据表字段查询系统,包括:采集单元,用于获取指定数据字段的查询参数,以及用于获取查询请求的对应api接口的数据表单;处理单元,用于:根据预设结构列表创建规则和所述指定数据字段的查询参数,创建待返回表单;基于指定数据字段的查询参数和所述待返回表单,在所述数据表单中对所述指定数据字段进行查询,并将查询获得的数据保存到所述待返回表单中;输出单元,用于基于完成数据保存的待返回表单,输出json格式的字符串;执行单元,用于基于所述json格式的字符串进行服务响应。
12.本技术第三方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行上述的http接口的数据表字段查询方法。
13.本技术第四方面提供一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现上述的http接口的数据表字段查询方法。
14.通过上述技术方案,获得查询需求时,根据指定数据字段构建待返回表单,然后先校验该数据是否在目标数据表单中,若校验合格,则基于创建的返回表单进行查询数据映射提取,将查询获得的数据保存到待返回表单中。然后基于该待返回表单进行数据反馈,将其中的数据处理为json格式的字符串,并基于所述json格式的字符串进行服务响应。
15.本发明方案提供了一种普适性强的基于go语言的查询算法,不需要针对不同的情况进行重复编码,直接利用本方法便可以满足http接口的所有查询需求,对于处理效率和编写效率均带来了积极影响。
16.本技术实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
17.附图是用来提供对本技术实施例的进一步理解,并且构成说明书的一部分,与下
面的具体实施方式一起用于解释本技术实施例,但并不构成对本技术实施例的限制。在附图中:
18.图1示意性示出了根据本技术实施例的http接口的数据表字段查询方法的步骤流程图;
19.图2示意性示出了根据本技术实施例的查询指定数据字段的流程示意图;
20.图3示意性示出了根据本技术实施例的http接口的数据表字段查询系统的系统结构图;
21.图4示意性示出了根据本技术实施例的计算机设备的内部结构图。
具体实施方式
22.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本技术实施例,并不用于限制本技术实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
23.需要说明,若本技术实施例中有涉及方向性指示(诸如上、下、左、右、前、后
……
),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
24.另外,若本技术实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
25.通过软件编程语言实现的web服务器,会额外提供可以http/https调用的api接口功能,api接口中经常会有这样一种功能需求,一种情况是通过api接口调用,可以查询到某种表格中的数据,返回多条/行数据列表,这种表格的每一条/行数据中包含有多列数据字段;另一种情况是在查询该表格数据的同时,将返回数据列表对某列数据字段进行过滤,即只查询某列字段为特定数据值的数据列表。基于上述针对web服务器软件系统中http接口,对这种特定表单数据的过滤查询功能需求。
26.在现有的处理方法中,主要是获取具体的查询表格,然后在每一个实现的api接口中,对每个不同的列字段进行多层的if-else,经过逐层判断是否存在查询目标。或者通过switch语句进行查找匹配,基于查找匹配结果进行判断的方法实现。这种方法在实现过程中,对于不同的api接口表单,需要进行大量重复代码编写,且单个表单字段的代码逻辑会出现过长的情况,且对于表单字段的添加、修改、删除上的变更,涉及到代码修改的地方太多,api接口更不便于后期的维护与更新。这就使得无论是编写效率还是处理效率,均受到了极大的影响。所以,亟需一种能够高效进行数据表字段查询的http接口的逻辑实现方法。本发明便是基于该问题,提供一种统一的、简洁的逻辑处理方法,解决上面述的代码编码问题。
27.为了便于解释,本技术具体实施方式由go语言实现进行介绍,但是需要知道的是,并不仅仅go语言可实现,基于本技术提出的理念过程,任何编程语言均在理论上可以实现本技术提出的方法。go语言是一种静态强类型、编译型语言,其语法与c相近,但功能上有:内存安全,gc(垃圾回收),结构形态及csp-style并发计算。作为一门只有十年历史的新语言,go语言的发展势头相当迅猛,在很多应用上,其已经代替了python,例如:处理储存在s3上的云端日志;在s3上的bucket和/或region之间移动tb级别大小的文件;匹配本地的数据库记录和s3上的文件,以保证文件处于同步状态。这些任务大多是一次性的,所以使用脚本语言操作就会比较合适,这些任务需要快速地编程,而代码用过一次一般就舍弃了,一般来说,这种任务的需求都比较新颖、比较专一,其代码很少需要复用。go语言具有的拥有编译器很方便、开发速度快、更好的并行性、部署简单、风格一致和工具便捷的优点。本发明便是基于go语言的优势,创建了一种实现数据表字段查询的http接口的逻辑实现方法。
28.图3示意性示出了根据本技术实施例的http接口的数据表字段查询系统的系统结构。如图3所示,本技术提供了一种http接口的数据表字段查询系统,包括:采集单元,用于获取指定数据字段的查询参数,以及用于获取查询请求的对应api接口的数据表单;处理单元,用于:根据预设结构列表创建规则和所述指定数据字段的查询参数,创建待返回表单;基于指定数据字段的查询参数和所述待返回表单,在所述数据表单中对所述指定数据字段进行查询,并将查询获得的数据保存到所述待返回表单中;输出单元,用于基于完成数据保存的待返回表单,输出json格式的字符串;执行单元,用于基于所述json格式的字符串进行服务响应。
29.图1示意性示出了根据本技术实施例的http接口的数据表字段查询方法的流程示意图。如图1所示,在本技术一实施例中,提供了一种http接口的数据表字段查询方法,包括以下步骤:
30.步骤s10:获取指定数据字段的查询参数。
31.具体的,本发明的核心目的是实现目标数据表字段的直接查询和提取,基于该目的,首先需要获取待查询的表单字段。在本发明中,完整的web服务的api接口的一次页面请求的方法如下:首先,客户端通过http get方法,调用web服务器端的api接口,查询指定表单的指定数据字段值下的数据列表;然后web服务器端收到http请求,进入到api接口实现的代码函数中进行执行;接着在函数中先获取请求的参数中指定需要查询的表单的数据字段的key和value,并对该参数key和value进行数据校验。参数检验不通过返回请求错误,参数检验通过,进行下一步;然后根据请求的url和参数,拼接需要进行数据库查询的sql语句、或者方法,进行数据库数据的查询;将数据库返回的查询结果,保存到表单定义的数据结构列表,将通过json字符串序列化方法转化成json格式的字符串,最终通过http响应返回给客户端;最终客户端拿到返回的http响应的表单json数据列表,进行页面的表单显示,一次页面请求完成。
32.首先,需要获取服务查询请求,用户在前端发起服务请求,http接口基于该服务请求分配对应的api接口用于执行该业务,该api接口需要进行后续数据查询。根据查询目标获得指定数据字段的查询参数,优选的,该查询参数包括指定数据字段的名称和对应的值组成的键值对,即指定数据字段的key和value。通俗的讲,需要将用户发起的实体语言请求名称对应到存储后端的存储语言名称,然后根据映射关系调取后端的数据。所以每个数据
字段均包括一个前端名称和一个后端名称,此时获得的指定数据字段的名称便是前端的名称。
33.步骤s20:根据预设结构列表创建规则和所述指定数据字段的查询参数进行待返回表单创建。
34.具体的,上述已知,需要根据映射关系找到对应数据字段在后端的名称,基于该规则,本发明提出了一种映射关系体系,即预设的结构列表创建规则。对于需要查询的表单字段,要获得对应具体的http的api接口,然后通过其返回需要的表单字段。对于该表单字段,需要将其创建为预设的待返回表单。优选的,该待返回表单由go语言进行编写,并将该待返回表单设置为struct数据类型。该待返回表单中,包含多个表单列,这些表单列正是我们想要查询的目标集。为了进行表单列区分,将每一列的表单字段定义为struct的一个成员变量。为了表征每一列的表单字段差异化,为每一个成员变量设置一个结构体标签struct tag,该struct tag表征了对应的成员变量的身份信息。对应的结构体标签增加标签tag的key为json,用来描述表单的字段名称,增加标签tag的key为column,用来描述需要查询的数据库表的字段名称。例如,对于列字段1,其表征式为:
35.列字段1 string`json:”在json中表示的名称”column:”在数据库表中定义的名称”。
36.步骤s30:获取查询请求的对应api接口的数据表单,基于指定数据字段的查询参数和所述待返回表单,在所述数据表单中对所述指定数据字段进行查询,并将查询获得的数据保存到所述待返回表单中。
37.具体的,根据请求的url和参数,拼接需要进行数据库查询的sql语句、或者方法,获得目标数据表字段,该目标也可以由用户主动指定。为了定义该查询目标,对该查询目标设置一个名称key,用于后续检索对比。然后,需要预设查询规则。如图2,包括以下几个步骤:
38.步骤s301:将对应api接口形成的待返回表单中的所述结构体标签映射到map体系中。
39.具体的,首先定义一个通用函数checkstructtag,该函数的入参为任何定义的待返回表单的接口对象interface{}。interface{}类型,空接口,是导致很多混淆的根源。interface{}类型是没有方法的接口。由于没有implements关键字,所以所有类型都至少实现了0个方法,所以,所有类型都实现了空接口。这意味着,如果您编写一个函数以interface{}值作为参数,那么您可以为该函数提供任何值,其可以表示任何定义的待返回表单的接口对象。该函数的出参为map[string]string,该出参用来获取入参的待返回表单中,每个成员变量(列字段)的标签tag中定义的json的值为map的key,tag中定义的column的值为map的value。其中,map是一种通过key来获取value的一个数据结构,其底层存储方式为数组,在存储时key不能重复,当key重复时,value进行覆盖,我们通过key进行hash运算(可以简单理解为把key转化为一个整形数字)然后对数组的长度取余,得到key存储在数组的哪个下标位置,最后将key和value组装为一个结构体,放入数组下标处。
[0040]
步骤s302:基于go语言的反射功能,遍历所述待返回表单中的每个成员变量,将每个成员变量的结构体标签均映射到对应的key:value键值对中。
[0041]
具体的,在上述预设的通用函数checkstructtag中,其利用了go语言的reflect反
射功能。go语言的反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。基于该功能,遍历获取入参结构体struct中的每个成员的struct tag描述的json和column信息,其中,结构体标签的json值对应map的key,结构体标签的column的值对应map的value。将对应获得的map的key和map的value存储到key:value键值对中。
[0042]
步骤s303:进行指定数据字段校验。
[0043]
具体的,若指定数据字段本就不存在于对应的数据表单中,进行后续的数据查询和提取就没有意义了,为了避免出现这种无意义步骤的影响,优选的,进行具体数据查询时,首先进行指定数据字段校验。上述已知,构建的映射关系为每一个成员变量表示一个数据字段分别在实体字串中的名称和表单中的名称的映射关系,基于该映射关系,指定数据字段的名称映射为在数据表单中的名称,然后对比所述指定数据字段在数据表单中的名称和对应api接口的数据表单中各数据列的名称,判断是否存在匹配关系;若不存匹配关系,则表示所述指定数据字段不存在于所述对应表单中,该指定数据字段校验失败。若存在匹配关系,则表示当前指定数据字段存在于数据表单中,则可以执行下一步。
[0044]
步骤s304:提取具体查询数据。
[0045]
具体的,若判定所述指定数据字段存在于对应api接口的数据表单中,将提取的具体查询数据填充到所述待返回表单中。
[0046]
步骤s40:基于完成数据保存的待返回表单,输出json格式的字符串,并基于所述json格式的字符串进行服务响应。
[0047]
具体的,将这些数据则将查询到的数据表字段进行json字符串序列化,输出该json字符串序列化的同时,输出bool类型为true,告知用于查询完成,用户基于该json字符串序列进行后续处理。若所述指定数据字段不存在于对应api接口的数据表单中,则输出的字符串为空,然后输出bool类型为false,告知用户查询失败。
[0048]
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现对http接口的数据表字段查询方法。
[0049]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
[0050]
本技术实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现上述http接口的数据表字段查询方法。
[0051]
本技术实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述http接口的数据表字段查询方法。
[0052]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器a01、网络接口a02、显示屏a04、输入装置a05和存储器(图中未示出)。其中,该计算机设备的处理器a01用于提供计算和控制能力。该计算机设备的存储器包括内存储器a03和非易失性存储介质a06。该非易
失性存储介质a06存储有操作系统b01和计算机程序b02。该内存储器a03为非易失性存储介质a06中的操作系统b01和计算机程序b02的运行提供环境。该计算机设备的网络接口a02用于与外部的终端通过网络连接通信。该计算机程序被处理器a01执行时以实现一种http接口的数据表字段查询方法。该计算机设备的显示屏a04可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置a05可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0053]
本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0054]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0055]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0056]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0057]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0058]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0059]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0060]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或
其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0061]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0062]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1