前端和服务端数据交互方法、装置和计算机设备与流程

文档序号:32395517发布日期:2022-11-30 10:13阅读:30来源:国知局
前端和服务端数据交互方法、装置和计算机设备与流程

1.本技术涉及计算机技术领域,具体而言,涉及一种前端和服务端数据交互方法、装置和计算机设备。


背景技术:

2.随着互联网技术的发展,越来越多的互联网应用程序进入到人们的工作生活中,而这些应用程序中经常存在前端业务和服务器端耦合的情况,为了提高应用程序的开发效率,就需要将前端业务和服务器端进行分离。
3.相关技术中,一般地,相关技术人员会在前端与服务端之间架设一层服务于前端的后端(backend for frontend,简称bff),通过硬编码的方式调用服务端接口,在前端向服务端发送数据请求之后,服务端就会根据这个数据请求从服务端存储的数据中调用相应的数据并按照前端的业务需求进行数据转换,实现接口聚合,并返回前端需要的数据。这样,就可以实现前端与服务端之间的数据交互。
4.然而,由于这种方案在前端与服务端进行数据交互时,前端需要的数据全部需要从服务端获取或由服务端进行数据转换,这样就导致前端与服务端之间的耦合性很强。因此,这种方案存在开发应用程序的工作量大和应用程序的稳定性差的问题。


技术实现要素:

5.本技术的目的在于提供一种前端和服务端数据交互方法、装置和计算机设备,可以达到降低开发应用程序的工作量、提高应用程序的稳定性、提高该数据交互系统的适配性的效果。
6.本技术的实施例是这样实现的:
7.本技术实施例的第一方面,提供一种前端和服务端数据交互方法,应用于数据交互系统,所述数据交互系统包括前端和服务端,所述方法包括:
8.根据目标数据请求指令从所述服务端获取初始数据,所述目标数据请求指令用于指示所述前端需要从所述服务端获取的数据以及需要从所述服务端获取的数据的类,所述类对应所述服务端的至少一个接口;
9.根据元数据对所述初始数据进行转换处理,得到目标数据,所述元数据存储在所述前端,所述元数据用于指示所述类的属性信息,所述目标数据为与所述前端匹配的数据。
10.可选地,所述前端包括业务端、适配模块、视图配置模块;
11.所述根据目标数据请求指令从所述服务端获取初始数据,包括:
12.所述适配模块接收所述业务端发送的目标数据请求指令,并从所述服务端获取初始数据;
13.所述根据所述元数据对所述初始数据进行转换处理,得到目标数据,包括:
14.所述适配模块从所述视图配置模块中获取与所述业务端匹配的元数据;
15.所述适配模块根据所述元数据对所述初始数据进行转换处理,得到目标数据,并
将所述目标数据发送给所述业务端。
16.可选地,所述适配模块根据所述元数据对所述初始数据进行转换处理,得到目标数据,并将所述目标数据发送给所述业务端,包括:
17.判断所述元数据中是否存在各所述类的各字段的组装规则;
18.若存在,则根据各字段的组装规则和所述初始数据生成各字段对应的结果数据;
19.将各字段对应的所述结果数据进行组装,得到所述目标数据,并将所述目标数据发送给所述业务端。
20.可选地,所述判断所述元数据中是否存在所述初始数据中各所述类的各字段的组装规则之后,所述方法还包括:
21.若各所述类的各字段的组装规则不存在,则从所述初始数据中获取各字段对应的中间数据;
22.根据所述中间数据得到所述结果数据。
23.可选地,所述从所述初始数据中获取各字段对应的中间数据,包括:
24.判断所述元数据中是否存在各所述类的各字段的映射字段名称;
25.若存在,则根据各所述类的各字段的映射字段名称从所述初始数据中获取所述中间数据;
26.若不存在,则根据各所述类的各字段的名称从所述初始数据中获取所述中间数据。
27.可选地,所述根据所述中间数据得到所述结果数据,所述方法包括:
28.根据空值规则判断所述中间数据中是否存在有效数据;
29.若存在所述有效数据,则将所述中间数据作为所述结果数据;
30.若不存在所述有效数据,则判断所述元数据中是否存在各所述类的各字段的默认值规则;
31.若存在各所述类的各字段的默认值规则,则根据各所述类的各字段的默认值规则生成默认值数据,并根据所述默认值数据生成各字段对应的结果数据;
32.若不存在各所述类的各字段的默认值规则,则根据各所述类的各字段的数据类型生成默认值数据,并根据所述默认值数据生成各字段对应的结果数据。
33.可选地,在将所述中间数据作为所述结果数据之前,所述方法还包括:
34.对所述中间数据的数据类型进行校验;
35.在确定所述中间数据的数据类型通过校验的情况下,将所述中间数据作为所述结果数据;
36.在确定所述中间数据的数据类型未通过校验的情况下,则判断所述元数据中是否存在各所述类的各字段的默认值规则。
37.可选地,所述方法还包括:
38.在所述中间数据与所述业务端需要从所述服务端获取的数据不匹配的情况下,生成并输出第一异常信息。
39.可选地,在将各字段对应的所述结果数据进行组装,得到所述目标数据之前,所述方法还包括:
40.判断所述元数据中是否存在各字段在跨站脚本攻击时的编码信息;
41.若不存在,则将各字段对应的所述结果数据进行组装,得到所述目标数据。
42.可选地,在判断所述元数据中是否存在各字段在跨站脚本攻击时的编码信息之后,所述方法还包括:
43.若存在,则根据所述编码信息对所述结果数据进行跨站脚本攻击校验;
44.在所述结果数据未通过跨站脚本攻击校验的情况下,对所述结果数据进行编码处理,并将编码处理后的所述结果数据进行组装,得到所述目标数据;
45.在所述结果数据通过跨站脚本攻击校验的情况下,将所述结果数据进行组装,得到所述目标数据。
46.可选地,在根据所述编码信息对所述结果数据进行跨站脚本攻击校验之后,所述方法还包括:
47.在所述结果数据未通过跨站脚本攻击校验的情况下,生成并输出第二异常信息。
48.可选地,在从所述服务端获取初始数据之前,所述方法还包括:
49.所述适配模块判断是否需要进行模拟测试,若不需要,则从所述服务端获取初始数据;
50.若需要,所述适配模块则从所述视图配置模块中获取与所述业务端匹配的元数据,并根据所述元数据的属性信息和进行模拟测试的配置信息生成测试数据,并将所述测试数据作为所述目标数据。
51.可选地,所述视图配置模块中包括多个所述类;
52.在所述适配模块从所述视图配置模块中获取与所述业务端匹配的元数据之前,所述方法还包括:
53.在所述类进行初始化的情况下,所述视图配置模块通过至少一个装饰器修饰所述类和所述类的属性,并根据经各所述装饰器对所述类和所述类的属性修饰得到的所述属性信息得到所述元数据。
54.可选地,所述在所述类进行初始化的情况下,所述视图配置模块通过至少一个装饰器修饰所述类和所述类的属性,并根据经各所述装饰器对所述类和所述类的属性修饰得到的所述属性信息得到所述元数据,包括:
55.通过各所述装饰器分别修饰各所述类的字段的数据类型、各所述类的各字段的组装规则、各所述类的各字段的映射字段名称、各所述类的各字段的空值规则、各所述类的各字段的默认值规则,以及为各所述类注入泛型;
56.将各所述类的字段的数据类型、注入各所述类的泛型、各所述类的各字段的组装规则、各所述类的各字段的映射字段名称、各所述类的各字段的空值规则、各所述类的各字段的默认值规则作为所述属性信息并得到所述元数据。
57.可选地,所述在所述类进行初始化的情况下,所述视图配置模块通过至少一个装饰器修饰所述类和所述类的属性,并根据经各所述装饰器对所述类和所述类的属性修饰得到的所述属性信息得到所述元数据,还包括:
58.通过各所述装饰器分别修饰各所述类的字段的数据类型、各所述类的各字段的组装规则、各所述类的各字段的映射字段名称、各所述类的各字段的空值规则、各所述类的各字段的默认值规则、各所述类在模拟测试时的配置信息、各所述类在跨站脚本攻击时的编码信息、各所述类的各字段的默认值的校验信息,以及为各所述类注入泛型;
59.将各所述类的字段的数据类型、注入各所述类的泛型、各所述类的各字段的组装规则、各所述类的各字段的映射字段名称、各所述类的各字段的空值规则、各所述类的各字段的默认值规则、所述校验信息、所述配置信息、所述编码信息作为所述属性信息并得到所述元数据。
60.本技术实施例的第二方面,提供了一种前端和服务端数据交互装置,应用于数据交互系统,所述数据交互系统包括前端和服务端,所述装置包括:
61.获取模块,用于根据目标数据请求指令从所述服务端获取初始数据,所述目标数据请求指令用于指示所述前端需要从所述服务端获取的数据以及需要从所述服务端获取的数据的类,所述类对应所述服务端的至少一个接口;
62.转换模块,用于根据所述元数据对所述初始数据进行转换处理,得到目标数据,所述目标数据为与所述前端匹配的数据。
63.本技术实施例的第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述前端和服务端数据交互方法。
64.本技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述前端和服务端数据交互方法。
65.本技术实施例的有益效果包括:
66.本技术实施例提供的一种前端和服务端数据交互方法,通过根据目标数据请求指令从该服务端获取初始数据,根据元数据对初始数据进行转换处理,得到目标数据,这样就可以实现前端和服务端数据交互。
67.其中,根据该目标数据请求指令从该服务端获取初始数据,这样,该前端就可以从该服务器中获取到该前端需要获取的数据,便于执行后续操作。
68.由于该元数据可以用于指示该类的属性信息,具体还可以指示该前端需要从该服务端获取的数据的类的属性信息,那么,该前端根据该元数据对该初始数据进行转换处理得到的目标数据的数据类型可以是与该前端需要的数据类型匹配的。这样,就可以实现将该服务端发送的数据转换为与该前端匹配的目标数据的目的,进而实现了数据交互的目的。
69.另外,在得到该目标数据的情况下,该前端就可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。这样,也就可以确保该前端能正常进行业务处理。
70.并且,由于可以直接通过该前端从该服务端获取到初始数据,并且根据从该前端中存储的元数据将该初始数据转化为与该前端匹配的目标数据,这样,就可以实现前端与服务端的解耦,并且还可以保证前端与服务端之间正常的数据交互。另外,由于不再需要架设bff通过硬编码的方式调用该服务端的接口,就可以大幅度降低开发应用程序的工作量。即使该服务端的接口发生变动,也仅需对该前端中存储的元数据进行更新或调整即可实现对所有前端的业务代码的匹配,也就是说,在服务端接口发生变化的情况下,不再需要修改大量的业务代码,这也就可以避免产生大量的bug。这样,就可以降低开发应用程序的工作量、提高应用程序的稳定性。
71.如此,可以达到降低开发应用程序的工作量、提高应用程序的稳定性、提高该数据交互系统的适配性的效果。
附图说明
72.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
73.图1为本技术实施例提供的一种数据交互系统的结构示意图;
74.图2为本技术实施例提供的第一种前端和服务端数据交互方法的流程图;
75.图3为本技术实施例提供的第二种前端和服务端数据交互方法的流程图;
76.图4为本技术实施例提供的第三种前端和服务端数据交互方法的流程图;
77.图5为本技术实施例提供的第四种前端和服务端数据交互方法的流程图;
78.图6为本技术实施例提供的第五种前端和服务端数据交互方法的流程图;
79.图7为本技术实施例提供的第六种前端和服务端数据交互方法的流程图;
80.图8为本技术实施例提供的第七种前端和服务端数据交互方法的流程图;
81.图9为本技术实施例提供的第八种前端和服务端数据交互方法的流程图;
82.图10为本技术实施例提供的第九种前端和服务端数据交互方法的流程图;
83.图11为本技术实施例提供的一种前端和服务端数据交互装置的结构示意图;
84.图12为本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
85.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
86.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
87.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
88.在相关技术中,一般地,相关技术人员会在前端与服务端之间架设一层bff,通过硬编码的方式调用服务端接口,在前端向服务端发送数据请求之后,服务端就会根据这个数据请求从服务端存储的数据中调用相应的数据并按照前端的业务需求进行数据转换,实现接口聚合,并返回前端需要的数据。这样,就可以实现前端与服务端之间的数据交互。然而,由于这种方案在前端与服务端进行数据交互时,前端需要的数据全部需要从服务端获取或由服务端进行数据转换,这样就导致前端与服务端之间的耦合性很强。
89.具体地,由于相关技术的方案需要通过硬编码方式进行数据格式的转换,会导致
开发复杂度有所提升,同时在一定程度上会增加开发工作量。另外,在多个前端业务依赖于一个服务器接口的情况下,如果服务器接口发生变动,就需要修改大量的业务代码,这就可能会产生大量的程序错误(bug)。因此,这种方案存在开发应用程序的工作量大和应用程序的稳定性差的问题。
90.示例性地,相关技术中可以利用node.js软件在前端与服务端之间架设一层bff。并且前端可以通过调用node服务提供的接口进行开发,本技术实施例对此不做限定。
91.为此,本技术实施例提供了前端和服务端数据交互方法,根据目标数据请求指令从所述服务端获取初始数据,根据元数据对所述初始数据进行转换处理,得到目标数据,可以达到降低开发应用程序的工作量、提高应用程序的稳定性、提高该数据交互系统的适配性的效果。
92.本技术实施例以应用在数据交互系统中的前端和服务端数据交互方法为例进行说明。但不表明本技术实施例仅能应用于数据交互系统中实现前端和服务端数据交互。
93.图1是本技术实施例提供的一种数据交互系统的结构示意图。参见图1,该数据交互系统包括前端o和服务端d。
94.前端o可以与服务端d进行通信或数据交互。
95.其中,前端o可以包括业务端a、适配模块b、视图配置模块c。具体地,业务端a可以与适配模块b通信连接,适配模块b可以与视图配置模块c通信连接。在前端o需要和服务端d进行通信或数据交互时,可以通过适配模块b与服务端d直接进行通信或数据交互,然后再由适配模块b将与服务端d通信的信息或交互的数据发送给业务端a和/或视图配置模块c。本技术实施例对此不做限定。
96.可选地,前端o可以是指可以供用户操作或供用户发起相应指令的程序或页面,前端o也可以进行相应的业务逻辑处理或运算,前端o还可以在相应的页面上呈现不同的画面、信息或数据。另外,具体可以通过前端o中的业务端a来实现上述功能,本技术实施例对此不做限定。
97.服务端d可以是指处理请求、发送数据、提供服务的后端服务器。
98.下面对本技术实施例提供的前端和服务端数据交互方法进行详细地解释说明。
99.图2为本技术提供的一种前端和服务端数据交互方法的流程图,该方法可以应用于上述数据交互系统。参见图2,本技术实施例提供一种前端和服务端数据交互方法,包括:
100.步骤1001:根据目标数据请求指令从该服务端获取初始数据。
101.可选地,该目标数据请求指令可以用于指示该前端需要从上述服务端获取的数据以及需要从该服务端获取的数据的类。
102.可选地,该类对应该服务端的至少一个接口。该类可以用于定义数据的数据类型。
103.数据的数据类型可以包括整数类型、小数类型、字符类型、布尔类型以及其他任意可能的类型。
104.示例性地,数据的数据类型一般可以分为一般分为,数字(number)、字符串(string)、布尔(boolean)、数组(array)、对象(object)、时间(date)等类型。
105.又例如,整数类型可以包括byte、short、int、long。小数类型可以包括:float、double。字符类型可以包括char。布尔类型可以包括boolean。本技术实施例对此不做限定。
106.该类中可以包括至少一个字段和至少一个属性。类中定义的变量或常量可以被称
为类中的字段。而在类中定义的用于修改类的字段的方法可以被称为类的属性。
107.该类是用于实现该服务端的各接口的,并且通过各接口可以指明各个类需要实现的方法,也就是说,一个类可以对应实现多个接口。本技术实施例对此不做限定。
108.可选地,该初始数据可以是指该前端根据该目标数据请求指令从该服务端获取到的数据。该初始数据可以是指该前端从该服务端的多个不同的接口分别调取的数据,也可以是从该服务器的一个接口调取的数据。
109.该初始数据中可以包括多个子数据、多个字段和/或多个对象。
110.比如,该初始数据为某公司员工的个人简历,那么该初始数据中包括的各子数据就可以是每个员工的个人简历,该初始数据中包括的各字段就可以是个人简历中的姓名、性别、出生日期、联系方式等字段,并且各字段中还存储了具体的数据,例如,各字段中可以分别存储某公司各个员工的姓名、性别、出生日期、联系方式等数据。
111.该初始数据的数据类型可以与该前端需要的数据类型不同,也可以与该前端需要的数据类型相同,本技术实施例对此不做限定。
112.另外,该初始数据可以与该前端需要从该服务端获取的数据相同,该初始数据可以与该前端需要从该服务端获取的数据不同,本技术实施例对此不做限定。
113.值得注意的是,由于该目标数据请求指令用于指示该前端需要从该服务端获取的数据以及需要从该服务端获取的数据的类,但由于该服务端中可能并不存在该前端需要获取的数据,那么在这种情况下,该适前端从该服务端获取到的初始数据就可能不会与该前端需要获取的数据完全相同。
114.值得说明的是,该前端根据该目标数据请求指令从该服务端中获取初始数据,这样,该前端就可以从该服务器中获取到该前端需要获取的数据,便于执行后续操作。
115.步骤1002:根据元数据对初始数据进行转换处理,得到目标数据。
116.可选地,该元数据可以是存储在该前端中的与该前端匹配的元数据。
117.另外,该元数据可以是指用于描述数据属性的信息,比如该元数据可以用于指示数据的存储位置、数据的更改记录、如何对数据进行修改和/或转换和/或校验等信息。
118.该元数据也可以用于指示该类的属性信息。该元数据具体可以用于指示该前端需要从该服务端获取的数据的类的属性信息。
119.该类的属性信息可以包括至少一个类的属性,也就是说,可以根据该类的属性信息对类中的各个字段进行修改或转换。
120.可选地,该前端中可以存储有多个类。也就是说,该前端中可以包括一个用于存储各个类的数据库,该前端中包括的多个类可以分别定义不同的数据类型,也可以包括不同的字段和/或不同的属性。该前端中包括的多个类可以根据该数据交互系统的实际需要进行相应的调整,本技术实施例对此不做限定。
121.由于该元数据可以指示类的属性信息,并且可以根据该类的属性信息对类中的各个字段进行修改或转换,这样,就可以通过该属性信息对该前端获取到的初始数据进行相应的处理,以便于后续操作。
122.可选地,该目标数据可以为与该前端匹配的数据。该目标数据与该前端匹配可以是指该目标数据的数据类型与该前端需要的数据类型相同,也可以是指该目标数据的数据类型与该前端可以处理的数据类型匹配。
123.具体地,该目标数据的类可以与该前端需要从该服务端获取的数据的类相同,该目标数据的数据类型可以与该前端需要从该服务端获取的数据的数据类型相同。
124.也就是说,该目标数据可以是通过按照该前端需要的数据类型或数据结构对该初始数据进行转换得到的数据。该目标数据中的数据可以与该前端需要从该服务端获取的数据相同,也可以与该前端需要从该服务端获取的数据不同,本技术实施例对此不做限定。
125.值得注意的是,在得到该目标数据的情况下,该前端就可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。
126.值得说明的是,由于该元数据可以用于指示该类的属性信息,且可以指示该前端需要从该服务端获取的数据的类的属性信息,那么,该前端根据该元数据对该初始数据进行转换处理得到的目标数据的数据类型可以是与该前端需要的数据类型匹配的。这样,就可以实现将该服务端发送的数据转换为与该前端匹配的目标数据的目的,进而实现了数据交互的目的。如此,也就可以提高该数据交互系统的适配性的效果。
127.在本技术实施例中,通过根据目标数据请求指令从该服务端获取初始数据,根据元数据对初始数据进行转换处理,得到目标数据,这样就可以实现前端和服务端数据交互。
128.其中,根据该目标数据请求指令从该服务端获取初始数据,这样,该前端就可以从该服务器中获取到该前端需要获取的数据,便于执行后续操作。
129.由于该元数据可以用于指示该类的属性信息,具体还可以指示该前端需要从该服务端获取的数据的类的属性信息,那么,该前端根据该元数据对该初始数据进行转换处理得到的目标数据的数据类型可以是与该前端需要的数据类型匹配的。这样,就可以实现将该服务端发送的数据转换为与该前端匹配的目标数据的目的,进而实现了数据交互的目的。
130.另外,在得到该目标数据的情况下,该前端就可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。这样,也就可以确保该前端能正常进行业务处理。
131.并且,由于可以直接通过该前端从该服务端获取到初始数据,并且根据从该前端中存储的元数据将该初始数据转化为与该前端匹配的目标数据,这样,就可以实现前端与服务端的解耦,并且还可以保证前端与服务端之间正常的数据交互。另外,由于不再需要架设bff通过硬编码的方式调用该服务端的接口,就可以大幅度降低开发应用程序的工作量。即使该服务端的接口发生变动,也仅需对该前端中存储的元数据进行更新或调整即可实现对所有前端的业务代码的匹配,也就是说,在服务端接口发生变化的情况下,不再需要修改大量的业务代码,这也就可以避免产生大量的bug。这样,就可以降低开发应用程序的工作量、提高应用程序的稳定性。
132.如此,可以达到降低开发应用程序的工作量、提高应用程序的稳定性、提高该数据交互系统的适配性的效果。
133.另外,可以明显地看出,在本技术实施例提供的前端和服务端数据交互方法中,步骤1001和步骤1002具体可以是由该前端来执行的,本技术实施例对此不做限定。
134.由于上述前端中具体还可以包括业务端、适配模块、视图配置模块,那么就可以由该业务端、该适配模块和该视图配置模块分别执行该前端需要执行的一部分步骤或操作,来完成数据交互,为此,本技术实施例还提供了一种可能的方式,参见图3,该方法具体还可
以包括:
135.步骤1003:该适配模块接收该业务端发送的目标数据请求指令,并从该服务端获取初始数据。
136.可选地,该目标数据请求指令具体还可以用于指示该业务端需要从该服务端获取的数据以及需要从该服务端获取的数据的类。
137.可选地,该初始数据具体还可以是指该适配模块根据该目标数据请求指令从该服务端获取到的数据。
138.该初始数据的数据类型具体可以与该业务端需要的数据类型不同,也可以与该业务端需要的数据类型相同,该初始数据可以与该业务端需要从该服务端获取的数据相同,该初始数据可以与该业务端需要从该服务端获取的数据不同,本技术实施例对此不做限定。
139.值得注意的是,由于该目标数据请求指令可以用于指示该业务端需要从该服务端获取的数据以及需要从该服务端获取的数据的类,但由于该服务端中可能并不存在该业务端需要获取的数据,那么在这种情况下,该适配模块从该服务端获取到的初始数据就可能不会与该业务端需要获取的数据完全相同。
140.值得说明的是,该适配模块根据该目标数据请求指令从该服务端中获取初始数据,这样,该适配模块就可以从该服务器中获取到该业务端需要获取的数据,便于执行后续操作。
141.步骤1004:该适配模块从该视图配置模块中获取与该业务端匹配的元数据。
142.可选地,可以由该前端中的该视图配置模块来存储多个类。也就是说,在该前端中该视图配置模块就可以是用于存储各个类的数据库。
143.由于该元数据可以指示类的属性信息,并且可以根据该类的属性信息对类中的各个字段进行修改或转换,这样,就可以通过该属性信息对该适配模块获取到的初始数据进行相应的处理,以便于后续操作。
144.步骤1005:该适配模块根据该元数据对该初始数据进行转换处理,得到目标数据,并将该目标数据发送给该业务端。
145.可选地,该目标数据具体可以为与该业务端匹配的数据。该目标数据与该业务端匹配具体可以是指该目标数据的数据类型与该业务端需要的数据类型相同,也可以是指该目标数据的数据类型与该业务端可以处理的数据类型匹配。
146.具体地,该目标数据的类可以与该业务端需要从该服务端获取的数据的类相同,该目标数据的数据类型可以与该业务端需要从该服务端获取的数据的数据类型相同。
147.也就是说,该目标数据可以是通过按照该业务端需要的数据类型或数据结构对该初始数据进行转换得到的数据。
148.值得注意的是,在该适配模块将该目标数据发送给该业务端的情况下,该业务端就可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。
149.值得说明的是,由于该元数据可以用于指示该类的属性信息,且可以指示该业务端需要从该服务端获取的数据的类的属性信息,那么,该适配模块根据该元数据对该初始数据进行转换处理得到的目标数据的数据类型可以是与该业务端需要的数据类型匹配的。
这样,就可以实现将该服务端发送的数据转换为与该业务端匹配的目标数据的目的,进而实现了数据交互的目的。如此,也就可以提高该数据交互系统的适配性的效果。
150.需要说明的是,该适配模块根据该目标数据请求指令从该服务端中获取初始数据,这样,该适配模块就可以从该服务器中获取到该业务端需要获取的数据,便于执行后续操作。
151.由于该元数据可以用于指示该类的属性信息,具体还可以指示该业务端需要从该服务端获取的数据的类的属性信息。该适配模块从该视图配置模块中获取与该业务端匹配的元数据,就可以便于后续根据该元数据对各个字段进行修改或转换。
152.然后,由该适配模块根据该元数据对该初始数据进行转换处理,得到目标数据,并将该目标数据发送给该业务端,那么,该适配模块根据该元数据对该初始数据进行转换处理得到的目标数据的数据类型可以是与该业务端需要的数据类型匹配的。这样,就可以实现将该服务端发送的数据转换为与该业务端匹配的目标数据的目的,进而实现了数据交互的目的。
153.并且,由于可以直接通过该适配模块从该服务端获取到初始数据,并且根据从视图配置模块中获取到的元数据将该初始数据转化为与该业务端匹配的目标数据并将该目标数据发送给该业务端,这样,就可以实现业务端与服务端的解耦,并且还可以保证业务端与服务端之间正常的数据交互。另外,由于不再需要架设bff通过硬编码的方式调用该服务端的接口,就可以大幅度降低开发应用程序的工作量。即使该服务端的接口发生变动,也仅需对该视图配置模块中的元数据进行更新或调整即可实现对所有业务端的业务代码的匹配,也就是说,在服务端接口发生变化的情况下,不再需要修改大量的业务代码,这也就可以避免产生大量的bug。这样,就可以降低开发应用程序的工作量、提高应用程序的稳定性。
154.为了清楚直观地对上述数据交互系统中的业务端a、适配模块b、视图配置模块c、服务端d的交互流程进行解释说明,本技术实施例还提供了一种可能的实现方式,参见图4,该前端和服务端数据交互方法,可以包括:
155.步骤2001:业务端a发送向适配模块b发送目标数据请求指令。
156.步骤2002:适配模块b向服务端d发送初始数据请求指令。
157.可选地,该初始数据请求指令可以是适配模块b根据该目标数据请求指令生成的向服务端d请求调取数据的指令。
158.该初始数据请求指令可以用于指示业务端a需要从服务端d获取的数据。
159.步骤2003:服务端d向适配模块b发送初始数据。
160.步骤2004:适配模块b向视图配置模块c发送元数据请求指令。
161.可选地,该元数据请求指令可以是适配模块b根据该目标数据请求指令生成的向视图配置模块c请求调取元数据的指令。
162.该元数据请求指令可以用于指示业务端a需要从服务端d获取的数据的类,也可以用于指示业务端a需要从服务端d获取的数据的类的属性信息。本技术实施例对此不做限定。
163.步骤2005:视图配置模块c向适配模块b发送元数据。
164.步骤2006:适配模块b根据元数据对初始数据进行转换处理,得到目标数据。
165.步骤2007:适配模块b将目标数据发送给业务端a。
166.这样,就可以实现将服务端d发送的数据转换为与业务端a匹配的目标数据的目的,进而实现了数据交互的目的。
167.另外,在将该目标数据发送给业务端a的情况下,业务端a可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。这样,也就可以确保业务端a能正常进行业务处理。
168.由于可以直接通过适配模块b从服务端d获取到初始数据,并且根据从视图配置模块c中获取到的元数据将该初始数据转化为与业务端a匹配的目标数据并将该目标数据发送给业务端a,这样,就可以实现业务端a与服务端d的解耦,并且还可以保证业务端a与服务端d之间正常的数据交互。另外,由于不再需要架设bff通过硬编码的方式调用服务端d的接口,就可以大幅度降低开发应用程序的工作量。即使服务端d的接口发生变动,也仅需对视图配置模块c中的元数据进行更新或调整即可实现对所有业务端的业务代码的匹配,也就是说,在服务端d接口发生变化的情况下,不再需要修改大量的业务代码,这也就可以避免产生大量的bug。这样,就可以降低开发应用程序的工作量、提高应用程序的稳定性。
169.如此,可以达到降低开发应用程序的工作量、提高应用程序的稳定性、提高该数据交互系统的适配性的效果。
170.为了能准确地将上述初始数据转换为目标数据,就需要确保元数据的准确性,那么就需要对服务端的各个接口进行描述。一般地,可以通过js对各接口进行描述,而由于js没有数据类型,所以本技术实施例还提供一种可能的实现方式,就是通过装饰器来修饰该类和该类的属性。另外,也可以通过其他任意可能的方式来对各接口进行描述,本技术提供的通过装饰器来修饰该类和该类的属性的方式是为了举例说明,但并不代表在本技术实施例中仅仅可以通过装饰器来修饰该类和该类的属性来描述各个接口。
171.在该适配模块从该视图配置模块中获取与该业务端匹配的元数据之前,该方法还包括:
172.在该类进行初始化的情况下,该视图配置模块通过至少一个装饰器修饰该类和该类的属性,并根据经各装饰器对该类和该类的属性修饰得到的该属性信息得到该元数据。
173.可选地,该类进行初始化可以是指将该类中的各个变量赋为默认值,将该类中的其他可以调整的函数、对象设置为默认状态。在本技术实施例中,可以通过任意可能的顺序和任意可能的方式对类进行初始化,本技术实施例对此不做限定。
174.一种可能的方式,在该类进行初始化的情况下,该视图配置模块通过至少一个装饰器修饰该类和该类的属性,并根据经各装饰器对该类和该类的属性修饰得到的该属性信息得到该元数据,包括:
175.通过各装饰器分别修饰各类的字段的数据类型、各类的各字段的组装规则、各类的各字段的映射字段名称、各类的各字段的空值规则,以及为各类注入泛型。
176.可选地,泛型是具有占位符或类型参数的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。注入泛型的作用是将类进行参数化,以解决不确定类中的对象的具体类型的问题。
177.示例性地,在这种情况下,可以通过type装饰器来修饰字段的数据类型、可以通过oftype装饰器来为各类注入泛型、可以通过realfield装饰器来修饰各类的各字段的映射字段名称、可以通过transfer装饰器来修饰各类的各字段的组装规则、通过defaultvalue
装饰器来修饰各类的各字段的默认值规则。本技术实施例对此不做限定。
178.将各类的字段的数据类型、注入各类的泛型、各类的各字段的组装规则、各类的各字段的映射字段名称、各类的各字段的空值规则、各类的各字段的默认值规则作为该属性信息并得到该元数据。
179.也就是说,各类的字段的数据类型、注入各类的泛型、各类的各字段的组装规则、各类的各字段的映射字段名称、各类的各字段的空值规则、各类的各字段的默认值规则就是指各类的属性,那么,就可以通过这些属性来对修改类的字段进行修改,以确保在该适配模块根据该元数据对该初始数据进行转换处理的情况下准确地可以将该初始数据转化为与该业务端匹配的目标数据。这样,可以提高将初始数据转换为目标数据的准确性,进而可以提高前端和服务端数据交互的准确性和可靠性。
180.一种可能的方式中,在该类进行初始化的情况下,该视图配置模块通过至少一个装饰器修饰该类和该类的属性,并根据经各装饰器对该类和该类的属性修饰得到的该属性信息得到该元数据,还包括:
181.通过各装饰器分别修饰各类的字段的数据类型、各类的各字段的组装规则、各类的各字段的映射字段名称、各所述类的各字段的空值规则、各类的各字段的默认值规则、各类在模拟测试(mock)时的配置信息、各类在跨站脚本(cross site script attack,简称xss)攻击时的编码信息、各类的各字段的空值的校验信息,以及为各类注入泛型。
182.示例性地,在这种情况下,还可以通过mock装饰器来修饰各类在mock时的配置信息,该配置信息可以用于指示该适配模块在mock模式中如何返回数据给该业务端。
183.还可以通过xss装饰器来修饰各类在xss攻击时的编码信息。该编码信息可以用于指示该适配模块如何进行xss攻击校验,还可以用于指示该适配模块如何对各字段或各数据进行xss攻击消除。
184.还可以通过emptycondition装饰器来修饰各类的各字段的空值的校验信息。该校验信息可以用于指示该适配模块如何对各字段的空值进行校验,该校验信息具体用于校验各字段的值是否为空值。
185.将各类的字段的数据类型、注入各类的泛型、各类的各字段的组装规则、各类的各字段的映射字段名称、各类的各字段的空值规则、各类的各字段的默认值规则、该校验信息、该配置信息、该编码信息作为该属性信息并得到该元数据。
186.值得说明的是,各类的字段的数据类型、注入各类的泛型、各类的各字段的组装规则、各类的各字段的映射字段名称、各类的各字段的空值规则、各类的各字段的默认值规则、该校验信息、该配置信息、该编码信息均是各类的属性,那么,就可以通过这些属性来对修改类的字段进行修改,以确保在该适配模块根据该元数据对该初始数据进行转换处理的情况下准确地可以将该初始数据转化为与该业务端匹配的目标数据,还可以对该初始数据和/或目标数据进行校验,以防该数据交互系统被xss攻击。这样,可以进一步提高将初始数据转换为目标数据的准确性,还可以确保得到的该目标数据的安全性,进而可以提高前端和服务端数据交互的安全性、准确性和可靠性。
187.为了提高将该初始数据转换得到该目标数据的可靠性和准确性,本技术实施例还提供一种可能的实现方式,在图3的基础上,继续参见图5,适配模块根据该元数据对该初始数据进行转换处理,得到目标数据,并将该目标数据发送给该业务端,包括:
188.步骤1006:判断该元数据中是否存在各类的各字段的组装规则。
189.可选地,各类的各字段的组装规则可以是由上述的transfer装饰器来修饰的。
190.步骤1007:若存在,则根据各字段的组装规则和该初始数据生成各字段对应的结果数据。
191.可选地,该结果数据可以是将该初始数据中的各字段对应的数据进行组装之后得到的数据。
192.该结果数据可以是按照该类定义的数据的数据类型将该初始数据中的各字段对应的数据或各子数据对应的数据进行组装得到的。也就是说,该结果数据的数据类型与该业务端需要从该服务端获取的数据的数据类型相同。
193.值得注意的是,根据各字段的组装规则和该初始数据生成各字段对应的结果数据的具体操作可以是将该初始数据中的各字段中的数据按照组装规则进行组装,以生成该结果数据。
194.步骤1008:将各字段对应的该结果数据进行组装,得到该目标数据,并将该目标数据发送给该业务端。
195.值得说明的是,将各字段对应的该结果数据进行组装可以是指按照该业务端需要从该服务端获取的数据的类将各个字段对应的数据进行组装,那么该目标数据的类可以与该业务端需要从该服务端获取的数据的类相同,该目标数据的数据类型可以与该业务端需要从该服务端获取的数据的数据类型相同,这样,就可以确保得到的该目标数据为与该业务端匹配的数据。并且,可以在该适配模块将该目标数据发送给该业务端的情况下,该业务端就可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。
196.在判断该元数据中是否存在各类的各字段的组装规则时,除了该元数据中存在各类的各字段的组装规则的情况,还会有该元数据中不存在各类的各字段的组装规则的情况,那么,在不同的情况下,就需要进行不同的处理,以准确、可靠地将该初始数据转换为该目标数据。为此,本技术实施例还提供了一种可能的实现方式。继续参见图5,判断该元数据中是否存在该初始数据中各类的各字段的组装规则之后,该方法还包括:
197.步骤1009:若各类的各字段的组装规则不存在,则从该初始数据中获取各字段对应的中间数据。
198.可选地,该中间数据可以是指在适配模块从服务端获取到初始数据之后,且无法直接通过根据各字段的组装规则和该初始数据生成各字段对应的结果数据的情况下,通过各字段的名称或各字段的映射名称从该初始数据中获取到的各字段中的数据。
199.步骤1010:根据该中间数据得到该结果数据。
200.这样,就可以生成各字段对应的该结果数据,并且在步骤1010之后,可以继续执行步骤1008的步骤,以确保得到的该目标数据为与该业务端匹配的数据,同时确保该业务端可以利用该目标数据进行相应的业务逻辑处理或运算,以实现相应的功能或得到相应的处理结果。
201.为了准确地获取出各字段对应的中间数据,本技术实施例还提供了一种可能的实现方式。从该初始数据中获取各字段对应的中间数据,包括:
202.判断该元数据中是否存在各类的各字段的映射字段名称。
203.可选地,该映射字段名称是指与各字段的名称存在映射关系的其他名称。
204.该映射关系可以是由相关技术人员提前根据需要进行设置的,也可以是适配模块通过文字语义识别算法预估得到的,还可以是适配模块、视图配置模块、服务端、业务端基于特定规则进行运算得到的。本技术实施例对此不做限定。
205.例如,该业务端需要获取的数据中某一字段的名称为name,但在服务端中与name同义的字段名称还可以有your name、my name、uname等对应的名称,此时就需要将服务端中与name同义的字段名称与该业务端需要获取的数据中这一字段的名称进行映射才能完整地、全面地获取到该业务端需要获取的数据。
206.若存在,则根据各类的各字段的映射字段名称从该初始数据中获取该中间数据。
207.若不存在,则根据各类的各字段的名称从该初始数据中获取该中间数据。
208.这样,就可以将从初始数据中完整地、全面地获取到该业务端需要获取的数据对应的中间数据,进而就可以确保根据中间数据得到结果数据的准确性和全面性。
209.为了根据该中间数据得到该结果数据,本技术实施例提供的一种可能的实现方式。在图5的基础上,参见图6,根据该中间数据得到该结果数据,该方法包括:
210.步骤1011:根据空值规则判断该中间数据中是否存在有效数据。
211.可选地,判断该中间数据中是否存在有效数据的具体操作可以是判断该中间数据中是否存在任意数值、任意字符串或其他任意不为空值的数据。
212.示例性地,该空值规则可以用于校验该中间数据中的值是否为空值。一般地,该空值规则可以是由相关技术人员或用户为该元数据进行相应的配置得到的,比如可以是经过上述装饰器修饰得到的,也可以是上述数据交互系统中默认的一种判断该元数据中是否存在有效数据的规则。本技术实施例对此不做限定。
213.举例来说,在根据该空值规则判断该中间数据中是否存在有效数据的情况下,一般地,该空值规则可以是:若该中间数据中的数据为undefiend或者null,则可以确定该中间数据的数据为空值,也即,该中间数据不存在有效数据。然而,在这个基础上,对于特定的数据类型,也会附加一些额外的规则,比如在数据的数据类型不同的情况下,可以附加不同的规则来判断该中间数据中是否存在有效数据。
214.例如,若数据的数据类型为字符类型或字符串类型,那么不但在该中间数据中的数据为undefiend或者null的情况下,可以确定该中间数据的数据为空值,而且,在该中间数据中的数据为
“”
的情况下可以确定该中间数据的数据为空值。
215.又例如,若数据的数据类型为数组类型,那么不但在该中间数据中的数据为undefiend或者null的情况下,可以确定该中间数据的数据为空值,而且,在该中间数据中的数据为[]的情况下,也可以确定该中间数据的数据为空值。
[0216]
对于不同的数据类型可以附加各种各样的空值规则来判断来判断该中间数据中是否存在有效数据,以上举例仅仅是为了进行说明,并不代表仅仅只可以在数据的数据类型为字符类型、字符串类型或数组类型的情况下才可以附加额外的空值规则,也不代表附加的额外的空值规则仅仅包括以上述举例中列举出的几种方式。
[0217]
值得注意的是,在执行步骤1011之前,还可以先判断上述元数据中是否存在各类的各字段的空值规则,若该元数据中存在各类的各字段的空值规则,那么在执行步骤1011时,则可以根据该元数据中的空值规则判断该中间数据中是否存在有效数据。若该元数据
中不存在各类的各字段的空值规则,那么在执行步骤1011时,则可以根据该数据交互系统中默认的空值规则判断该中间数据中是否存在有效数据。本技术实施例对此不做限定。
[0218]
步骤1012:若存在有效数据,则将该中间数据作为该结果数据。
[0219]
步骤1013:若不存在有效数据,则判断该元数据中是否存在各类的各字段的默认值规则。
[0220]
可选地,各类的各字段的默认值规则可以是通过defaultvalue装饰器修饰得到的。
[0221]
该默认值规则可以用于在该中间数据中不存在有效数据或该中间数据为空值的情况下,对各字段对应的中间数据进行调整或者对各字段对应的中间数据计算默认值的规则。
[0222]
步骤1014:若存在各类的各字段的默认值规则,则根据各类的各字段的默认值规则生成默认值数据,并根据该默认值数据生成各字段对应的结果数据。
[0223]
可选地,该默认值数据可以用于指示该字段对应的中间数据不存在有效数据或该中间数据为空值的数据。
[0224]
若根据该默认值数据生成一个字段对应的结果数据,那么就可以表征这个字段对应的结果数据中也不存在有效数据或者这个字段对应的结果数据为空值。
[0225]
步骤1015:若不存在各类的各字段的默认值规则,则根据各类的各字段的数据类型生成默认值数据,并根据该默认值数据生成各字段对应的结果数据。
[0226]
可选地,该默认值数据可以是根据对类进行初始化可以是指将该类中的各个变量赋为默认值生成的数据。
[0227]
该默认值数据也可以用于指示该字段对应的中间数据不存在有效数据或该中间数据为空值的数据。
[0228]
值得注意的是,步骤1011可以在步骤1009之后执行,而步骤1015可以在步骤1008之前执行,这样,可以确保该方法的执行逻辑正确。
[0229]
通过执行步骤1011-步骤1015,这样,就可以避免由于该中间数据中不存在有效数据可能导致生成的结果数据和/或目标数据存在异常的问题,也可以避免可能导致的业务端无法根据适配模块发送的目标数据进行相应的业务逻辑处理或运算的问题。如此,可以提高该数据交互系统和前端和服务端数据交互方法的稳定性和可靠性。
[0230]
若该中间数据中存在有效数据,但该中间数据的数据类型还是会存在与该业务端需要的数据的数据类型不匹配的可能,因此本技术实施例还提供一种可能的实现方式,以达到确保该中间数据的数据类型与该业务端需要的数据的数据类型匹配的目的。在图6的基础上,参见图7,在将该中间数据作为该结果数据之前,该方法还包括:
[0231]
步骤1016:对该中间数据的数据类型进行校验。
[0232]
可选地,对该中间数据的数据类型进行校验具体可以是通过type装饰器修饰得到的各字段的数据类型与该中间数据的数据类型进行比较。
[0233]
在这种情况下,若通过type装饰器修饰得到的各字段的数据类型与该中间数据的数据类型相同,则可以确定该中间数据的数据类型通过校验。若通过type装饰器修饰得到的各字段的数据类型与该中间数据的数据类型不同,则可以确定该中间数据的数据类型未通过校验。
[0234]
步骤1017:在确定该中间数据的数据类型通过校验的情况下,将该中间数据作为该结果数据。
[0235]
步骤1018:在确定该中间数据的数据类型未通过校验的情况下,则判断该元数据中是否存在各类的各字段的默认值规则。
[0236]
也就是说,在执行步骤1018之后,可以执行判断该元数据中是否存在各类的各字段的默认值规则的步骤,并且可以根据判断结果选择执行继续步骤1014或步骤1015。
[0237]
通过执行步骤1016-步骤1018,这样,就可以避免由于该中间数据中的有效数据不符合该业务端需要的数据的数据类型或者通过type装饰器修饰得到的各字段的数据类型可能导致生成的结果数据和/或目标数据存在异常的问题,也可以避免可能导致的业务端无法根据适配模块发送的目标数据进行相应的业务逻辑处理或运算的问题。如此,可以提高该数据交互系统和前端和服务端数据交互方法的稳定性和可靠性。
[0238]
为了在该适配模块得到的中间数据与该业务端需要从该服务端获取的数据不匹配的情况下,及时地告知相关技术人员,以提高数据交互系统和前端和服务端数据交互方法的安全性,本技术实施例还提供了一种可能的实现方式,该方法还包括:
[0239]
在该中间数据与该业务端需要从该服务端获取的数据不匹配的情况下,生成并输出第一异常信息。
[0240]
可选地,该第一异常信息可以用于指示该中间数据与该业务端需要从该服务端获取的数据不匹配。
[0241]
在输出该第一异常信息的情况下,可以将该第一异常信息上报给用于记录异常的异常中心,该异常中心可以是由相关技术人员设置的数据库。也可以直接将该第一异常信息发送给与该数据交互系统通信连接的其他终端设备或服务器。
[0242]
该第一异常信息可以是灯光、声音、文字等形式,本技术实施例对此不做限定。
[0243]
示例性地,该中间数据与该业务端需要从该服务端获取的数据不匹配可能会存在如下两种情况:
[0244]
第一种情况,在该中间数据中不存在有效数据的情况下,生成并输出第一异常信息。
[0245]
第二种情况,在该中间数据的数据类型未通过校验的情况下,生成并输出第一异常信息。
[0246]
值得注意的是,该第一异常信息用于表征该字段对应得到的中间结果与预期不符,该数据交互系统或该适配模块可能存在不可预见的bug。这样,就可以及时地告知相关技术人员对该数据交互系统中可能存在的bug进行修复,可以提高该数据交互系统的稳定性和安全性。
[0247]
一种可能的方式中,在该中间数据的数据类型未通过校验的情况下,需要对与该中间数据对应的目标数据进行降级处理。
[0248]
可选地,该降级处理可以是指不对该中间数据的数据类型进行修改,直接根据该中间数据生成相应的目标数据并发送到该业务端。也可以是将该中间数据的数据类型调整为预设类型,然后根据调整后的中间数据生成相应的目标数据并发送到该业务端。本技术实施例对此不做限定。
[0249]
这样,可以提高该数据交互系统和该前端和服务端数据交互方法的灵活性。
[0250]
一种可能的实现方式中,为了提高该数据交互系统和前端和服务端数据交互方法的安全性,在图5的基础上,参见图8,在将各字段对应的该结果数据进行组装,得到该目标数据之前,该方法还包括:
[0251]
步骤1019:判断该元数据中是否存在各字段在跨站脚本攻击时的编码信息。
[0252]
可选地,该编码信息可以是通过xss装饰器来修饰各类在xss攻击时得到的编码信息。
[0253]
该编码信息可以用于指示该适配模块如何进行xss攻击校验,还可以用于指示该适配模块如何对各字段或各数据进行xss攻击消除。
[0254]
示例性地,一般地,该编码信息可以是由相关技术人员或用户为该元数据进行相应的配置得到的信息,也可以是上述数据交互系统中默认的一种确定是否需要该适配模块对各数据或各字段进行xss攻击校验和/或xss攻击消除的信息,本技术实施例对此不做限定。
[0255]
步骤1020:若不存在,则将各字段对应的该结果数据进行组装,得到该目标数据。
[0256]
这样,即可根据该结果数据得到该目标数据。
[0257]
一种可能的实现方式中,继续参见图8,在判断该元数据中是否存在各字段在跨站脚本攻击时的编码信息之后,该方法还包括:
[0258]
步骤1021:若存在,则根据该编码信息对该结果数据进行跨站脚本攻击校验。
[0259]
可选地,该结果数据进行跨站脚本攻击校验可以是指校验该结果数据是否存在存储性的xss风险,这样可以提高该数据交互的安全性。
[0260]
步骤1022:在该结果数据未通过跨站脚本攻击校验的情况下,对该结果数据进行编码处理,并将编码处理后的该结果数据进行组装,得到该目标数据。
[0261]
可选地,对该结果数据进行编码处理可以是指根据该编码信息对该结果数据进行转换的操作。
[0262]
示例性地,对该结果数据进行编码处理可以是指将该结果数据中的“《”和“》”分别编码为“&lt”和“&gt”。另外,也可以通过将该结果数据中的其他符号或数值编码为另外的符号或数值,本技术实施例对此不做限定。
[0263]
步骤1023:在该结果数据通过跨站脚本攻击校验的情况下,将该结果数据进行组装,得到该目标数据。
[0264]
这样,就可以消除该结果数据可能存在的xss攻击风险,并且可以确保得到的该目标数据不存在xss攻击风险,进而可以达到提高该数据交互系统和前端和服务端数据交互方法的安全性的效果。
[0265]
一种可能的实现方式中,在根据该编码信息对该结果数据进行跨站脚本攻击校验之后,该方法还包括:
[0266]
在该结果数据未通过跨站脚本攻击校验的情况下,生成并输出第二异常信息。
[0267]
可选地,该第二异常信息可以用于表征该结果数据可能存在存储性的xss风险。
[0268]
在输出该第二异常信息的情况下,可以将该第二异常信息上报给上述异常中心。
[0269]
该第二异常信息可以是灯光、声音、文字等形式,本技术实施例对此不做限定。
[0270]
值得注意的是,该第二异常信息用于表征该结果数据可能存在存储性的xss风险。这样,就可以及时地告知相关技术人员对该数据交互系统中可能存在的xss风险进行排查,
可以提高该数据交互系统的稳定性和安全性。
[0271]
一种可能的实现方式中,参见图9,在从该服务端获取初始数据之前,该方法还包括:
[0272]
步骤1024:该适配模块判断是否需要进行模拟测试,若不需要,则从该服务端获取初始数据。
[0273]
可选地,模拟测试(mock)可以是在该适配模块从该服务端获取初始数据之前,先对该数据交互系统进行的用于验证该数据交互系统是否能正常交互的测试。
[0274]
步骤1025:若需要,该适配模块则从该视图配置模块中获取与该业务端匹配的元数据,并根据该元数据的属性信息和进行模拟测试的配置信息生成测试数据,并将该测试数据作为该目标数据。
[0275]
可选地,该配置信息可以是通过mock装饰器修饰各类得到的在mock时的配置信息。
[0276]
值得注意的是,一般地,在进行模拟测试的情况下,该业务端并不是真的需要从该服务端调取数据,而仅仅指示测试业务端、适配模块、视图配置模块、服务端之间是否可以正常交互,因此,并不需要该适配模块从该服务器端获取初始数据。这样,就可以确保前端和服务端数据交互方法的可靠性。
[0277]
下面通过图10对本技术实施例提供的前端和服务端数据交互方法的整体流程进行进一步地解释说明。参见图10,该前端和服务端数据交互方法,包括:
[0278]
步骤3001:适配模块接收业务端发送的目标数据请求指令,并从服务端获取初始数据。
[0279]
步骤3002:适配模块从视图配置模块中获取与业务端匹配的元数据。
[0280]
步骤3003:判断元数据中是否存在各类的各字段的组装规则。
[0281]
步骤3004:若存在,则根据各字段的组装规则和初始数据生成各字段对应的结果数据。
[0282]
步骤3005:若各类的各字段的组装规则不存在,则从初始数据中获取各字段对应的中间数据。
[0283]
步骤3006:根据该空值规则判断中间数据中是否存在有效数据。
[0284]
步骤3007:若不存在有效数据,则判断该元数据中是否存在各类的各字段的默认值规则。
[0285]
步骤3008:若存在各类的各字段的默认值规则,则根据各类的各字段的默认值规则生成默认值数据,并根据默认值数据生成各字段对应的结果数据。
[0286]
步骤3009:若不存在各类的各字段的默认值规则,则根据各类的各字段的数据类型生成默认值数据,并根据默认值数据生成各字段对应的结果数据。
[0287]
步骤3010:若中间数据中存在有效数据,对中间数据的数据类型进行校验。
[0288]
步骤3011:在确定中间数据的数据类型通过校验的情况下,将中间数据作为结果数据。
[0289]
步骤3012:在确定中间数据的数据类型未通过校验的情况下,则判断元数据中是否存在各类的各字段的默认值规则。
[0290]
步骤3013:判断元数据中是否存在各字段在跨站脚本攻击时的编码信息。
[0291]
步骤3014:若不存在,则将各字段对应的结果数据进行组装,得到目标数据。
[0292]
步骤3015:若存在,则根据编码信息对结果数据进行跨站脚本攻击校验。
[0293]
步骤3016:在结果数据通过跨站脚本攻击校验的情况下,将结果数据进行组装,得到目标数据。
[0294]
步骤3017:在结果数据未通过跨站脚本攻击校验的情况下,对结果数据进行编码处理,并将编码处理后的结果数据进行组装,得到目标数据。
[0295]
值得注意的是,参见图10,可以看出在步骤3001-步骤3017中,存在多个判断步骤,在需要在判断步骤之后执行的多个步骤之间可能是并行的,因此步骤3001-步骤3017的各个步骤之间的执行顺序可以参照上述相关部分的描述或图10,在此不做赘述。
[0296]
下述对用以执行的本技术所提供前端和服务端数据交互方法的装置、设备及计算机可读存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。
[0297]
图11是本技术实施例提供的一种前端和服务端数据交互装置的结构示意图,参见图11,应用于上述数据交互系统,该装置包括:
[0298]
获取模块401,可以用于根据目标数据请求指令从该服务端获取初始数据。
[0299]
可选地,该目标数据请求指令用于指示该前端需要从该服务端获取的数据以及需要从该服务端获取的数据的类,该类对应该服务端的至少一个接口。
[0300]
转换模块402,可以用于根据该元数据对该初始数据进行转换处理,得到目标数据。
[0301]
可选地,该目标数据为与该前端匹配的数据。
[0302]
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
[0303]
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微控制器,或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
[0304]
图12是本技术实施例提供的一种计算机设备的结构示意图。参见图12,计算机设备包括:存储器501、处理器502,存储器501中存储有可在处理器502上运行的计算机程序,处理器502执行计算机程序时,实现上述任意各个方法实施例中的步骤。
[0305]
本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
[0306]
可选地,本技术还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述任一前端和服务端数据交互方法实施例。
[0307]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互
之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0308]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0309]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0310]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-only memory,简称:rom)、随机存取存储器(英文:random access memory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0311]
上仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
[0312]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1