首页 / 专利库 / 电脑编程 / 文本编辑器 / 接口文档生成方法及装置、电子设备、存储介质

接口文档生成方法及装置、电子设备、存储介质

阅读:426发布:2020-05-11

专利汇可以提供接口文档生成方法及装置、电子设备、存储介质专利检索,专利查询,专利分析的服务。并且本 发明 提供一种 接口 文档生成方法及装置、 电子 设备、存储介质,该方法应用于基于Swagger的代码注解进行参数定义的程序代码,包括:接收接口文档生成 请求 ;依据所述接口文档生成请求确定目标程序代码,并获取与所述目标程序代码关联的预定义的接口文档模板;解析所述目标程序代码对应的代码注解,从所述代码注解中获取所述目标程序代码的 属性信息 ;将所述属性信息导入所述预定义的接口文档模板中,生成与所述接口文档生成请求对应的接口文档;展示所述接口文档。本发明 实施例 应用于基于Swagger的代码注解进行参数定义的程序代码,可以实现代码注解的规范化和通用性;根据目标程序代码自动生成接口文档,并提高了接口文档的准确性。,下面是接口文档生成方法及装置、电子设备、存储介质专利的具体信息内容。

1.一种接口文档生成方法,其特征在于,应用于基于Swagger的代码注解进行参数定义的程序代码,所述方法包括:
接收接口文档生成请求
依据所述接口文档生成请求确定目标程序代码,并获取与所述目标程序代码关联的预定义的接口文档模板;
解析所述目标程序代码对应的代码注解,从所述代码注解中获取所述目标程序代码的属性信息
将所述属性信息导入所述预定义的接口文档模板中,生成与所述接口文档生成请求对应的接口文档;
展示所述接口文档。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于对所述接口文档的编辑操作,更新所述接口文档对应的目标程序代码,和/或响应于对所述目标程序代码的编辑操作,更新所述目标程序代码对应的接口文档。
3.根据权利要求1所述的方法,其特征在于,在所述接收接口文档生成请求的步骤之前,还包括:
集成Ueditor文本编辑器;所述Ueditor文本编辑器用于接收自定义的样式设置;
依据所述自定义的样式设置生成所述预定义的接口文档模板。
4.根据权利要求3所述的方法,其特征在于,所述集成Ueditor文本编辑器的步骤,包括:
获取Ueditor文本编辑器的源文件;
在前端框架对应的文件夹中添加所述源文件的源代码;
配置所述源文件的配置文件中的服务器地址;
将所述源文件引入所述前端框架的入口文件;
创建所述源文件的源代码和所述前端框架的双向数据绑定。
5.根据权利要求1所述的方法,其特征在于,所述属性信息包括描述信息、调用方式、入参信息及出参信息;所述解析所述目标程序代码对应的代码注解,并从所述代码注解中获取所述目标程序代码的属性信息的步骤,包括:
获取所述代码注解中包含第一标识注解对应的属性值,得到所述目标程序代码的描述信息;
获取所述代码注解中包含第二标识注解对应的属性值,得到所述目标程序代码的调用方式;
获取所述代码注解中包含第三标识注解对应的属性值,得到所述目标程序代码的入参信息;
获取所述代码注解中包含第四标识注解对应的属性值,得到所述目标程序代码的出参信息。
6.根据权利要求1所述的方法,其特征在于,所述接口文档生成请求包括类名,所述依据所述接口文档生成请求确定目标程序代码的步骤,包括:
获取所述类名对应的多个方法名;
将所述多个方法名依次确定为目标方法名;
依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
7.根据权利要求1所述的方法,其特征在于,所述接口文档生成请求包括方法名,所述依据所述接口文档生成请求确定目标程序代码的步骤,包括:
将所述方法名确定为目标方法名;
依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
8.一种接口文档生成的装置,其特征在于,应用于基于Swagger的代码注解进行参数定义的程序代码,所述装置包括:
接收文档生成请求模,用于接收接口文档生成请求;
确定目标程序代码模块,用于依据所述接口文档生成请求确定目标程序代码,并获取与所述目标程序代码关联的预定义的接口文档模板;
获取属性信息模块,用于解析所述目标程序代码对应的代码注解,从所述代码注解中获取所述目标程序代码的属性信息;
导入属性信息模块,用于将所述属性信息导入所述预定义的接口文档模板中,生成与所述接口文档生成请求对应的接口文档;
展示接口文档模块,用于展示所述接口文档。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。

说明书全文

接口文档生成方法及装置、电子设备、存储介质

技术领域

[0001] 本发明涉及计算机技术领域,特别是涉及接口文档生成方法及装置、电子设备、存储介质。

背景技术

[0002] 在当今互联网时代,信息系统支撑着线上服务的运转,信息系统内部的前端服务和后台服务之间以及信息系统之间的交互,都是通过API(Application Programming Interface,应用程序接口)进行通信的,目前最流行的Web数据接口设计规范就是RESTful(Representational State Transfer,表述性状态转移),而且在当前微服务模式下,根据业务划分的领域越来越多,每个领域物理上相互独立,领域之间进行通信的API越来越多,所以RESTful API就是信息系统的骨架,是系统开发人员在进行交流和并行开发过程中必不可少的资料,通常需要在开发工作之前就要定义好相应的入参和出参,也就是自身通过入参去请求,希望得到相应的出参响应,多个API的交互就将整个系统串联起来。
[0003] 在现有技术中,对API接口的维护方式是通过Excel进行,由于实际业务的复杂性以及开发过程中需求的变更,都会导致API定义的变化,开发人员的工作饱和度很大,往往为了赶进度,直接在程序里修改了API,实时去维护API在文档中的变化,是一件非常繁杂且耗时的工作。所以随着系统开发工作的推进,最终程序实现的和起初定义的API往往有很大出入,这在后期系统维护阶段或进行工作交接时,给其他人员造成很大的困难,且在需要与其他系统进行通信时,提供的API接口文档通常不是准确的,严重影响双方工作效率。

发明内容

[0004] 鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的接口文档生成方法及装置、电子设备、存储介质,包括:
[0005] 一种接口文档生成方法,应用于基于Swagger的代码注解进行参数定义的程序代码,所述方法包括:
[0006] 接收接口文档生成请求;
[0007] 依据所述接口文档生成请求确定目标程序代码,并获取与所述目标程序代码关联的预定义的接口文档模板;
[0008] 解析所述目标程序代码对应的代码注解,从所述代码注解中获取所述目标程序代码的属性信息
[0009] 将所述属性信息导入所述预定义的接口文档模板中,生成与所述接口文档生成请求对应的接口文档;
[0010] 展示所述接口文档。
[0011] 优选地,所述方法还包括:
[0012] 响应于对所述接口文档的编辑操作,更新所述接口文档对应的目标程序代码。
[0013] 优选地,所述方法还包括:
[0014] 响应于对所述目标程序代码的编辑操作,更新所述目标程序代码对应的接口文档。
[0015] 优选地,在所述接收接口文档生成请求的步骤之前,还包括:
[0016] 集成Ueditor文本编辑器;所述Ueditor文本编辑器用于接收自定义的样式设置;
[0017] 依据所述自定义的样式设置生成所述预定义的接口文档模板。
[0018] 优选地,所述集成Ueditor文本编辑器的步骤,包括:
[0019] 获取Ueditor文本编辑器的源文件;
[0020] 在前端框架对应的文件夹中添加所述源文件的源代码;
[0021] 配置所述源文件的配置文件中的服务器地址;
[0022] 将所述源文件引入所述前端框架的入口文件;
[0023] 创建所述源文件的源代码和所述前端框架的双向数据绑定。
[0024] 优选地,所述将所述源文件引入所述前端框架的入口文件的步骤,包括:
[0025] 将所述源文件作为全局组件引入所述前端框架的入口文件。
[0026] 优选地,所述将所述源文件引入所述前端框架的入口文件的步骤,包括:
[0027] 将所述源文件注册为局部组件引入所述前端框架的入口文件。
[0028] 优选地,所述属性信息包括描述信息、调用方式、入参信息及出参信息;所述解析所述目标程序代码对应的代码注解,并从所述代码注解中获取所述目标程序代码的属性信息的步骤,包括:
[0029] 获取所述代码注解中包含第一标识注解对应的属性值,得到所述目标程序代码的描述信息;
[0030] 获取所述代码注解中包含第二标识注解对应的属性值,得到所述目标程序代码的调用方式;
[0031] 获取所述代码注解中包含第三标识注解对应的属性值,得到所述目标程序代码的入参信息;
[0032] 获取所述代码注解中包含第四标识注解对应的属性值,得到所述目标程序代码的出参信息。
[0033] 优选地,所述接口文档生成请求包括类名,所述依据所述接口文档生成请求确定目标程序代码的步骤,包括:
[0034] 获取所述类名对应的多个方法名;
[0035] 将所述多个方法名依次确定为目标方法名;
[0036] 依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
[0037] 优选地,所述接口文档生成请求包括方法名,所述依据所述接口文档生成请求确定目标程序代码的步骤,包括:
[0038] 将所述方法名确定为目标方法名;
[0039] 依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
[0040] 一种接口文档生成装置,应用于基于Swagger的代码注解进行参数定义的程序代码,所述装置包括:
[0041] 接收文档生成请求模,用于接收接口文档生成请求;
[0042] 确定目标程序代码模块,用于依据所述接口文档生成请求确定目标程序代码,并获取与所述目标程序代码关联的预定义的接口文档模板;
[0043] 获取属性信息模块,用于解析所述目标程序代码对应的代码注解,从所述代码注解中获取所述目标程序代码的属性信息;
[0044] 导入属性信息模块,用于将所述属性信息导入所述预定义的接口文档模板中,生成与所述接口文档生成请求对应的接口文档;
[0045] 展示接口文档模块,用于展示所述接口文档。
[0046] 优选地,所述装置还包括:
[0047] 更新目标程序代码模块,用于响应于对所述接口文档的编辑操作,更新所述接口文档对应的目标程序代码。
[0048] 优选地,所述装置还包括:
[0049] 更新接口文档模块,用于响应于对所述目标程序代码的编辑操作,更新所述目标程序代码对应的接口文档。
[0050] 优选地,所述装置还包括:
[0051] 集成文本编辑器模块,用于集成Ueditor文本编辑器;所述Ueditor文本编辑器用于接收自定义的样式设置;
[0052] 生成接口文档模板模块,用于依据所述自定义的样式设置生成所述预定义的接口文档模板。
[0053] 优选地,所述集成文本编辑器模块,包括:
[0054] 获取源文件子模块,用于获取Ueditor文本编辑器的源文件;
[0055] 添加源文件子模块,用于在前端框架对应的文件夹中添加所述源文件的源代码;
[0056] 配置地址子模块,用于配置所述源文件的配置文件中的服务器地址;
[0057] 引入入口文件子模块,用于将所述源文件引入所述前端框架的入口文件;
[0058] 双向数据绑定子模块,用于创建所述源文件的源代码和所述前端框架的双向数据绑定。
[0059] 优选地,所述引入入口文件子模块,包括:
[0060] 第一引入子模块,用于将所述源文件作为全局组件引入所述前端框架的入口文件。
[0061] 优选地,所述引入入口文件子模块,包括:
[0062] 第二引入子模块,用于将所述源文件注册为局部组件引入所述前端框架的入口文件。
[0063] 优选地,所述属性信息包括描述信息、调用方式、入参信息及出参信息;所述获取属性信息模块,包括:
[0064] 获取描述信息子模块,用于获取所述代码注解中包含第一标识注解对应的属性值,得到所述目标程序代码的描述信息;
[0065] 获取调用方式子模块,用于获取所述代码注解中包含第二标识注解对应的属性值,得到所述目标程序代码的调用方式;
[0066] 获取入参信息子模块,用于获取所述代码注解中包含第三标识注解对应的属性值,得到所述目标程序代码的入参信息;
[0067] 获取出参信息子模块,用于获取所述代码注解中包含第四标识注解对应的属性值,得到所述目标程序代码的出参信息。
[0068] 优选地,所述接口文档生成请求包括类名,所述确定目标程序代码模块,包括:
[0069] 获取方法名子模块,用于获取所述类名对应的多个方法名;
[0070] 第一确定子模块,用于将所述多个方法名依次确定为目标方法名;
[0071] 第二确定子模块,用于依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
[0072] 优选地,所述接口文档生成请求包括方法名,所述确定目标程序代码模块,包括:
[0073] 第三确定子模块,用于将所述方法名确定为目标方法名;
[0074] 第四确定子模块,用于依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
[0075] 一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的方法的步骤。
[0076] 一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
[0077] 本发明具有以下优点:
[0078] 在本发明的实施例中,应用于基于Swagger的代码注解进行参数定义的程序代码,可以实现代码注解的规范化和通用性;通过接收接口文档生成请求,并依据该请求确定目标程序代码以及获取与目标程序代码关联的预定义的接口文档模板,其中,预定义的接口文档模板可以根据用户需求设置相应样式;通过解析目标程序代码的代码注解,从代码注解中获取目标程序代码的属性信息,并将属性信息导入预定义的接口文档模板中,生成对应的接口文档,并展示接口文档;从而实现根据目标程序代码自动生成接口文档,并提高了接口文档的准确性。附图说明
[0079] 为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0080] 图1是本发明一实施例提供的一种接口文档生成方法的步骤流程图
[0081] 图2是本发明一实施例提供的基于Swagger的代码注解进行参数定义的程序代码实现流程图;
[0082] 图3是本发明一实施例提供的预定义的接口文档模板的示意图;
[0083] 图4是本发明一实施例提供的依据接口文档生成请求确定目标程序代码以及获取对应属性信息的流程图;
[0084] 图5是本发明一实施例提供的与图3所示的预定义的接口文档模板对应的接口文档的示意图;
[0085] 图6是本发明实施例的一种接口文档生成方法的设计方案框图
[0086] 图7是本发明一实施例项目提供接口文档的流程图;
[0087] 图8是本发明一实施例基于Swagger的controller方法入参的代码示例;
[0088] 图9是本发明一实施例基于Swagger的controller方法出参的代码示例;
[0089] 图10是本发明一实施例提供的接口文档生成装置的结构框图。

具体实施方式

[0090] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0091] 本发明实施例的核心构思之一在于,提供一种应用于基于Swagger的代码注解进行参数定义的程序代码的接口文档生成方法,通过接收接口文档生成请求,并依据该请求确定目标程序代码以及获取与目标程序代码关联的预定义的接口文档模板,其中,预定义的接口文档模板可以根据用户需求设置相应样式;通过解析目标程序代码的代码注解,从代码注解中获取目标程序代码的属性信息,并将属性信息导入预定义的接口文档模板中,生成对应的接口文档,并展示接口文档;从而实现根据目标程序代码自动生成接口文档,并提高了接口文档的准确性。
[0092] 参照图1,示出了本发明一实施例提供的接口文档生成方法的步骤流程图,该方法应用于基于Swagger的代码注解进行参数定义的程序代码;Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful格的Web服务。
[0093] 具体地,请参照图2,基于Swagger的代码注解进行参数定义的程序代码实现过程如下:
[0094] 项目框架搭建完成后,首先在其配置文件pom.xml中引入jar包springfox-swqgger,如下为一示例代码:
[0095]
[0096] io.springfox
[0097] springfox-swagger2
[0098] 2.6.1
[0099]
[0100] 接着引入jar包系统配置springfox-swagger-ui,为后续代码编写完成后,通过Swagger提供的UI界面进行联调,实现前后端分离后的联调测试,如下为一示例的引入方式:
[0101]
[0102] io.springfox
[0103] springfox-swagger-ui
[0104] 2.6.1
[0105]
[0106] 在编写Controller类中的业务方法时,引入注解@ApiOperation、@ApiImplicitParams以及@ApiImplicitParam,指定方法入参的名称、数据类型、属性信息等;
[0107] 创建方法的接收参数实体Bean,在java类中引入注解@ApiModel、@ApiModelProperty,指定方法的描述信息,以及出参的属性信息,为后续导出返回参数时提供参数中英文名称对照。
[0108] 本发明实施例提供的方法应用于基于Swagger的代码注解进行参数定义的程序代码,可以方便接口调试,也可以利用固定注解为生成接口文档提供基础,以提高接口文档的通用性和可读性。
[0109] 本发明一实施例提供的接口文档生成方法包括:
[0110] 步骤101,接收接口文档生成请求;
[0111] 在具体实现中,系统开发过程中,可以在前端项目中开发一个接口文档导出界面,在接口文档导出界面接收接口文档生成请求。前端可以是网站前台部分,运行在PC端、移动端等浏览器上展示给用户浏览的网页,或运行在PC端、移动端等带有显示装置的显示页面。
[0112] 具体地,接口文档导出界面可以根据不同项目组的要求各自定义样式进行开发。例如,可以在接口文档导出界面设置一个输入框及接口文档生成启动按钮,输入框用于接收接口文档生成请求中包含的方法名或类名,启动按钮用于启动接口文档生成指令,以生成离线的接口文档。
[0113] 进一步地,在一示例中,在接收接口文档生成请求的步骤之前,还包括:
[0114] 集成Ueditor文本编辑器;所述Ueditor文本编辑器用于接收自定义的样式设置;
[0115] 依据所述自定义的样式设置生成所述预定义的接口文档模板。
[0116] UEditor文本编辑器是百度开源的一套富文本编辑器,具有轻量可定制的特点。该UEditor文本编辑器分3层架构设计,核心底层提供如DOM(Document Object Model,文档对象模型)树操作、Selection(选择)、Range(范围)等方法和概念,底层之上覆盖的是命令插件层,UEditor的所有功能都是在该层来完成,最上面的UI层,用户可以根据自己的需求来个性化定制展示样式。利用UEditor文本编辑器的个性化定制展示样式的功能,可以实现根据不同用户的需求生成对应样式的预定义的接口文档模板,以提高接口文档的可读性,进而提到开发人员的工作效率。
[0117] 具体地,集成Ueditor文本编辑器的步骤包括如下子步骤:
[0118] 获取Ueditor文本编辑器的源文件;
[0119] 在前端框架对应的文件夹中添加所述源文件的源代码;
[0120] 配置所述源文件的配置文件中的服务器地址;
[0121] 将所述源文件引入所述前端框架的入口文件;
[0122] 创建所述源文件的源代码和所述前端框架的双向数据绑定。
[0123] 本示例以前端框架是VUE3.0为例,首先,可以通过下载或者复制等方式获取Ueditor文本编辑器的源文件,将源文件中的源代码添加到vue项目的static(计算机高级语言关键字)文件夹中;接着,修改源文件的配置文件中的配置服务器地址,即修改ueditor.config.js文件;再接着,将Ueditor文本编辑器所需的文件全部引入vue的入口文件main.js中;最后,通过语法糖v-model实现源文件的源代码和vue的双向数据绑定。从而完成集成Ueditor文本编辑器的过程。
[0124] 进一步地,在一示例中,在将源文件引入前端框架的入口文件的步骤,包括:
[0125] 将源文件作为全局组件引入前端框架的入口文件。
[0126] 结合上述示例进行说明,在vue的入口文件main.js中将Ueditor文本编辑器所需的文件全部作为全局组件引入。
[0127] 进一步地,在另一示例中,在将源文件引入前端框架的入口文件的步骤,包括:
[0128] 将所述源文件注册为局部组件引入所述前端框架的入口文件。
[0129] 结合上述示例进行说明,通过Vue.component将Ueditor文本编辑器所需的文件全部注册为局部组件引入vue的入口文件main.js中。
[0130] 步骤102,依据接口文档生成请求确定目标程序代码,并获取与目标程序代码关联的预定义的接口文档模板;
[0131] 在具体实现中,将接口文档生成请求包含的方法名或类名作为入参,根据入参确定对应的目标程序代码、以及与目标程序代码关联的预定义的接口文档模板。在本实施例中,预定义的接口文档模板只包含样式信息,该样式信息可以根据用户自身的喜好或需求的设定,而样式信息中的接口名称、接口类型等具体value(属性)值是空白的,如图3所示,为一示例所示的预定义的接口文档模板。预定义的接口文档模板与目标程序代码关联,在具体实现中,目标程序代码与预定义的接口文档模板可以通过key(键值)传值的方式进行关联。
[0132] 进一步地,在第一示例中,当接口文档生成请求包含方法名时,依据接口文档生成请求确定目标程序代码的步骤,包括如下子步骤:
[0133] 将方法名确定为目标方法名;
[0134] 依据目标方法名确定与目标方法名对应的目标程序代码。
[0135] 在具体实现中,系统开发过程中创建一个功能类,在类中实现利用java反射原理导出接口文档的方法。java反射原理是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射原理。将目标方法名作为入参,利用反射包提供的isAnnotationPresent(注解)方法判断目标方法名是否存在,若存在,则获取目标方法名对应的目标程序代码。
[0136] 进一步地,在第一示例中,当接口文档生成请求包含类名时,依据接口文档生成请求确定目标程序代码的步骤,包括如下子步骤:
[0137] 获取类名对应的多个方法名;
[0138] 将多个方法名依次确定为目标方法名;
[0139] 依据目标方法名确定与目标方法名对应的目标程序代码。
[0140] 在具体实现中,先获取类名中所有的方法名,然后将所有方法名依次确定为目标方法名,具体地,可以通过Method.class类中的getDeclaredMethods(获取对象的所有方法)方法获取类名所有的方法,如下为一示例代码:Method[ ]methods=targetClass.getDeclaredMethods();之后,将方法数组methods进行循环得到每一个方法名。
[0141] 例如,当类名中包含三个方法名时,先将第一个方法名作为目标方法名,依据上述第一示例中根据目标方法名确定目标程序代码的步骤,得到第一个方法名对应的目标程序代码;然后将第二个方法名作为目标方法名,同理,依据上述步骤,得到第二个方法名对应的目标程序代码;最后将第三个方法名作为目标方法名,同理,依据上述步骤,得到第三个方法名对应的目标程序代码。因此,当接口文档生成请求包含类名时,可以获得类名对应的多个方法名,并获得多个方法名对应的多个目标程序代码。
[0142] 如图4所示,当接收接口文档生成请求后,判断接口文档生成请求的入参是方法名还是类名,若是方法名,则按照上述第一示例的步骤执行;若是类名,则按照上述第二示例的步骤执行。
[0143] 步骤103,解析目标程序代码对应的代码注解,从代码注解中获取目标程序代码的属性信息;
[0144] 目标程序代码基于Swagger的代码注解进行参数定义;对应的代码注解具有规范化和通用性广的特点。通过解析目标程序代码对应的代码注解,根据不同代码注解可以获取目标程序代码的属性信息。其中,属性信息包括描述信息、调用方式、入参信息及出参信息等。
[0145] 在具体实现中,解析目标程序代码对应的代码注解,并从代码注解中获取目标程序代码的属性信息包括如下子步骤:
[0146] 获取所述代码注解中包含第一标识注解对应的属性值,得到所述目标程序代码的描述信息;
[0147] 获取所述代码注解中包含第二标识注解对应的属性值,得到所述目标程序代码的调用方式;
[0148] 获取所述代码注解中包含第三标识注解对应的属性值,得到所述目标程序代码的入参信息;
[0149] 获取所述代码注解中包含第四标识注解对应的属性值,得到所述目标程序代码的出参信息。
[0150] 具体地,请继续参照图4,以接口文档生成请求包含目标方法名为targetMethod为例,第一标识注解可以为@ApiOperation,第一标识注解对应的属性值即为目标程序代码的描述信息,描述信息可以理解为目标方法被调用时,调用方读取指向一个代码块的地址。利用反射包java.lang.reflect提供的AccessibleObject.class中的isAnnotationPresent方法,判断targetMethod方法是否已经用了Swagger注解@ApiOperation;若是,则利用getAnnotation获取到该方法的描述信息;反之,若否,则获取的描述信息为空。
[0151] 第二标识注解可以为@RequestMapping,第二标识注解对应的属性值即为目标程序代码的调用方式。具体地,可以利用getAnnotation获取方法的调用方式。
[0152] 第三标识注解可以为@ApiImplicitParam,第三标识注解对应的属性值即为目标程序代码的入参。具体地,利用getAnnotation定位到方法,通过Method.class类中的getDeclaredMethod获取targetMethod的入参、入参类型,是否必传等信息。
[0153] 第四标识注解可以为@ApiModelProperty,第四标识注解对应的属性值即为目标程序代码的出参。具体地,利用invoke方法查询到方法返回值信息。
[0154] 步骤104,将属性信息导入预定义的接口文档模板中,生成与接口文档生成请求对应的接口文档;
[0155] 在获取到目标程序代码的属性信息后,将属性信息导入预定义的接口文档模板中,以将空白的预定义的接口文档模板填充完整,如图5所示,为与图3的预定义的接口文档模板对应的接口文档。具体地,属性信息可以通过Ajax传递到前端并渲染到预定义的接口文档模板的相应位置,从而生成与接口文档生成请求对应的接口文档。其中,Ajax即“Asynchronous Javascript And XML”,是一种创建交互式网页应用的网页开发技术。
[0156] 本实施例中,生成的接口文档可以导出,方便开发人员离线查看;生成的接口文档与目标程序代码相互关联,即当目标程序代码发生变化时,可以自动对应更新接口文档内容;当开发人员更新接口文档内容时,可以自动对应更新目标程序代码相关内容。因此,可以确保接口文档的准确性,采用该接口文档,可以在项目前后端联调、系统之间并行开发和联调等阶段,提高开发人员的工作效率。
[0157] 步骤105,展示接口文档。
[0158] 在生成接口文档后,可以直接在前端显示界面中展示接口文档,也可以将接口文档离线导出后,再打开接口文档对应的离线文件,以展示接口文档;该离线文件的文件格式可以由用户自定义,例如可以是xlsx文件格式、doc文件格式、HTML文件格式等。
[0159] 进一步地,在一接口文档生成方法的实施例中,还包括:
[0160] 响应于对所述接口文档的编辑操作,更新所述接口文档对应的目标程序代码。
[0161] 本示例中,可以对接口文档进行编辑操作,在对接口文档进行编辑操作时,可以自动更新对应的目标程序代码,从而确保接口文档与目标程序代码的一致性。
[0162] 进一步地,在一接口文档生成方法的实施例中,还包括:
[0163] 响应于对所述目标程序代码的编辑操作,更新所述目标程序代码对应的接口文档。
[0164] 本示例中,当开发人员对目标程序代码执行编辑操作时,可以自动更新对应的接口文档,从而确保接口文档的准确性,减轻开发人员维护接口文档的工作。
[0165] 本发明的实施例提供的接口文档生成方法应用于基于Swagger的代码注解进行参数定义的程序代码,可以实现代码注解的规范化和通用性;通过接收接口文档生成请求,并依据该请求确定目标程序代码以及获取与目标程序代码关联的预定义的接口文档模板其中,预定义的接口文档模板可以根据用户需求设置相应样式;通过解析目标程序代码的代码注解,从代码注解中获取目标程序代码的属性信息,并将属性信息导入预定义的接口文档模板中,生成对应的接口文档,并展示接口文档;从而实现根据目标程序代码自动生成接口文档,确保接口文档的准确性,以提高开发人员的工作效率。
[0166] 请参照图6,示出了本发明实施例的一种接口文档生成方法的设计方案框图。
[0167] 接口文档由服务端编写,在项目的不同阶段提供接口文档给到前端人员的流程如图7所示。在项目开发阶段,服务端开发可以视情况来决定是直接编写服务端调用层代码,还是写Swagger描述文件。其中,编写服务端代码是直接写功能实现,编写Swagger描述文件只是写一个方法的实现示例,方法的出参并不是由入参查询数据库进行处理所得,而是静态样例。一般来说,编写服务端代码对应的情况是提供接口文档时间不紧急,且后台框架已经搭建完毕,可以立即启动编写业务代码实现的时候;编写Swagger描述文件对应的情况是接口文档提供时间紧急,或者后台框架没有搭建好、不能快速编码实现的时候。如果项目启动阶段,就已经搭好了后台框架,那可以直接编写服务端被调用层的代码(即controller类及其入参、出参、对象)。如果项目启动阶段并没有相关后台框架,而前端对接口文档追得紧,可以先编写方法的swagger描述信息以生成接口文档。在项目迭代阶段,后台人员无需关注接口文档,有需求变更导致接口变化,可以直接写代码,并依据新的代码生成新的接口文档,以将新的接口文档给到前端。
[0168] 由于微服务模式下每个领域是相互独立、物理隔离的,从项目代码到数据库,和其他领域没有必然的关联,在此可以搭建SpringCloud项目框架,并在pom.xml配置文件中引入了Swagger相关的jar包,以及引入利用java反射机制,根据方法名或类名导出接口文档的整个后台逻辑代码打成一个公共的工具jar包,即spring-swagger-ueditor-api.jar;
[0169] 然后,根据Swagger注解要求,编写业务方法,并定义方法的属性信息。具体地,如图8所示,主要通过注解@ApiOperation、@RequestMapping、@ApiImplicitParams、@ApiImplicitParam定义方法的入参,如图9所示,通过注解@ApiModel、@ApiModelProperty定义方法的出参。
[0170] 接着,将UEditor富文本编辑器集成到Vue框架中来,然后使用该富文本编辑器定义接口的样式,如图3所示。
[0171] 最后,在前端项目中开发一个接口导出界面,该界面可以根据不同项目组的要求各自定义样式进行开发,入参为方法名或类名,对应调用spring-swagger-ueditor-api.jar中根据方法名或类名生成接口文档的方法。点击接口导出界面中的导出按钮,可将方法返回的信息,通过Ajax传递到前端并渲染到接口文档模板中,最终导出接口文档,如图5所示。
[0172] 本方案将Ueditor作为一个组件集成到项目框架中,然后通过v-model双向绑定的方式来使用Ueditor,以实现自定义接口文档模板的样式,可以满足不同的文档样式需求,提高文档的可读性;接着,通过java反射的思想将类中的方法属性信息查询出来,再通过Ajax传递到前端以填充接口文档模板中的value值,生成接口文档,从而实现高效准确生成接口文档。
[0173] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0174] 参照图10,示出了本发明一实施例提供的一种接口文档生成装置的结构框图,该装置应用于基于Swagger的代码注解进行参数定义的程序代码,该装置具体可以包括如下模块:
[0175] 接收文档生成请求模块201,用于接收接口文档生成请求;
[0176] 确定目标程序代码模块202,用于依据所述接口文档生成请求确定目标程序代码,并获取与所述目标程序代码关联的预定义的接口文档模板;
[0177] 获取属性信息模块203,用于解析所述目标程序代码对应的代码注解,从所述代码注解中获取所述目标程序代码的属性信息;
[0178] 导入属性信息模块204,用于将所述属性信息导入所述预定义的接口文档模板中,生成与所述接口文档生成请求对应的接口文档;
[0179] 展示接口文档模块205,用于展示所述接口文档。
[0180] 在本发明的一种优选实施例中,所述装置还包括:
[0181] 更新目标程序代码模块,用于响应于对所述接口文档的编辑操作,更新所述接口文档对应的目标程序代码。
[0182] 在本发明的一种优选实施例中,所述装置还包括:
[0183] 更新接口文档模块,用于响应于对所述目标程序代码的编辑操作,更新所述目标程序代码对应的接口文档。
[0184] 在本发明的一种优选实施例中,所述装置还包括:
[0185] 集成文本编辑器模块,用于集成Ueditor文本编辑器;所述Ueditor文本编辑器用于接收自定义的样式设置;
[0186] 生成接口文档模板模块,用于依据所述自定义的样式设置生成所述预定义的接口文档模板。
[0187] 在本发明的一种优选实施例中,所述集成文本编辑器模块,包括:
[0188] 获取源文件子模块,用于获取Ueditor文本编辑器的源文件;
[0189] 添加源文件子模块,用于在前端框架对应的文件夹中添加所述源文件的源代码;
[0190] 配置地址子模块,用于配置所述源文件的配置文件中的服务器地址;
[0191] 引入入口文件子模块,用于将所述源文件引入所述前端框架的入口文件;
[0192] 双向数据绑定子模块,用于创建所述源文件的源代码和所述前端框架的双向数据绑定。
[0193] 在本发明的一种优选实施例中,所述引入入口文件子模块,包括:
[0194] 第一引入子模块,用于将所述源文件作为全局组件引入所述前端框架的入口文件。
[0195] 在本发明的一种优选实施例中,所述引入入口文件子模块,包括:
[0196] 第二引入子模块,用于将所述源文件注册为局部组件引入所述前端框架的入口文件。
[0197] 在本发明的一种优选实施例中,所述属性信息包括描述信息、调用方式、入参信息及出参信息;所述获取属性信息模块,包括:
[0198] 获取描述信息子模块,用于获取所述代码注解中包含第一标识注解对应的属性值,得到所述目标程序代码的描述信息;
[0199] 获取调用方式子模块,用于获取所述代码注解中包含第二标识注解对应的属性值,得到所述目标程序代码的调用方式;
[0200] 获取入参信息子模块,用于获取所述代码注解中包含第三标识注解对应的属性值,得到所述目标程序代码的入参信息;
[0201] 获取出参信息子模块,用于获取所述代码注解中包含第四标识注解对应的属性值,得到所述目标程序代码的出参信息。
[0202] 在本发明的一种优选实施例中,所述接口文档生成请求包括类名,所述确定目标程序代码模块,包括:
[0203] 获取方法名子模块,用于获取所述类名对应的多个方法名;
[0204] 第一确定子模块,用于将所述多个方法名依次确定为目标方法名;
[0205] 第二确定子模块,用于依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
[0206] 在本发明的一种优选实施例中,所述接口文档生成请求包括方法名,所述确定目标程序代码模块,包括:
[0207] 第三确定子模块,用于将所述方法名确定为目标方法名;
[0208] 第四确定子模块,用于依据所述目标方法名确定与所述目标方法名对应的目标程序代码。
[0209] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0210] 本发明一实施例还提供了电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上接口文档生成的方法的步骤。
[0211] 本发明一实施例还提供了计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上接口文档生成的方法的步骤。
[0212] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0213] 本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0214] 本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0215] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0216] 这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0217] 尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0218] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0219] 以上对本发明所提供的接口文档生成方法及装置、电子设备、存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈