基于接口文档生成HTTP请求代码的系统及方法技术方案

技术编号:34370493 阅读:11 留言:0更新日期:2022-07-31 10:55
本发明专利技术公开了一种基于接口文档生成HTTP请求代码的系统及方法,所述系统包括接口文档形成及存储模块、接口信息规范性校验模块、JSON树转换模块、接口标识模块、models数组生成模块、services数组生成模块、model文件生成模块、service文件生成模块、api.module文件生成模块和HTTP请求代码生成模块。本发明专利技术在生成HTTP请求函数逻辑时,不会在内部组装请求头、格式化请求参数等,而是放在函数调用时和统一拦截器中处理。相对于传统方案将所有逻辑全部放在请求函数体中,本发明专利技术保证了请求函数逻辑的清晰简洁,简单易用,降低了其耦合程度。降低了其耦合程度。降低了其耦合程度。

System and method of generating HTTP request code based on interface document

【技术实现步骤摘要】
基于接口文档生成HTTP请求代码的系统及方法


[0001]本专利技术涉及一种基于接口文档生成HTTP请求代码的系统及方法,属于计算机软件


技术介绍

[0002]在完成接口文档的编写后,需要人工编写相关的接口请求代码。但其中存在诸多问题,如:接口文档中字段/结构变更频繁且对照麻烦,每次变更需手动更新代码;接口入参/出参模型定义繁琐,需人为手动逐个添加;字段信息不明确,研发人员需经常切换接口文档去理解字段含义;人为原因导致一系列代码错误,如,将result字段误写为results字段,等等。所以,需要使用一种通过接口文档自动生成接口请求代码的方法来提高研发效率。
[0003]现有的从接口文档转换成请求代码方案一般仅生成部分HTTP(Hyper Text Transfer Protocol,超文本传输协议)核心代码,并未添加接口/字段注释、参数类型等内容。一般情况下,传统的代码生成方案会将每个接口的请求头、参数等信息在请求函数体内做组装,导致代码臃肿、晦涩难懂,同时做了许多重复的工作。在遇到函数、接口字段可能重复等问题时,其往往通过一些hash方法来保证命名不冲突,但也导致了使用者无法直接看懂hash方法的含义。

技术实现思路

[0004]本专利技术的目的是解决上述
技术介绍
中提及的缺陷。
[0005]为实现上述专利技术目的,第一方面,本专利技术提供一种基于接口文档生成HTTP请求代码的系统,包括接口文档形成及存储模块,用于编写接口文档并以数据库形式存储;接口信息规范性校验模块,用于校验所述接口文档中的接口信息是否符合RESTful API规范;JSON树转换模块,用于将符合RESTful API规范的平层的线性结构的接口信息转换为JSON树;接口标识模块,用于通过遍历所述JSON树提取其中的接口信息来形成接口的唯一标识;models数组生成模块,通过提取接口的出/入参数内容及添加注释生成models数组;services数组生成模块,通过解析接口的模块名、请求/返回参数、接口路径,并添加注释,生成services数组;model文件生成模块,遍历所述models数组,使用模板渲染引擎handlebars生成至少一个model文件,其中一个model文件存储项目中一个模块的参数类型内容;service文件生成模块,遍历所述services数组,使用模板渲染引擎handlebars生成至少一个service文件,其中一个service文件存储项目中一个模块的HTTP请求函数;api.module文件生成模块,用于将所有的model文件和service文件封装成api.module文件并对外暴露,供外部调用HTTP请求函数或参数类型定义;HTTP请求代码生成模块,用于将api.module文件输出到用户配置的代码输出路径,使用语法分析器对项目的入口文件进行语法检查,并使用词法分析器将代码字符序列转换为标记序列,最终生成抽象语法树;递归解析所述抽象语法树,创建名称为ImportDeclaration的AST节点,该节点表示api.module
的引用语句;将该节点插入到抽象语法树的最后一个ImportDeclaration节点处,将返回的新的抽象语法树进行反编译,生成HTTP请求代码,并写入到项目的入口文件中。
[0006]进一步地,所述JSON树中的接口信息至少包括模块名及接口路径。
[0007]进一步地,从所述JSON树中提取出的接口信息被组装成大驼峰字符串,以所述大驼峰字符串来唯一标识该接口。
[0008]进一步地,所述HTTP请求函数包括函数名、函数入参别名及类型、函数出参别名及类型、HTTP请求方式和接口路径。
[0009]进一步地,所述函数名由接口请求方式与接口路径拼接形成。
[0010]第二方面,本专利技术提供一种基于接口文档生成HTTP请求代码的方法,包括以下步骤:(1)编写接口文档并以数据库形式存储;(2)校验所述接口文档中的接口信息是否符合RESTful API规范;如是,则继续下一步,如否,则结束;(3)将符合RESTful API规范的平层的线性结构的接口信息转换为JSON树;(4)通过遍历所述JSON树提取其中的接口信息来形成接口的唯一标识;(5)提取接口的出/入参数内容及添加注释生成models数组;(6)解析接口的模块名、请求/返回参数、接口路径,并添加注释,生成services数组;(7)遍历所述models数组,使用模板渲染引擎handlebars生成至少一个model文件,其中一个model文件存储项目中一个模块的参数类型内容;(8)遍历所述services数组,使用模板渲染引擎handlebars生成至少一个service文件,其中一个service文件存储项目中一个模块的HTTP请求函数;(9)将所有的model文件和service文件封装成api.module文件并对外暴露,供外部调用HTTP请求函数或参数类型定义;(10)将api.module文件输出到用户配置的代码输出路径,使用语法分析器对项目的入口文件进行语法检查,并使用词法分析器将代码字符序列转换为标记序列,最终生成抽象语法树;递归解析所述抽象语法树,创建名称为ImportDeclaration的AST节点,该节点表示api.module的引用语句;将该节点插入到抽象语法树的最后一个ImportDeclaration节点处,将返回的新的抽象语法树进行反编译,生成HTTP请求代码,并写入到项目的入口文件中。
[0011]进一步地,所述JSON树中的接口信息至少包括模块名及接口路径。
[0012]进一步地,从所述JSON树中提取出的接口信息被组装成大驼峰字符串,以所述大驼峰字符串来唯一标识该接口。
[0013]进一步地,所述HTTP请求函数包括函数名、函数入参别名及类型、函数出参别名及类型、HTTP请求方式和接口路径。
[0014]进一步地,所述函数名由接口请求方式与接口路径拼接形成。
[0015]与现有技术相比,本专利技术的有益效果为:
[0016]1.从接口文档中提取了所有描述信息、字段名称、字段类型等,通过深度优先的递归算法,按照模块分类生成多个代码文件,结构清晰,并生成每个接口注释、入参类型、出参类型、方法函数,最后将每个生成的代码文件封装到一个api模块中,对外暴露该api模块即可。而传统方式全部生成在一个文件中。
[0017]2.在生成HTTP请求函数逻辑时,不会在内部组装请求头、格式化请求参数等,而是放在函数调用时和统一拦截器中处理。相对于传统方案将所有逻辑全部放在请求函数体中,本专利技术保证了请求函数逻辑的清晰简洁,简单易用,降低了其耦合程度。
[0018]3.在生成HTTP请求代码的过程中,对每个接口的规范性进行扫描,检查是否符合
RESTful API风格。如果文档中有接口不符合规范,会作出相应提示,并中断代码生成流程。而传统方式并没有这一步,每当开发人员编写完文档之后,需要其他人员人为检查其文档的规范性。
...

【技术保护点】

【技术特征摘要】
1.一种基于接口文档生成HTTP请求代码的系统,其特征在于,包括:接口文档形成及存储模块,用于编写接口文档并以数据库形式存储;接口信息规范性校验模块,用于校验所述接口文档中的接口信息是否符合RESTful API规范;JSON树转换模块,用于将符合RESTful API规范的平层的线性结构的接口信息转换为JSON树;接口标识模块,用于通过遍历所述JSON树提取其中的接口信息来形成接口的唯一标识;models数组生成模块,通过提取接口的出/入参数内容及添加注释生成models数组;services数组生成模块,通过解析接口的模块名、请求/返回参数、接口路径,并添加注释,生成services数组;model文件生成模块,遍历所述models数组,使用模板渲染引擎handlebars生成至少一个model文件,其中一个model文件存储项目中一个模块的参数类型内容;service文件生成模块,遍历所述services数组,使用模板渲染引擎handlebars生成至少一个service文件,其中一个service文件存储项目中一个模块的HTTP请求函数;api.module文件生成模块,用于将所有的model文件和service文件封装成api.module文件并对外暴露,供外部调用HTTP请求函数或参数类型定义;HTTP请求代码生成模块,用于将api.module文件输出到用户配置的代码输出路径,使用语法分析器对项目的入口文件进行语法检查,并使用词法分析器将代码字符序列转换为标记序列,最终生成抽象语法树;递归解析所述抽象语法树,创建名称为ImportDeclaration的AST节点,该节点表示api.module的引用语句;将该节点插入到抽象语法树的最后一个ImportDeclaration节点处,将返回的新的抽象语法树进行反编译,生成HTTP请求代码,并写入到项目的入口文件中。2.根据权利要求1所述的基于接口文档生成HTTP请求代码的系统,其特征在于,所述JSON树中的接口信息至少包括模块名及接口路径。3.根据权利要求2所述的基于接口文档生成HTTP请求代码的系统,其特征在于,从所述JSON树中提取出的接口信息被组装成大驼峰字符串,以所述大驼峰字符串来唯一标识该接口。4.根据权利要求1所述的基于接口文档生成HTTP请求代码的系统,其特征在于,所述HTTP请求函数包括函数名、函数入参别名及类型、函数出参别名及类型、HTTP请求方式和接口路径。5.根据权利要求4所述的基于接口文档生成HTT...

【专利技术属性】
技术研发人员:李熠李凌辉宫旭陈运文纪达麒蔡伟任帅安赵朝阳张绍鼎李芯杰
申请(专利权)人:达而观数据成都有限公司
类型:发明
国别省市:

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

1