一种前后端分离场景下的非侵入式数据交互方法及装置

文档序号:33294925发布日期:2023-02-28 21:09阅读:29来源:国知局
一种前后端分离场景下的非侵入式数据交互方法及装置

1.本发明涉及数据交互方法技术领域,尤其涉及一种前后端分离场景下的非侵入式数据交互方法及装置。


背景技术:

2.前后端分离是目前很多复杂软件系统所采取的开发方式,为保证系统安全,前后端均需要对用户提交的各种数据进行通用校验(如是否为空、格式是否合法、长度/范围是否合法等),而目前普遍采用的校验逻辑实现方法具有以下不足:
3.1、同一类型的校验逻辑(仅用于告知用户的提示文案不同)在前、后端的各个业务模块(页面)中大量出现,导致代码冗余度较高;
4.2、用以实现通用校验逻辑的代码侵入了用于实现具体交互逻辑(对于前端)和业务逻辑(对于后端)的代码,严重降低了代码的可理解性与系统的可扩展性。


技术实现要素:

5.有鉴于此,本发明的目的在于提出一种前后端分离场景下的非侵入式数据交互方法及装置,以解决上述技术问题。
6.基于上述目的,本发明提供了一种前后端分离场景下的非侵入式数据交互方法,包括:
7.在前端业务模块中设置前端通用校验逻辑,并在前端配置全局请求拦截器h
req
,其中,h
req
通过正则表达式re
front
描述全部需要在前端集中处理的请求;
8.前端获取请求p,若请求p在前端通用校验逻辑中校验合格,则判断请求p与re
front
是否匹配,若不匹配,将请求p发送给后端;若匹配,前端执行请求p包含的请求参数所对应的操作逻辑和/或触发对应的ui渲染逻辑后,将请求p发送给后端;
9.在后端配置全局请求拦截器h
back
,其中,h
back
通过正则表达式re
back
描述全部需要在后端集中处理的请求;基于请求参数的类型,配置均与所述类型适配的若干个后端通用校验逻辑,并在后端业务模块的各个形参前,以元数据的形式为每个形参配置0~n个后端通用校验逻辑,其中,n为正整数;
10.后端获取前端发送的请求p;若请求p与re
back
匹配,获取请求p中包含的形参arg及与所述形参arg对应的后端通用校验逻辑的元数据meta,若全部的形参arg均满足以对应meta为约束条件的后端通用校验逻辑,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;若请求p与re
back
不匹配,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;
11.后端将数据结构r进行序列化,并将序列化后的数据结构r发送至前端;
12.在前端配置全局响应拦截器h
resp
,所述h
resp
接受后端发送的序列化后的数据结构r,若数据结构r的succ为false,则弹出以数据结构r的msg为内容的提示文案,以结束本次交互;若succ为true,则将数据结构r中的attach传递至对应的前端业务模块的请求回调方法中,在所述请求回调方法中获得h
resp
返回的attach信息,并根据该请求p涉及的前端业务模块,更新前端页面中的对应ui元素或执行对应动作,以结束本次交互。
13.作为一种可选的实施方式,还包括:在前端业务模块中编写校验失败时的提示文案m,若请求p在前端通用校验逻辑中校验不合格,则返回提示文案m。
14.作为一种可选的实施方式,还包括:所述h
resp
接受后端发送的序列化后的数据结构r后,结束已经触发的ui渲染逻辑。
15.作为一种可选的实施方式,所述数据结构r包括:
16.布尔型的succ,用以标记请求的后端业务模块是否执行成功;
17.字符串型的msg,用以存放后端业务模块执行完毕时需要呈现给用户的文案;
18.附加数据attach,用以存放后端业务模块成功执行完毕后,更新前端页面中的对应ui元素时所需的数据,attach设计为编程语言的根类或“键值对”类型。
19.作为一种可选的实施方式,所述前端执行请求p包含的请求参数所对应的操作逻辑,包括:参数类型转换和/或去除字符串型参数的首尾空白字符和/或对字符串型参数包含的特殊字符进行转义和/或增加认证token参数。
20.作为一种可选的实施方式,所述前端触发对应的ui渲染逻辑,包括:显示不确定进度条和/或弹出含等待动画和/或禁止用户重复操作的遮罩层。
21.作为一种可选的实施方式,所述基于请求参数的类型,配置均与所述类型适配的若干个后端通用校验逻辑,包括:判断请求参数是否为空;和/或,
22.判断字符串型参数和数组型参数的长度是否合法;和/或,
23.判断数值型参数是否介于合法的取值范围;和/或,
24.判断日期/时间型参数是否介于当前日期/时间之前或之后。
25.与所述交互方法相对应的,本发明实施例还提供了一种前后端分离场景下的非侵入式数据交互装置,包括:
26.前端配置模块,用于在前端业务模块中设置前端通用校验逻辑,并在前端配置全局请求拦截器h
req
,其中,h
req
通过正则表达式re
front
描述全部需要在前端集中处理的请求;
27.前端获取模块,用于使前端获取请求p,若请求p在前端通用校验逻辑中校验合格,则判断请求p与re
front
是否匹配,若不匹配,将请求p发送给后端;若匹配,前端执行请求p包含的请求参数所对应的操作逻辑和/或触发对应的ui渲染逻辑后,将请求p发送给后端;
28.后端配置模块,用于在后端配置全局请求拦截器h
back
,其中,h
back
通过正则表达式re
back
描述全部需要在后端集中处理的请求;基于请求参数的类型,配置均与所述类型适配的若干个后端通用校验逻辑,并在后端业务模块的各个形参前,以元数据的形式为每个形参配置0~n个后端通用校验逻辑,其中,n为正整数;
29.后端获取模块,用于使后端获取前端发送的请求p;若请求p与re
back
匹配,获取请求p中包含的形参arg及与所述形参arg对应的后端通用校验逻辑的元数据meta,若全部的形参arg均满足以对应meta为约束条件的后端通用校验逻辑,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造
succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;若请求p与re
back
不匹配,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;
30.序列化模块,用于使后端将数据结构r进行序列化,并将序列化后的数据结构r发送至前端;
31.响应与交互模块,用于在前端配置全局响应拦截器h
resp
,所述h
resp
接受后端发送的序列化后的数据结构r,若数据结构r的succ为false,则弹出以数据结构r的msg为内容的提示文案,以结束本次交互;若succ为true,则将数据结构r中的attach传递至对应的前端业务模块的请求回调方法中,在所述请求回调方法中获得h
resp
返回的attach信息,并根据该请求p涉及的前端业务模块,更新前端页面中的对应ui元素或执行对应动作,以结束本次交互。
32.本发明的有益效果:本发明实施例提供了一种前后端分离场景下的非侵入式数据交互方法及装置,通过分别在前端配置全局请求拦截器h
req
及全局响应拦截器h
resp
、在后端配置全局请求拦截器h
back
及校验元数据,使得后端的通用数据校验逻辑以及前后端之间的数据交互逻辑集中在一处,不仅消除了这些逻辑的代码冗余,同时降低了这些逻辑对各个具体业务模块(页面)所含业务逻辑的侵入,从而提升了系统的可扩展性。
附图说明
33.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1为本发明实施例的交互方法的示意图。
具体实施方式
35.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明进一步详细说明。
36.为达到上述目的,本发明实施例提供了一种前后端分离场景下的非侵入式数据交互方法,该方法可以应用于终端、服务器或者服务器集群等,具体不做限定。下面对本发明实施例提供的非侵入式数据交互方法进行详细说明。
37.本发明实施例提供了一种前后端分离场景下的非侵入式数据交互方法,包括:
38.s100、在前端业务模块中设置前端通用校验逻辑,并在前端配置全局请求拦截器h
req
,其中,h
req
通过正则表达式re
front
描述全部需要在前端集中处理的请求;
39.s200、前端获取请求p,若请求p在前端通用校验逻辑中校验合格,则判断请求p与re
front
是否匹配,若不匹配,将请求p发送给后端;若匹配,前端执行请求p包含的请求参数所对应的操作逻辑和/或触发对应的ui渲染逻辑后,将请求p发送给后端;
40.s300、在后端配置全局请求拦截器h
back
,其中,h
back
通过正则表达式re
back
描述全部
需要在后端集中处理的请求;基于请求参数的类型,配置均与所述类型适配的若干个后端通用校验逻辑,并在后端业务模块的各个形参前,以元数据的形式为每个形参配置0~n个后端通用校验逻辑,其中,n为正整数;
41.s400、后端获取前端发送的请求p;若请求p与re
back
匹配,获取请求p中包含的形参arg及与所述形参arg对应的后端通用校验逻辑的元数据meta,若全部的形参arg均满足以对应meta为约束条件的后端通用校验逻辑,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;若请求p与re
back
不匹配,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;
42.s500、后端将数据结构r进行序列化,并将序列化后的数据结构r发送至前端;
43.s600、在前端配置全局响应拦截器h
resp
,所述h
resp
接受后端发送的序列化后的数据结构r,若数据结构r的succ为false,则弹出以数据结构r的msg为内容的提示文案,以结束本次交互;若succ为true,则将数据结构r中的attach传递至对应的前端业务模块的请求回调方法中,在所述请求回调方法中获得h
resp
返回的attach信息,并根据该请求p涉及的前端业务模块,更新前端页面中的对应ui元素或执行对应动作,以结束本次交互。
44.本发明实施例提供了一种前后端分离场景下的非侵入式数据交互方法,通过分别在前端配置全局请求拦截器h
req
及全局响应拦截器h
resp
、在后端配置全局请求拦截器h
back
及校验元数据,使得后端的通用数据校验逻辑以及前后端之间的数据交互逻辑集中在一处,不仅消除了这些逻辑的代码冗余,同时降低了这些逻辑对各个具体业务模块(页面)所含业务逻辑的侵入,从而提升了系统的可扩展性。
45.作为一种可选的实施方式,所述非侵入式数据交互方法还包括在前端业务模块中编写校验失败时的提示文案m,若请求p在前端通用校验逻辑中校验不合格,则返回提示文案m。
46.作为一种可选的实施方式,所述非侵入式数据交互方法还包括所述h
resp
接受后端发送的序列化后的数据结构r后,结束已经触发的ui渲染逻辑。
47.作为一种可选的实施方式,所述数据结构r包括:
48.布尔型的succ,用以标记请求的后端业务模块是否执行成功;
49.字符串型的msg,用以存放后端业务模块执行完毕时需要呈现给用户的文案;
50.附加数据attach,用以存放后端业务模块成功执行完毕后,更新前端页面中的对应ui元素时所需的数据,attach设计为编程语言的根类或“键值对”类型。
51.作为一种可选的实施方式,所述前端执行请求p包含的请求参数所对应的操作逻辑,包括:参数类型转换和/或去除字符串型参数的首尾空白字符和/或对字符串型参数包含的特殊字符进行转义和/或增加认证token参数。
52.作为一种可选的实施方式,所述前端触发对应的ui渲染逻辑,包括:显示不确定进度条和/或弹出含等待动画和/或禁止用户重复操作的遮罩层。
53.作为一种可选的实施方式,所述基于请求参数的类型,配置均与所述类型适配的若干个后端通用校验逻辑,包括:判断请求参数是否为空;和/或,
54.判断字符串型参数和数组型参数的长度是否合法;和/或,
55.判断数值型参数是否介于合法的取值范围;和/或,
56.判断日期/时间型参数是否介于当前日期/时间之前或之后。
57.与所述非侵入式数据交互方法相对应的,本发明还提供了一种前后端分离场景下的非侵入式数据交互装置,包括:
58.前端配置模块,用于在前端业务模块中设置前端通用校验逻辑,并在前端配置全局请求拦截器h
req
,其中,h
req
通过正则表达式re
front
描述全部需要在前端集中处理的请求;
59.前端获取模块,用于使前端获取请求p,若请求p在前端通用校验逻辑中校验合格,则判断请求p与re
front
是否匹配,若不匹配,将请求p发送给后端;若匹配,前端执行请求p包含的请求参数所对应的操作逻辑和/或触发对应的ui渲染逻辑后,将请求p发送给后端;
60.后端配置模块,用于在后端配置全局请求拦截器h
back
,其中,h
back
通过正则表达式re
back
描述全部需要在后端集中处理的请求;基于请求参数的类型,配置均与所述类型适配的若干个后端通用校验逻辑,并在后端业务模块的各个形参前,以元数据的形式为每个形参配置0~n个后端通用校验逻辑,其中,n为正整数;
61.后端获取模块,用于使后端获取前端发送的请求p;若请求p与re
back
匹配,获取请求p中包含的形参arg及与所述形参arg对应的后端通用校验逻辑的元数据meta,若全部的形参arg均满足以对应meta为约束条件的后端通用校验逻辑,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;若请求p与re
back
不匹配,且全部的形参arg均满足后端业务模块的自身校验逻辑,则后端执行请求p包含的请求参数所对应的操作逻辑,并构造succ=true的数据结构r,否则,构造succ=false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r;
62.序列化模块,用于使后端将数据结构r进行序列化,并将序列化后的数据结构r发送至前端;
63.响应与交互模块,用于在前端配置全局响应拦截器h
resp
,所述h
resp
接受后端发送的序列化后的数据结构r,若数据结构r的succ为false,则弹出以数据结构r的msg为内容的提示文案,以结束本次交互;若succ为true,则将数据结构r中的attach传递至对应的前端业务模块的请求回调方法中,在所述请求回调方法中获得h
resp
返回的attach信息,并根据该请求p涉及的前端业务模块,更新前端页面中的对应ui元素或执行对应动作,以结束本次交互。
64.实施例
65.为了进一步便于对本方案的理解,现结合具体的实施例以及图1进行说明。
66.步骤1:为各个后端业务模块设计统一的数据结构serviceresult(简称r),作为每次前端向后端发起业务请求后,后端返回的数据类型。r包含3部分信息:

布尔型的succ,用以标记请求的后端业务模块是否执行成功;

字符串型的msg,用以存放后端业务模块执行完毕(通常是失败)时需要呈现给用户的文案;

后端业务模块成功执行完毕时需要带回的附加数据attach,考虑到不同后端业务模块需要返回的数据类型和个数可能不尽相同,attach可设计为编程语言的根类(如java的object)或“键值对”类型(如java的map、python
的dictionary等)。
67.步骤2:在各个具体的前端业务模块(页面)中编写与该前端业务模块相关的请求参数的前端通用校验逻辑以及校验失败时的提示文案m。此处的前端通用校验逻辑应以声明式(通过前端基于的ui库/组件的相关属性指定)而非编程式实现。当请求p被用户触发时执行该前端通用校验逻辑:
68.步骤2.1若校验成功,则转到步骤3;
69.步骤2.2若校验失败,则弹出提示文案m,此次交互流程结束。
70.步骤3:采用合适的形式(根据前端基于的运行平台不同而不同,如各web浏览器原生支持的xmlhttprequest对象及其封装库、各原生app平台内建的拦截器类、各小程序宿主环境提供的api等)为前端编写全局请求拦截器h
req
,其中,h
req
通过正则表达式re
front
描述全部需要在前端集中处理的请求,并判断p与re
front
是否匹配:
71.步骤3.1若匹配成功:
72.步骤3.1.1前端执行请求p包含的请求参数所对应的操作逻辑(如参数类型转换、去除字符串型参数的首尾空白字符、对字符串型参数包含的特殊字符进行转义、增加认证token参数等);
73.步骤3.1.2触发对应的ui渲染逻辑(如显示不确定进度条、弹出含等待动画以及禁止用户重复操作的遮罩层等),然后转到步骤4。
74.步骤3.2若匹配失败,直接转到步骤4。
75.步骤4:采用合适的形式(如各后端开发技术都支持的过滤器、相关框架所支持的拦截器等)为后端编写全局请求拦截器h
back
,其通过正则表达式re
back
描述全部需要在后端集中处理的请求;
76.后端获取前端发送的请求p后,判断该请求p与re
back
是否匹配:
77.步骤4.1若匹配成功,则转到步骤5:
78.步骤4.2若匹配失败,则转到步骤6。
79.步骤5:根据请求p中可能包含的各种请求参数的类型,以合适的形式(如java语言的注解、python语言的装饰器等)编写若干个后端通用校验逻辑,包括但不限于:

判断参数是否为空;

判断字符串型参数和数组型参数的长度是否合法;

判断数值型参数是否介于合法的取值范围;

判断日期/时间型参数是否介于当前日期/时间之前或之后。具体为:
80.步骤5.1在与请求p对应的后端业务模块的各个形参前,以元数据(用以描述数据的数据,如注解/装饰器的属性)的形式,为每个形参配置0~n个后端通用校验逻辑,其中,n为正整数;
81.步骤5.2通过编程语言提供的反射机制,获得请求p中包含的各形参arg及与所述形参arg对应的后端通用校验逻辑的元数据meta;
82.步骤5.3检查全部arg是否均满足以对应meta为约束条件的校验逻辑:
83.步骤5.3.1若均满足,则转到步骤6;
84.步骤5.3.2若至少有一个不满足,则构造succ为false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r,然后转到步骤7;
85.步骤6:在与请求p对应的后端业务模块中,以编程方式检查后端业务模块的各个
形参是否均满足该后端业务模块自身的非通用校验逻辑和约束条件(如起止时间范围是否超过了1个月、要登录的账号是否已被管理员禁用、要删除的记录是否正在被使用等,这些逻辑与具体的业务相关或涉及到多个参数,故无法通过配置元数据的方式消除侵入性):
86.步骤6.1若均满足,则继续执行该后端业务模块的后续逻辑,构造succ为true的r对象(可根据业务需要自行设置msg和attach),并转到步骤7;
87.步骤6.2若不满足,则构造succ为false、msg为该后端业务模块的自身校验逻辑对应提示文案的数据结构r(可根据业务需要自行设置attach),然后转到步骤7;
88.步骤7:采用合适的形式(同步骤3)编写前端全局响应拦截器h
resp

89.步骤7.1判断p与re
front
是否匹配:
90.步骤7.1.1若匹配成功,则结束前端之前触发的ui渲染逻辑(如隐藏进度条、关闭遮罩层等);
91.步骤7.1.2若匹配失败,则转到7.2;
92.步骤7.2前端获得步骤5或步骤6中返回的r对象(已序列化为json或xml等形式),判断r的succ:
93.步骤7.2.1若succ为false,则弹出以r的msg为内容的提示文案,以告知用户本次交互失败的具体原因,然后结束本次交互流程;
94.步骤7.2.2若succ为true,则将r对象中的attach传递至具体的前端业务模块(页面)的请求回调方法(如web浏览器的promise机制、各种编程语言实现的发布/订阅模式等),并转到步骤8;
95.步骤8:在各个具体的前端业务模块(页面)的请求回调方法中获得h
resp
返回的attach信息,并根据该请求p涉及的前端业务模块,更新页面中的相关ui元素或执行相应动作(如弹出业务成功文案、跳转到指定页面等),本次交互流程至此结束。
96.需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
97.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
98.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
99.本发明旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包
含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1