本发明涉及计算机软件的微服务技术领域,特别涉及一种工业互联网中api网关实现协议转换的方法。
背景技术:
随着工业互联网的飞速发展,工业环境中部署的传感器数量日益增长,工业互联网的规模不断扩大,但是还存在着诸多问题:1)传感器的数量增加,导致工业互联网中的数据量正在以爆炸式的速度增长;2)传感器具有异构性,使用的通信协议各有不同,数据的解析方式也存在着不同,难以用统一的框架处理。
这些设备往往不属于同一厂家生产,且各自能支持不同的协议,不同厂家生产的设备往往使用的通讯协议也是不同的,每种协议与网关通信方式也不同,客户端需要根据不同的接口通信协议来解析数据,加重客户端的负担,增加客户端的复杂性,而且安全性不高,系统臃肿,容易导致客户端崩溃。
技术实现要素:
本发明的目的是克服现有技术中不足,提供一种工业互联网中api网关实现协议转换的方法,该方法适用于工业控制中采用集群和/或分布式设计的系统,通过在api网关层预先编写好各类协议描述文件并生成javascript数据映射脚本,将http协议请求消息经过一系列处理转换成后端服务协议,实现api网关多协议转换。
为了达到上述目的,本发明采取以下技术方案:
本发明提供一种工业互联网中api网关实现协议转换的方法,适用于采用集群和/或分布式设计的工业互联网,包括:
接收客户端发送的http协议访问请求体;
解析http协议访问请求体并进行授权验证;
将通过验证的http协议访问请求体转换成api网关内部识别的message消息;
根据识别的message消息将http协议访问请求体数据结构转换成javascript数据映射脚本能够解析的map对象;
根据map对象确定javascript数据映射脚本;
将map对象转换成后端协议服务接口对应的请求体数据结构;
采用确定的javascript数据映射脚本将map对象内容映射为后端协议服务接口的请求体内容并转发;
接收返回的数据并转发给客户端。
进一步的,所述http协议访问请求体包括:jwt令牌、jwt令牌的有效时间、客户端ip地址和目的ip地址。
进一步的,所述解析http协议访问请求体并进行授权验证,包括:
解析客户端发送的http协议访问请求体,确定与请求体中目的ip地址相一致的协议描述文件;
以及,
解析http协议访问请求体中的jwt令牌,获得头部和载荷;
将头部和载荷使用秘钥加密,加密后的signature与redis数据库进行对比;
如果一致,则授权验证通过;否则,返回未授权信息给客户端。
进一步的,所述将通过验证的http协议访问请求体转换成api网关内部识别的message消息,包括:
由message类中调用api()、requestip()以及requesturi()获取以下字段:请求的api信息、请求地址信息、请求接入时间、服务请求消息对象和服务响应消息对象。
进一步的,
以message消息作为参数,选择数据转换方法,将http协议访问请求体数据结构转换成javascript数据映射脚本能够解析的map对象;
所述数据转换方法为:xmltojavascripton或jsontojavascripton。
进一步的,所述根据map对象确定javascript数据映射脚本,包括:
根据api接口的apiid、服务资源和服务操作字段确定javascript数据映射脚本。
进一步的,还包括:
将协议描述文件解析为树形结构的数据;
根据协议描述文件中的目的ip地址以及协议种类字段完成http请求和后端协议服务之间的映射关系,生成javascript数据映射脚本;
所述协议描述文件包括modbus、mqtt、opcua、http、restful和websocket;
所述协议描述文件包括描述信息:协议种类、协议参数和协议控制指令,所述协议参数包括目的ip地址及端口号。
本发明与现有技术相比,具有以下的有益效果:
在本发明的基于工业互联网的api网关实现协议转换的方法中,具体通过在api网关层预先编写好各类协议描述文件并生成javascript数据映射脚本,将http协议请求消息经过一系列处理转换成后端服务协议,实现api网关多协议转换的方法。该方案可以让api网关适配多种常用的工业互联网通信协议,解决了工业环境中接口异构、难以用传统框架解决多协议的问题。另外还减轻了客户端的负担,降低了客户端的复杂性,api网关作为后端微服务的统一入口,也提高了系统整体的安全性。
附图说明
图1是本发明的工业互联网中api网关实现协议转换的方法的流程示意图。
具体实施方式
下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例
如图1所示,本发明提供一种工业互联网中api网关实现协议转换的方法,该方法可以应用于工业互联网数据采集系统,可以应用于微服务架构中,可以应用于分布式计算平台、云计算平台等数据中心,具体的,该方法主要包括以下步骤:
步骤1,编写协议描述文件并上传至api网关生成javascript数据映射脚本。
本实施例中的javascript数据映射脚本主要作用是在后续协议转换步骤中将前端http请求体映射为后端服务协议请求体。
其中,协议描述文件在具体实施时至少有modbus、mqtt、opcua、http、restful、websocket等。每个协议描述文件中至少包含以下描述信息:协议种类、协议参数、协议控制指令。每个协议描述文件中协议参数至少包含目的ip地址及端口号。
具体的,api网关将协议描述文件解析为树形结构的数据,根据协议描述文件中的目的ip地址以及协议种类字段完成http请求和后端协议服务之间的映射关系,然后生成javascript数据映射脚本。
步骤2,客户端发送http请求调用后端服务。
本实施例中的客户端为个人电脑、移动手机、平板电脑等终端设备上安装的软件。
本实施例中客户端通过http协议向api网关发起访问请求。
本实施例中客户端发起的http协议访问请求体至少包含jwt令牌、jwt令牌的有效时间、客户端ip地址和目的ip地址。
具体的,api网关是指微服务架构中的api网关服务,它是所有外部用户访问微服务的统一入口。
步骤3,api网关接收并解析http协议访问请求体。
api网关接收并解析客户端发送的http协议访问请求体,并根据请求目的ip地址对http请求进行分类。
本实施例中根据请求目的ip地址对http请求进行分类,具体实施时目的ip地址与协议描述文件中协议参数中的目的ip地址一一对应。
步骤4,根据步骤3中的解析结果判断请求头中是否携带jwt令牌,若是则进入步骤5,否则返回未授权信息给客户端。
本实施例中api网关解析http请求体中的jwt令牌,获得header头部和payload载荷,将两者使用秘钥加密,加密后的signature与redis数据库进行对比,如果一致,则已经获得授权,以此来决定是否进行后续的协议转换。如果是,转向步骤5;如果否,返回未授权信息给客户端。
步骤5,api网关将http请求体构造成网关内部识别的message消息。
本实施例中api网关根据步骤4的判断结果,将http请求的数据转换成api网关内部识别的message消息,message消息在网关内部过滤转发处理。
其中,message消息由message类中调用api()、requestip()以及requesturi()等方法来获取以下字段:请求的api信息、请求地址信息、请求接入时间、服务请求消息对象、服务响应消息对象等。
步骤6,api网关调用数据转换方法将原http请求体数据结构转换成map对象。
本实施例中数据转换方法以api的message对象作为参数,进行数据转换,具体实施中可以是xmltojavascripton或jsontojavascripton,将http请求的请求体的数据结构转换成适合javascript引擎解析的map对象。
步骤7,根据map对象中的api信息确定映射脚本。
本实施例中网关内部根据apiid、服务资源和服务操作等关键字段确定要执行的javascript数据映射脚本并加载脚本。
步骤8,api网关将map对象转换成协议接口对应的请求体数据结构。
本实施例中api网关内部再次调用数据转换方法,具体实施中可以是javascriptontoxml或javascriptontojson,将map对象转换成协议服务接口对应的请求体数据结构。
步骤9,api网关使用数据映射脚本将map对象映射为后端服务协议请求体内容。
本实施例中api网关通过步骤7中确定的javascript数据映射脚本将map对象映射为后端协议服务接口的请求体内容,最终实现http协议转换成后端服务协议。
步骤10,api网关转发服务请求。
经过一系列前置过滤操作,api网关根据步骤9中的后端协议服务接口的请求体内容向后端服务路由转发请求至后端微服务。
步骤11,api网关接收数据并返回给客户端。
后端微服务根据协议参数及协议控制指令将数据返回给客户端,api网关使用数据转换方法将响应数据转换为http请求协议对应的类型,具体实施中可以是从xml格式转换为json格式。
综上所述,本发明的工业互联网中api网关实现协议转换的方法,具体通过在api网关层预先编写好各类协议描述文件并生成javascript数据映射脚本,将http协议请求消息经过一系列处理转换成后端服务协议,实现api网关多协议转换的方法。该方法可以使api网关适配多种常用的工业互联网通信协议,解决了工业环境中接口异构、难以用传统框架解决多协议的问题。另外还减轻了客户端的负担,降低了客户端的复杂性,api网关作为后端微服务的统一入口,也提高了系统整体的安全性。
以上所述为本发明的示例实施方案之一,仅用于说明本发明的技术路线,然而本发明实际内容并不局限于此。所以,如果本领域内的普通技术人员受其启示,在不脱离本发明的创造精神的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均属于本发明的保护范围。
1.一种工业互联网中api网关实现协议转换的方法,适用于采用集群和/或分布式设计的工业互联网,其特征在于,包括:
接收客户端发送的http协议访问请求体;
解析http协议访问请求体并进行授权验证;
将通过验证的http协议访问请求体转换成api网关内部识别的message消息;
根据识别的message消息将http协议访问请求体数据结构转换成javascript数据映射脚本能够解析的map对象;
根据map对象确定javascript数据映射脚本;
将map对象转换成后端协议服务接口对应的请求体数据结构;
采用确定的javascript数据映射脚本将map对象内容映射为后端协议服务接口的请求体内容并转发;
接收返回的数据并转发给客户端。
2.根据权利要求1所述的一种工业互联网中api网关实现协议转换的方法,其特征在于,所述http协议访问请求体包括:jwt令牌、jwt令牌的有效时间、客户端ip地址和目的ip地址。
3.根据权利要求2所述的一种工业互联网中api网关实现协议转换的方法,其特征在于,所述解析http协议访问请求体并进行授权验证,包括:
解析客户端发送的http协议访问请求体,确定与请求体中目的ip地址相一致的协议描述文件;
以及,
解析http协议访问请求体中的jwt令牌,获得头部和载荷;
将头部和载荷使用秘钥加密,加密后的signature与redis数据库进行对比;
如果一致,则授权验证通过;否则,返回未授权信息给客户端。
4.根据权利要求1所述的一种工业互联网中api网关实现协议转换的方法,其特征在于,所述将通过验证的http协议访问请求体转换成api网关内部识别的message消息,包括:
由message类中调用api()、requestip()以及requesturi()获取以下字段:请求的api信息、请求地址信息、请求接入时间、服务请求消息对象和服务响应消息对象。
5.根据权利要求1所述的一种工业互联网中api网关实现协议转换的方法,其特征在于,
以message消息作为参数,选择数据转换方法,将http协议访问请求体数据结构转换成javascript数据映射脚本能够解析的map对象;
所述数据转换方法为:xmltojavascripton或jsontojavascripton。
6.根据权利要求1所述的一种工业互联网中api网关实现协议转换的方法,其特征在于,所述根据map对象确定javascript数据映射脚本,包括:
根据api接口的apiid、服务资源和服务操作字段确定javascript数据映射脚本。
7.根据权利要求1所述的一种工业互联网中api网关实现协议转换的方法,其特征在于,还包括:
将协议描述文件解析为树形结构的数据;
根据协议描述文件中的目的ip地址以及协议种类字段完成http请求和后端协议服务之间的映射关系,生成javascript数据映射脚本;
所述协议描述文件包括modbus、mqtt、opcua、http、restful和websocket;
所述协议描述文件包括描述信息:协议种类、协议参数和协议控制指令,所述协议参数包括目的ip地址及端口号。
技术总结