一种动态生成中间件的方法、装置、介质和电子设备制造方法及图纸

技术编号:24682524 阅读:21 留言:0更新日期:2020-06-27 07:45
本公开提供了一种动态生成中间件的方法、装置、介质和电子设备。所述方法包括:在node.js框架中,动态加载和获取采用接口描述语言撰写的第一文件;分析所述第一文件,生成对应的第一抽象逻辑语法树;遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口元信息;基于每个接口元信息分别获取对应的多框架处理函数集;基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件。本公开有效地减少开发工作量,使操作更简单。

A method, device, medium and electronic device for dynamically generating Middleware

【技术实现步骤摘要】
一种动态生成中间件的方法、装置、介质和电子设备
本公开涉及计算机
,具体而言,涉及一种动态生成中间件的方法、装置、介质和电子设备。
技术介绍
Node.js是一个基于ChromeV8引擎的JavaScript运行环境,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。目前,Node.js在服务端得到了广泛的应用。Express和Koa是目前最主流的基于node的web开发框架。其他框架基本是对这两个框架的扩展。中间件在Node.js中被广泛使用,它泛指一种特定的设计模式、一系列的处理单元、过滤器和处理程序。中间件以函数的形式存在。多个中间件以一定的方式连接在一起,形成一个异步队列,来完成对任何数据的预处理和后处理。中间件技术使得完成某个功能的逻辑可以封装在一个具备通用形式的单元中。单个中间件可以很容易地进行移动和复用,多个中间件可以很方便地进行组合以完成更复杂的功能。在服务端的接口开发中,一般把一些通用功能放在中间件中,比如路由,日志。对请求的处理逻辑一般放在对应的业务处理函数中,不能复用。实际上,通过IDL可以确定每个接口的具体处理逻辑。通常,中间件由开发者根据HTTP请求的具体逻辑完成开发工作,需要开发者付出大量的开发工作,且容易在开发中产生错误代码。
技术实现思路
提供该
技术实现思路
部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该
技术实现思路
部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。本公开的目的在于提供一种动态生成中间件的方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:根据本公开的具体实施方式,第一方面,本公开提供一种动态生成中间件的方法,包括:在node.js框架中,动态加载和获取采用接口描述语言撰写的第一文件;分析所述第一文件,生成对应的第一抽象逻辑语法树;遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口元信息;其中,所述请求消息是满足超文本传输协议的消息;基于每个接口元信息分别获取对应的多框架处理函数集;基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件。根据本公开的具体实施方式,第二方面,本公开提供一种动态生成中间件的装置,包括:动态加载单元,用于在node.js框架中,动态加载和获取采用接口描述语言撰写的第一文件;分析单元,用于分析所述第一文件,生成对应的第一抽象逻辑语法树;获取接口元信息单元,用于遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口元信息;其中,所述请求消息是满足超文本传输协议的消息;获取多框架处理函数集单元,用于基于每个接口元信息分别获取对应的多框架处理函数集;生成中间件单元,用于基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件。根据本公开的具体实施方式,第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面任一项所述动态生成中间件的方法。根据本公开的具体实施方式,第四方面,本公开提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面任一项所述动态生成中间件的方法。本公开实施例的上述方案与现有技术相比,至少具有以下有益效果:本公开提供了一种动态生成中间件的方法、装置、介质和电子设备。所述方法包括:在node.js框架中,动态加载和获取采用接口描述语言撰写的第一文件;分析所述第一文件,生成对应的第一抽象逻辑语法树;遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口元信息;其中,所述请求消息是满足超文本传输协议的消息;基于每个接口元信息分别获取对应的多框架处理函数集;基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件。本公开提供了动态生成node.js框架中间件的方法,可自动完成路由、请求数据映射和数据合法性校验等功能,有效地减少开发工作量。相比静态生成代码的方式,动态加载并动态生成node.js框架中间件,使操作更简单。该中间件使开发者只需要关心业务逻辑,无需理解通讯协议(比如HTTP协议)内容和相关的API,使请求消息和响应消息与IDL保持一致,无需处理实际数据和预期不一致的情况。使生成的中间件具备较好的灵活性和可复用性,方便应用于多种框架中。附图说明结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:图1示出了根据本公开实施例的动态生成中间件的方法的流程图;图2示出了根据本公开实施例的动态生成中间件的方法的中间件调用流程图;图3示出了根据本公开实施例的动态生成中间件的方法的中间件处理流程图;图4示出了根据本公开实施例的动态生成中间件的装置的单元框图;图5示出了根据本公开的实施例的电子设备连接结构示意图。具体实施方式下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。下面结合附图详细说明本公开的可选实施例。对本公开提供的第一实施例,即一种动态生成中间件的方法的实施例。下面结合图1、图2和图3对本公开实施例进行详细说明,其中,图1为本公开实施例提供的动态生成中间件的方本文档来自技高网...

【技术保护点】
1.一种动态生成中间件的方法,其特征在于,包括:/n在node.js框架中,动态加载和获取采用接口描述语言撰写的第一文件;/n分析所述第一文件,生成对应的第一抽象逻辑语法树;/n遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口元信息;其中,所述请求消息是满足超文本传输协议的消息;/n基于每个接口元信息分别获取对应的多框架处理函数集;/n基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件。/n

【技术特征摘要】
1.一种动态生成中间件的方法,其特征在于,包括:
在node.js框架中,动态加载和获取采用接口描述语言撰写的第一文件;
分析所述第一文件,生成对应的第一抽象逻辑语法树;
遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口元信息;其中,所述请求消息是满足超文本传输协议的消息;
基于每个接口元信息分别获取对应的多框架处理函数集;
基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件。


2.根据权利要求1所述的方法,其特征在于,所述遍历所述第一抽象逻辑语法树分别获取每个请求消息对应的接口元信息,包括:
遍历所述第一抽象逻辑语法树分别获取每种请求消息对应的接口函数信息;
基于每个所述接口函数信息分别从所述第一抽象逻辑语法树中获取对应的接口元信息。


3.根据权利要求2所述的方法,其特征在于,所述接口元信息,包括:超文本传输协议元信息;
所述基于所述接口函数信息从所述第一抽象逻辑语法树中获取对应的接口元信息,包括:
基于所述接口函数信息从所述第一抽象逻辑语法树中获取对应的超文本传输协议元信息。


4.根据权利要求3所述的方法,其特征在于,所述接口元信息,还包括:位置映射元信息;
所述基于所述接口函数信息从所述第一抽象逻辑语法树中获取对应的接口元信息,还包括:
基于所述接口函数信息从所述第一抽象逻辑语法树中获取对应的入参类型和回参类型;
分别分析所述入参类型或所述回参类型与所述请求消息的对应关系,获取对应的位置映射元信息。


5.根据权利要求4所述的方法,其特征在于,所述接口元信息,包括:入参类型检测元信息和回参类型检测元信息;
所述基于所述接口函数信息从所述第一抽象逻辑语法树中获取对应的接口元信息,还包括:
基于所述入参类型从所述第一抽象逻辑语法树中递归获取对应的入参依赖类型;
根据所述入参类型和所述入参依赖类型生成对应的入参类型检测元信息;
基于所述回参类型从所述第一抽象逻辑语法树中递归获取对应的回参依赖类型;
根据所述回参类型和所述回参依赖类型生成对应的回参类型检测元信息。


6.根据权利要求5所述的方法,其特征在于,所述多框架处理函数集,包括:多个框架类型对应的业务逻辑处理函数;
在所述基于每个接口元信息和对应的所述多框架处理函数集分别生成中间件后,还包括:
接收第一请求消息;
分析所述第一请求消息,获取第一框架类型和第一超文本传输协议元信息;
基于所述第一超文本传输协议元信息获取第二中间件;
将所述第一框架类型、所述第一请求消息和所述第一超文本传输协议元信息作为入参输入所述第二中间件;
所述第二中间件将所述第一超文本传输协议元信息与所述第二中间件中的第二超文本传输协议元信息进行匹...

【专利技术属性】
技术研发人员:邬亮赵汝军
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1