发明内容
针对现有技术中的上述不足,本发明提供的一种客户端自适应的响应内容控制方法、系统及存储介质解决了传统方式下需要根据不同客户端分别开发对应的微服务接口的问题,降低了服务端开发的成本。
为了达到上述发明目的,本发明采用的技术方案为:一种客户端自适应的响应内容控制系统,包括:
客户端,为与用户交互的终端设备,用于配置用户的响应内容请求;
服务端,为支撑客户端功能实现的后台服务端,其通过接口调用的方式与客户端进行交互;
接口过滤器,为客户端与服务端之间的中间媒介端,用于根据客户端的接口返回参数配置,过滤服务端返回接口至客户端的返回参数。
进一步地,所述接口过滤器包括接口注册模块、客户端配置模块、接口调用过滤模块,以及接口配置库;
所述接口注册模块用于收集服务端的接口信息,并构建接口元数据表;
所述客户端配置模块用于根据客户端的类型对客户端接口返回参数进行配置,并构建客户端配置表;
所述接口调用过滤模块用于接收、转发及返回客户端与服务端直接的接口调用信息,还用于根据客户端的实际接口调用请求,根据配置的对应客户端接口返回参数对服务端返回接口的返回参数进行过滤;
所述接口配置库用于存储接口元数据表和客户端配置表。
进一步地,所述接口配置库为关系型数据库。
本发明的有益效果为:本发明引入接口元数据管理+客户端个性化配置的方式实现不同客户端的响应内容控制,无需任何开发成本即可支撑不同客户端响应内容的控制诉求,非常灵活的支撑了不同客户端对响应数据传输量,敏感数据控制方面的需求。
一种客户端自适应的响应内容控制方法,包括以下步骤:
S1、接口准备,在接口配置库中存入接口元数据表和客户端配置表;
其中,所述接口元数据表中为服务端的接口信息,所述客户端配置表中为服务端的各接口针对不同客户端的接口返回参数配置信息;
S2、业务请求,通过接口调用过滤模块将客户端的响应内容请求对应的接口调用请求转发至服务端,并接收服务端返回的接口;
S3、配置信息读取,通过接口调用过滤模块在接口配置库中读取当前客户端对应的接口返回参数配置信息;
S4、返回参数过滤,通过接口调用过滤模块根据读取的接口返回参数配置信息对服务端当前返回的接口的原始返回参数进行过滤,得到过滤后的响应结果;
S5、响应结果返回,通过接口调用过滤模块向客户端返回响应结果,实现响应内容控制。
进一步地,所述步骤S1中,所述接口元数据表中的接口信息包括接口、请求方式、请求参数以及返回参数;
所述客户端配置表中每个客户端的接口返回参数包括接口、请求方式、请求参数、返回参数,以及客户端编码。
进一步地,所述返回参数中的每个字段均配置有属性参数,属性参数为true表示需要对应字段,属性参数为false表示不需要返回对应字段。
进一步地,所述步骤S2中,客户端的响应内容请求中的参数包括接口、请求方式、请求参数,以及客户端编码。
进一步地,所述步骤S4中,对服务端当前返回接口的原始返回参数进行过滤的方法具体为:
S41、遍历服务端当前返回接口的原始返回参数中的每一个字段,同时匹配配置的接口返回参数中的对应字段;
S42、在遍历及匹配过程中,根据接口返回参数配置信息中各字段的属性参数对原始返回参数中的字段进行过滤,得到过滤后的响应结果;
其中,当配置的接口返回参数中字段的属性参数为true时,则原始返回参数中的对应字段需要返回,无需过滤,若为false,则对应字段不需要返回需要过滤。
本发明的有益效果为:
(1)本发明通过在客户端和服务端之间设计了一个接口过滤器,根据不同的客户端可以针对同一个微服务接口配置不同的响应参数集。
(2)本发明提供的响应内容控制方法中,客户端只需要在请求微服务时传递自身的客户端编号即可,从而同一个后端服务可以根据客户端自适应的返回响应内容,减少网络传输开销,减少敏感数据传输。
(3)本发明方法减少客户端数据处理量,避免了传统方式下需要根据不同的客户端分别开发对应的微服务接口,降低了服务端开发维护成本。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,执行所述计算机程序时实现响应内容控制方法的步骤。
本发明的有益效果为:本发明实现响应内容控制方法的计算机程序提供了对应的计算机可读存储介质,方便用户直接使用存储介质实现响应内容自适应控制。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例1:
本发明实施例提供了一种客户端自适应的响应内容控制系统,包括:
客户端,为与用户交互的终端设备,用于配置用户的响应内容请求;
服务端,为支撑客户端功能实现的后台服务端,其通过接口调用的方式与客户端进行交互;
接口过滤器,为客户端与服务端之间的中间媒介端,用于根据客户端的接口返回参数配置,过滤服务端返回接口至客户端的返回参数。
本实施例中的客户端可以为PC端、平板电脑端PAD以及手机端,本实施例中的服务端为客户端提供服务的微服务器、云服务器等后台服务端。
本实施例中的接口过滤器包括接口注册模块、客户端配置模块、接口调用过滤模块,以及接口配置库;接口注册模块用于收集服务端的接口信息,并构建接口元数据表,其可以通过一些开源软件(如swagger)自动采集,也可以通过管理员手工输入;客户端配置模块用于根据客户端的类型对客户端接口返回参数进行配置,并构建客户端配置表;接口调用过滤模块用于接收、转发及返回客户端与服务端直接的接口调用信息,还用于根据客户端的实际接口调用请求,根据配置的对应客户端接口返回参数对服务端返回接口的返回参数进行过滤;接口配置库用于存储接口元数据表和客户端配置表。
本实施例中的接口配置库为关系型数据库,如mysql。
实施例2:
本发明实施例针对实施例1中的客户端自适应的响应内容控制系统提供了具体地响应控制方法,如图1所示,包括以下步骤:
S1、接口准备,在接口配置库中存入接口元数据表和客户端配置表;
其中,接口元数据表中为服务端的接口信息,客户端配置表中为服务端的各接口针对不同客户端的接口返回参数配置信息;
S2、业务请求,通过接口调用过滤模块将客户端的响应内容请求对应的接口调用请求转发至服务端,并接收服务端返回的接口;
S3、配置信息读取,通过接口调用过滤模块在接口配置库中读取当前客户端对应的接口返回参数配置信息;
S4、返回参数过滤,通过接口调用过滤模块根据读取的接口返回参数配置信息对服务端当前返回的接口的原始返回参数进行过滤,得到过滤后的响应结果;
S5、响应结果返回,通过接口调用过滤模块向客户端返回响应结果,实现响应内容控制。
本实施例步骤S1中,接口元数据表中的接口信息包括接口、请求方式、请求参数以及返回参数。
本实施例提供了一种接口元数据表如表1所示;
表1:接口元数据表
在本实施例的表1中,字段url表示接口,字段request_type表示请求方式,字段req_params表示请求参数,字段resp_params表示返回参数。
在本实施例中,如表1所示,其中返回参数中的每个字段均配置有属性参数(required),属性参数为true表示需要对应字段,属性参数为false表示不需要返回对应字段。
在本实施例中,提供了服务端一个用户信息查询接口的示例,如表1所示,请求参数为按用户name查询,返回参数包括id,name(姓名),sex(性别),age(年龄),job(岗位),certID(身份证号),phone(手机),university(大学),address(地址),company(公司);其中包含了用户的一些敏感信息,如身份证号,手机,地址等。
本发明实施例中的客户端配置表中每个客户端的接口返回参数包括接口、请求方式、请求参数、返回参数,以及客户端编码。
在本实施例中,提供了如表2所示的客户端配置表示例;
表2:客户端配置表
本发明实施例中的客户端配置表(表2)中的参数与接口元数据表(表1)相比,多了一个客户端编码client_code,用于为不同的客户端配置不同的实例信息,每增加一个客户端就增加一条对应的客户端编码记录。
在本实施例中,针对PC、PAD两种类型的客户端对于同一接口分别做如表3所示的配置,返回不同的参数。
表3:不同客户端接口返回参数配置表
在本发明实施例的步骤S2中,客户端的响应内容请求中的参数包括接口、请求方式、请求参数,以及客户端编码。
在本发明实施例中,客户端的响应内容请求的请求格式如下:
/api/userInfo
name=warren&client_code=PC
其中,/api/userInfo为接口url,name和client_code为请求参数,在http的header头中存放请求的方式。
在本发明实施例的步骤S3中,接口调用过滤模块根据本次响应内容请求的client_code,接口url,请求方式查询客户端配置表2,获取可返回的参数集合。
在本实施例中,如请求的client_code=PC,url=/api/userInfo,请求方式=Get,则查询出的返回参数集合为
{
"id": {"required":"true"},
"name": {"required":"true"},
"sex": {"required":"true"},
"age": {"required":"true"},
"job": {"required":"true"},
"certID": {"required":"true"},
"phone": {"required":"true"},
"university":{"required":"true"},
"address": "required":"true"},
"company": {"required":"true"}
}
在本发明实施例的步骤S4中,对服务端当前返回接口的原始返回参数进行过滤的方法具体为:
S41、遍历服务端当前返回接口的原始返回参数中的每一个字段,同时匹配配置的接口返回参数中的对应字段;
S42、在遍历及匹配过程中,根据接口返回参数配置信息中各字段的属性参数对原始返回参数中的字段进行过滤,得到过滤后的响应结果;
其中,当配置的接口返回参数中字段的属性参数为true时,则原始返回参数中的对应字段需要返回,无需过滤,若为false,则对应字段不需要返回需要过滤。
在本实施例中,提供了上述过滤方法的具体实例:
对于接口调用过滤模块获取的信息:public String filterResponse(StringoriResponse, String configInfo)
其中oriResponse代表服务端返回的原始信息,其结构以json格式表示,形如{“key1”:”value1”,”key2:”:”value2”}
configInfo代表客户端针对该接口的配置信息,其结构亦以json格式表示,形如
{
“key1”:{“required”:”true”},”key2”:{“required”:”false”}
}
通过遍历oriResponse的每一个字段,同时匹配configInfo中的对应字段的required属性,若required属性为true, 则表示需要返回,不能过滤,若required属性为false,则表示不需要返回,过滤掉该字段信息。
具体地,在上述实例中,从服务端返回的原始信息oriResponse如下示例:
{
"id": "00001234",
"name": "warren",
"sex": "male",
"age": "40",
"job": "engineer",
"certID":"511122198110120016"
"phone": "18081976445"
"university": "SCU",
"address": "四川省成都市高新区",
"company": "成都瑞华"
}
根据表2的配置过滤返回的参数集合:
如客户端是PC001,其配置的返回参数集configInfo为:
{
"id": {"required":"true"},
"name": {"required":"true"},
"sex": {"required":"true"},
"age": {"required":"true"},
"job": {"required":"true"},
"certID": {"required":"true"},
"phone": {"required":"true"},
"university":{"required":"true"},
"address": "required":"true"},
"company": {"required":"true"}
}
由于PC001的客户端的配置信息中所有的参数required属性均为ture, 表示需要全部返回,则不过滤任何字段,按原始信息返回。
按以上的方法,如客户端是PAD001,其配置的返回参数集为
{
"id": {"required":"true"},
"name": {"required":"true"},
"sex": {"required":"true"},
"age": {"required":"true"},
"job": {"required":"false"},
"certID": {"required":"false"},
"phone": {"required":"false"},
"university":{"required":"false"},
"address": "required":"false"},
"company": {"required":"false"}
}
则需过滤掉除id,name,sex,age四个字段外的其他字段,过滤后的结果如下所示:
{
"id": "00001234",
"name": "warren",
"sex": "male",
"age": "40"
}
实施例3:
本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,执行计算机程序时实现响应内容控制方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器,上述程序指令可由电子设备的处理器执行以完成上述实施例1中的响应内容控制方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。