一种报文映射、HTTP请求的报文转换方法及装置与流程

文档序号:33638329发布日期:2023-03-29 01:19阅读:129来源:国知局
一种报文映射、HTTP请求的报文转换方法及装置与流程
一种报文映射、http请求的报文转换方法及装置
技术领域
1.本发明涉及数据处理领域,尤其涉及一种报文映射、http请求的报文转换方法及装置。


背景技术:

2.银企直联作为企业连接银行的中间平台,依靠互联网或专线连接的方式,承载着企业财务系统和银行金融服务的对接能力,要对接的企业有很多,每一个企业要对接银行的各种金融服务也不在少数。而各个企业财务系统的数据接口规范都各不相同。在这种银企合作模式下,银行需要一个灵活高效的解决方案来适配各个请求方接口,将请求发送方接口报文映射成为请求接收方接口报文,满足业务的快速拓展、保证已输出金融服务的稳定的同时,实现企业的快速对接。
3.现有一种报文转换方法,校验逻辑是对转换后的目标报文进行校验,校验粒度比较大,数据传输错误率较高,且转换规则不支持内置函数,内置函数仅用于逻辑运算的封装,不支持拓展,在使用时灵活性差。


技术实现要素:

4.本发明提供了一种报文映射、http请求的报文转换方法及装置,以解决报文转换过程只对目标报文进行校验,校验粒度比较大,数据传输错误率较高的技术问题。
5.为了解决上述技术问题,第一方面,本发明实施例提供了一种报文映射方法,包括:
6.获取源报文,根据请求参数,结合映射规则对源报文进行解析,识别映射策略;
7.基于所述映射策略识别字段映射规则,根据字段映射规则解析和校验源报文字段,获得目标字段集合;
8.基于目标字段集合将所述目标字段集合转换为目标报文。
9.本发明提供了字段级的映射规则,通过字段映射规则解析和校验源报文字段,提供了字段级的校验逻辑,校验粒度细,提高了数据传输的准确性。
10.进一步地,所述基于所述映射策略识别字段映射规则,根据字段映射规则解析和校验源报文字段,获得目标字段集合,具体为:
11.根据所述映射策略,确定所述源报文中各字段对应的字段映射规则,并筛选出需执行字段映射规则的所有字段作为第一字段集合;
12.根据各第一字段对应的字段映射规则,分别计算各第一字段对应表达式的值;
13.根据各第一字段对应的字段映射规则,分别对各第一字段对应表达式的值进行校验,并筛选出所有通过校验的第一字段作为目标字段集合;其中,所述目标字段集合还记录各目标字段对应的表达式的值。
14.本发明通过映射策略识别字段映射规则,所述字段映射规则提供了灵活且高效的表达式计算方式,提高了解析源报文字段的效率和计算源报文字段的值的计算速度。
15.进一步地,所述根据各第一字段对应的字段映射规则,分别对各第一字段对应表达式的值进行校验,并筛选出所有通过校验的第一字段作为目标字段集合,具体为:
16.根据各第一字段对应的字段映射规则,筛选出所有必填字段作为第二字段合集;
17.根据第二字段对应的字段映射规则,筛选出所有通过数据类型校验和长度校验的字段作为目标字段合集。
18.本发明提供了字段级的校验逻辑,对字段的值进行确认,判断其数据类型和长度,避免后续数据溢出和错误,减小了校验粒度,提高了数据处理和数据传输的准确性。
19.进一步地,所述获取源报文,根据请求参数,结合映射规则对源报文进行解析,识别映射策略之前,还包括:
20.构建表达式解析器并将映射规则配置到缓存中,所述缓存设置有一级本地缓存和二级red i s缓存。
21.本发明通过设置二级缓存,避免了本地缓存出现内存溢出的风险,提高了映射规则的执行效率。
22.进一步地,所述构建表达式解析器并将映射规则配置到缓存中,具体为:
23.基于jsonpath构建表达式解析器,所述表达式解析器包含变量表达式、函数表达式、常量表达式和path表达式;
24.基于表达式解析器对所述映射规则进行建模,并在数据库中插入模型数据,并将所述映射规则和模型数据配置到缓存中;其中,所述映射规则包括映射策略、字段映射规则。
25.本发明通过构建表达式解析器,提供了灵活的表达式语法,能够灵活配置字段级的映射规则,且由于表达式解析器内置函数表达式,因此能够支持内置函数和自定义函数。
26.进一步地,所述获取源报文,具体为:
27.首先在一级本地缓存中读取数据,若一级本地缓存中无数据,则从二级red i s缓存读取,若二级red i s缓存中无数据,再从数据库中读取。
28.本发明通过设置二级缓存,避免了本地缓存出现内存溢出的风险,在获取数据时,先从基于lru缓存策略的本地缓存中获取数据,若无数据则从二级red i s缓存读取,提高了获取数据的速度和提升了映射规则的执行效率。
29.第二方面,本发明实施例提供了一种http请求的报文转换方法,包括:
30.获取发送方发送的请求源报文,通过本发明所述的报文映射方法,生成目标请求报文,并将所述目标请求报文转发给接收方;
31.获取接收方根据目标请求报文生成的应答源报文;通过本发明所述的报文映射方法,生成目标应答报文,并将所述目标应答报文转发给发送方。
32.在本实施例中,通过所述报文转换方法,将请求源报文映射成为接收方目标请求报文,将应答源报文映射成为目标应答报文。在数据接口规范各不相同的的发送方和接收方之间建立连接,减少了接口适配的硬编码工作量,降低编码可能带来的缺陷,加快接口联调进度。提高了数据传输效率,实现了发送方和接收方的快速对接。
33.第三方面,本发明实施例提供了一种报文映射装置,包括:映射策略识别模块、字段解析校验模块和报文转换模块;
34.所述映射策略识别模块用于获取源报文,根据请求参数,结合映射规则对源报文
进行解析,识别映射策略;
35.所述字段解析校验模块用于根据所述映射策略识别字段映射规则,根据字段映射规则解析和校验源报文字段,获得目标字段集合;
36.所述报文转换模块用于根据目标字段集合,将所述目标字段集合转换为目标报文。
37.第四方面,本发明实施例提供了一种http请求的报文转换装置,包括请求报文映射模块和应答报文映射模块;
38.所述请求报文映射模块,用于获取发送方发送的请求源报文,通过本发明所述的报文映射方法,生成目标请求报文,并将所述目标请求报文转发给接收方;
39.所述应答报文映射模块,用于获取接收方根据目标请求报文生成的应答源报文;通过本发明所述的报文映射方法,生成目标应答报文,并将所述目标应答报文转发给发送方。
40.第五方面,本发明实施例提供了一种数据传输系统,包括发送方、接收方和应用本发明所述的http请求的报文转换装置,所述发送方与所述接收方通过所述报文转换装置完成数据交互。
41.本发明提供了字段级的映射规则,通过字段映射规则解析和校验源报文字段,提供了字段级的校验逻辑,校验粒度细,提高了数据传输的准确性。
附图说明
42.图1为本发明实施例一提供的报文映射方法的一种流程示意图;
43.图2为本发明实施例一提供的步骤101的数据读取流向图;
44.图3是本发明实施例一提供的步骤102的一种流程示意图;
45.图4为本发明实施例一提供的报文映射装置的一种结构示意图;
46.图5为本发明实施例二提供的http请求的报文转换方法的一种流程示意图;
47.图6为本发明实施例二提供的http请求的报文转换装置的一种结构示意图;
48.图7为本发明实施例提供的数据传输系统的一种数据流向图;
49.图8为本发明实施例三提供的报文映射系统的一种结构示意图。
具体实施方式
50.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.实施例一
52.请参照图1,图1为本发明实施例提供的报文映射方法的一种流程示意图,其主要包括步骤101至步骤103,具体如下:
53.步骤101:获取源报文,根据请求参数,结合映射规则对源报文进行解析,识别映射策略。
54.在本实施例中,使用http请求ur l中的路径参数、http header中的约定参数作为
筛选依据,结合映射规则,即可筛选出对应的映射策略。
55.在本实施例中,在所述获取源报文,根据请求参数,结合映射规则对源报文进行解析,识别映射策略之前,还包括:构建表达式解析器并将映射规则配置到缓存中,所述缓存设置有一级本地缓存和二级red i s缓存。
56.在本实施例中,通过设置二级缓存,避免了本地缓存出现内存溢出的风险,提高了映射规则的执行效率。
57.在本实施例中,基于jsonpath构建表达式解析器,所述表达式解析器包含变量表达式、函数表达式、常量表达式和path表达式。通过构建表达式解析器,提供了灵活的表达式语法,表达式解析器内置函数表达式,因此能够支持内置函数和自定义函数。
58.表1为本实施例提供的表达式解析器的一种具体举例;
[0059][0060]
表1
[0061]
在本实施例中,基于表达式解析器对所述映射规则进行建模,并在数据库中插入模型数据,并将所述映射规则和模型数据配置到缓存中;其中,所述映射规则包括映射策略、字段映射规则。
[0062]
在本实施例中,映射策略表示请求报文、应答报文要完成报文映射的基本策略。它定义了发起方标识、接收方标识、接口名及策略i d等能标识的基本要素。这些要素都需满足唯一标识。
[0063]
在本实施例中,字段映射规则表示要完成一次报文映射所要执行的规则。因为完成一次http请求需要请求与应答两个步骤,所以报文映射需要请求报文的报文映射与应答报文的报文映射,字段映射规则也就因此分为请求报文的字段映射规则与应答报文的字段映射规则,请求报文的字段映射规则与应答报文的字段映射规则的区别在于应答报文的字段映射规则还包括响应码映射规则,所述响应码映射规则包括策略i d、源报文响应码、目标响应码和目标相应信息。
[0064]
表2为本实施例提供的字段映射规则的一种具体举例,表3为本实施例提供的响应码映射规则的一种具体举例;
[0065]
[0066][0067]
表2
[0068][0069]
表3
[0070]
在本实施例中,获取源报文时,首先在一级本地缓存中读取数据,若一级本地缓存中无数据,则从二级red i s缓存读取,若二级red i s缓存中无数据,再从数据库中读取。通过设置二级缓存,避免了本地缓存出现内存溢出的风险,在获取数据时,先从基于lru缓存策略的本地缓存中获取数据,若无数据则从二级red i s缓存读取,提高了获取数据的速度和提升了映射规则的执行效率。参照图2,图2为本发明实施例提供的步骤101的数据读取流向图。
[0071]
步骤102:基于所述映射策略识别字段映射规则,根据字段映射规则解析和校验源报文字段,获得目标字段集合。
[0072]
在本实施例中,通过映射策略识别字段映射规则,所述字段映射规则提供了灵活且高效的表达式计算方式,提高了解析源报文字段的效率和计算源报文字段的值的计算速度。
[0073]
步骤103:基于目标字段集合将所述目标字段集合转换为目标报文。
[0074]
在本实施例中,使用josn开源工具对目标字段集合进行转换,所述目标字段集合为中间态数据map对象,json开源工具将中间态数据map对象转换为json字符串,得到目标报文。
[0075]
请参照图3,图3是本发明实施例提供的步骤102的一种流程示意图,其主要包括步
骤301至步骤303,具体如下:
[0076]
步骤301:根据所述映射策略,确定所述源报文中各字段对应的字段映射规则,并筛选出需执行字段映射规则的所有字段作为第一字段集合。
[0077]
步骤302:根据各第一字段对应的字段映射规则,分别计算各第一字段对应表达式的值。
[0078]
在本实施例中,基于开源组件jsonpath进行了优化和扩展,计算源报文字段表达式,计算结果或放入到目标路径中、或作为中间变量暂存、或作为方法返回结果。
[0079]
步骤303:根据各第一字段对应的字段映射规则,筛选出所有必填字段作为第二字段合集;根据第二字段对应的字段映射规则,筛选出所有通过数据类型校验和长度校验的字段作为目标字段合集。其中,所述目标字段集合还记录各目标字段对应的表达式的值。
[0080]
在本实施例中,计算后的表达式的值,会使用字段映射规则中的预期类型字段进行类型校验。
[0081]
在本实施例中,本发明提供了字段级的校验逻辑,对字段的值进行确认,判断其数据类型和长度,避免后续数据溢出和错误,减小了校验粒度,提高了数据处理和数据传输的准确性。
[0082]
请参照图4,图4为本发明实施例提供的报文映射装置的一种结构示意图,其主要包括映射策略识别模块401、字段解析校验模块402和报文转换模块403。
[0083]
在本实施例中,映射策略识别模块401,用于获取源报文,根据http请求参数,结合映射规则对源报文进行解析,识别映射策略;
[0084]
所述字段解析校验模块402,用于根据所述映射策略识别字段映射规则,根据字段映射规则解析和校验源报文字段,获得目标字段集合;
[0085]
所述报文转换模块403,用于根据目标字段集合,将所述目标字段集合转换为目标报文。
[0086]
在本实施例中,本发明提供了字段级的映射规则,通过字段映射规则解析和校验源报文字段,提供了字段级的校验逻辑,校验粒度细,提高了数据传输的准确性。
[0087]
实施例二
[0088]
请参照图5,图5为本发明实施例提供的http请求的报文转换方法的一种流程示意图,其主要包括步骤501至步骤502,具体如下:
[0089]
步骤501:获取发送方发送的请求源报文,通过本发明实施例提供的报文映射方法,生成目标请求报文,并将所述目标请求报文转发给接收方。
[0090]
步骤502:获取接收方根据目标请求报文生成的应答源报文;通过本发明实施例提供的报文映射方法,生成目标应答报文,并将所述目标应答报文转发给发送方。
[0091]
在本实施例中,通过所述报文转换方法,将请求源报文映射成为与接收方接口报文。在数据接口规范各不相同的发送方和接收方之间建立连接,减少了接口适配的硬编码工作量,降低编码可能带来的缺陷,加快接口联调进度。提高了数据传输效率,实现了发送方和接收方的快速对接。
[0092]
请参照图6,图6为本发明实施例提供的http请求的报文转换装置的一种结构示意图,其主要请求报文映射模块601和应答报文映射模块602;
[0093]
所述请求报文映射模块601,用于获取发送方发送的请求源报文,通过本发明提供
的报文映射方法,生成目标请求报文,并将所述目标请求报文转发给接收方。
[0094]
所述应答报文映射模块602,用于获取接收方根据目标请求报文生成的应答源报文;通过本发明提供的报文映射方法,生成目标应答报文,并将所述目标应答报文转发给发送方。
[0095]
请参照图7,图7为本发明实施例提供的数据传输系统的一种数据流向图,其主要包括发送方、接收方和所述的报文转换装置,所述发送方与所述接收方通过所述报文转换装置完成数据交互。
[0096]
在本实施例中,发送方向所述报文转换装置发送请求源报文,所述报文转换装置将所述请求源报文映射成与接收方接口规范相适配的目标请求报文,并将所属目标请求报文转发给接收方。
[0097]
接收方接收目标请求报文后做出响应,并向报文转换装置发送应答源报文,报文转换装置将应答源报文映射成与发送方接口规范相适配的目标应答报文,并转发给发送方。
[0098]
实施例三
[0099]
作为本发明实施例提供的报文映射方法的一种举例,本实施例提供了一种应用本发明提供的报文映射方法的系统,请参照图8,图8为本发明实施例提供的报文映射系统的一种结构示意图,其主要包括映射规则执行模块801、映射规则管理模块802、缓存模块803和表达式模块804。
[0100]
在本实施例中,所述映射规则执行模块801,用于根据请求参数识别映射策略,再由已识别映射策略筛选出对应的字段映射规则及响应码映射规则。根据源报文构建表达式解析器,再使用映射规则执行器遍历执行已筛选出的字段映射规则。对于每一条字段映射规则,都会执行本规则源报文字段表达式的值,并对该值做校验。
[0101]
在本实施例中,所述映射规则执行模块801,具体包括映射策略识别模块和映射规则执行模块。
[0102]
所述映射策略识别模块,用于根据http请求参数,识别映射策略,得到策略i d,所述请求参数包括请求方标识、接收方标识、接口名。根据该策略i d及请求标识或者应答标识从缓存模块读取对应的字段映射规则。
[0103]
所述映射规则执行模块,对字段映射规则进行遍历。首先筛选出需执行字段映射规则的所有字段作为第一字段合计,其次根据各第一字段对应的字段映射规则,分别计算各第一字段对应表达式的值;接着根据各第一字段对应的字段映射规则,筛选出所有必填字段作为第二字段合集;再接着根据第二字段对应的字段映射规则,筛选出所有通过数据类型校验和长度校验的字段作为目标字段合集,在筛选目标字段合集时,需要判断该字段映射规则的“是否临时变量”,若是则将所述字段的值及变量做好映射存入上下文中,供后续字段映射规则使用,若不是则将所述字段和字段的值加入目标字段合集。
[0104]
在本实施例中,所述映射规则管理模块802,用于负责映射规则的加载、读取和更新。在系统启动时加载并存入缓存模块803中,供映射规则执行模块801读取并执行。在映射规则更新时,将映射规则更新到数据库后再将其从缓存模块803中删除。
[0105]
在本实施例中,所述映射规则管理模块包括映射规则维护模块和映射规则读取模块。
[0106]
在本实施例中,所述映射规则维护模块用于负责映射规则的配置,更新与删除操作。映射规则包括映射策略、字段映射规则及响应码映射规则。配置时,先配置映射策略,再配置字段映射规则与响应码映射规则。更新时,先更新数据库中的映射规则,删除缓存模块803中的映射规则。删除时,同时删除数据库和缓存模块中的映射规则。
[0107]
所述映射策略表示请求报文、应答报文要完成报文映射的基本策略。它定义了发起方标识、接收方标识、接口名及策略i d等能标识的基本要素。这些要素都需满足唯一标识。
[0108]
所述字段映射规则表示要完成一次报文映射所要执行的规则。因为完成一次http请求需要请求与应答两个步骤,所以报文映射需要请求报文的报文映射与应答报文的报文映射,字段映射规则也就因此分为请求报文的字段映射规则与应答报文的字段映射规则。
[0109]
所述应答报文的字段映射规则还包括响应码映射规则,所述响应码映射规则配置了应答报文中响应码的映射规则。
[0110]
在本实施例中,映射规则读取模块用于,负责在系统启动时加载映射规则,在执行规则时从缓存模块803读取映射规则。
[0111]
在本实施例中,所述缓存模块803,用于缓存模块对外提供统一的数据读、写、更新及删除操作,封装了两层缓存:一级本地缓存及二级red i s缓存。本地缓存主要存储经常使用的或系统初始化时加载的配置;red i s缓存存储数据库全量配置信息。
[0112]
在本实施例中,一级本地缓存使用两个jdk自带的数据结构来实现基于lru的缓存策略。一个是concurrenthashmap对象map用来存放key及其值,该数据结构除了能快速判断缓存中是否包含指定的key以外,自身还带着key不可重复的特性。一个是li nkedli st对象queue用来管理最近最少使用的key。red i s中存放全量的映射规则。在系统启动时,映射规则被加载并加入到缓存模块中。读取数据时,优先从一级本地缓存读取,若无数据再从二级red i s缓存读取。如果缓存模块中无数据,最后再从数据库中读取。
[0113]
作为本实施例的一种具体举例,所述缓存模块503的本地缓存维护具体包括:
[0114]
s1:使用key查询本地缓存;
[0115]
s2:若map中包含key,则删除queue中第一次出现的key,并将key加入到queue的头部,并结束本次本地缓存维护;否则执行s3;
[0116]
s3:查询red i s缓存;若有数据,则执行s4;否则执行s5;
[0117]
s4:判断当前map的大小是否大于本地缓存的大小阈值减1;若是,则直接返回,不做任何操作;否则将数据及key保存至map中,同时删除queue中第一次出现的key,并将key加入到queue的头部,并结束本次本地缓存维护;
[0118]
s5:查询数据库,若无数据,终止数据读取操作;否则执行s6;
[0119]
s6:将查询的数据插入red i s中,并执行s4。
[0120]
在本实施例中,所述表达式模块504,基于开源组件jsonpath进行了优化和扩展。优化方面,解决了jsonsmartjsonprovi der中setproperty方法的内存溢出问题。扩展方面,在json path路径表达式的基础之上,分别支持变量表达式(型如$sponsor i d)、常量表达式(型如字面量字符a、123等)、原生的path表达式(型如$.body.name)、函数表达式(型如$concat(“a”,
“‑”
))以及函数表达式与各种表达式之间的嵌套使用(型如$concat(“a”,$sponsor i d)),用于配置映射规则。
[0121]
在本实施例中,所述表达式模块支持json path表达式、变量表达式、常量表达式和函数表达式。所述表达式模块用于对表达式字符串进行编译,生成对应的表达式对象,并将该对象进行缓存,减少下一次同一份json文档相同路径需要再次编译的性能消耗;再调用该表达式对象的getva l ue方法完成对表达式的计算,最终返回计算结果。
[0122]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1