CN110162296A - 应用程序编程接口文档的生成方法、装置及终端设备 - Google Patents
应用程序编程接口文档的生成方法、装置及终端设备 Download PDFInfo
- Publication number
- CN110162296A CN110162296A CN201910299718.8A CN201910299718A CN110162296A CN 110162296 A CN110162296 A CN 110162296A CN 201910299718 A CN201910299718 A CN 201910299718A CN 110162296 A CN110162296 A CN 110162296A
- Authority
- CN
- China
- Prior art keywords
- api
- source code
- class
- annotation information
- document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明适用于软件开发技术领域,提供了一种应用程序编程接口文档的生成方法、装置及终端设备,所述生成方法包括:获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;从所述源代码中提取出所述目标API的注释信息;将所述目标API的所述接口信息和所述注释信息进行关联;根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。本发明提供了一种避免代码侵入的API文档生成方法。
Description
技术领域
本发明属于软件开发技术领域,尤其涉及一种应用程序编程接口文档的生成方法、装置及终端设备。
背景技术
在互联网软件系统中,应用程序的前端与后端通过应用程序编程接口(Application Programming Interface,API)来实现逻辑的交互和数据交换。因而快速地为前端开发人员提供准确的API文档,有助于提高前端开发人员和后端开发人员的协同效率。
目前已经存在一些API文档自动生成工具或框架,Swagger框架是其中的典型代表并被广泛地应用。然而,利用Swagger框架生成API文档,存在着一些不足:首先,代码侵入性过强,需要在应用系统源代码中新增Swagger框架提供的大量注解,这些新增的注解对于达到自动生成API文档的目的是必不可少的,但是对应用系统的业务逻辑没有任何作用,直接影响到源代码的简洁性和可读性。其次,Swagger框架只能针对使用RESTful风格设计的应用系统新增注解从而自动生成API文档,而对于一些非RESTful风格开发的应用系统由于无法新增注解从而无法生成相应的API文档。因此,亟需一种新的API文档生成方法,解决现有技术存在的问题。
发明内容
有鉴于此,本发明实施例提供了一种API文档的生成方法、装置及终端设备,以解决现有技术存在的生成API文档过程中代码侵入性过强的技术问题。
本发明实施例的第一方面提供了一种应用程序编程接口API文档的生成方法,包括:
获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
从所述源代码中提取出所述目标API的注释信息;
将所述目标API的所述接口信息和所述注释信息进行关联;
根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
本发明实施例的第二方面提供了一种应用程序编程接口API文档的生成装置,包括:
源代码获取模块,用于获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
第一提取模块,用于对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
第二提取模块,用于从所述源代码中提取出所述目标API的注释信息;
关联模块,用于将所述目标API的所述接口信息和所述注释信息进行关联;
生成模块,用于根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
本发明实施例的第三方面提供了一种终端设备,包括存储器以及处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如下步骤:
获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
从所述源代码中提取出所述目标API的注释信息;
将所述目标API的所述接口信息和所述注释信息进行关联;
根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
从所述源代码中提取出所述目标API的注释信息;
将所述目标API的所述接口信息和所述注释信息进行关联;
根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
在本发明实施例中,通过从源代码中提取出待生成API文档的目标API的接口信息和注释信息后,将接口信息和注释信息进行关联,最后生成所述目标API的API文档,无需对应用程序的源代码做任何改动或注入,避免了对应用系统源代码的代码侵入;由于新的方案避免了代码侵入,无需依赖应用程序的风格,针对RESTful风格的应用程序和非RESTful风格的应用程序,都可以通过应用程序源代码做到准确提取各项参数信息以生成API文档。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种API文档的生成方法的具体实现流程图;
图2是本发明实施例提供的一种API文档的生成方法的步骤102的一种具体实现流程图;
图3是本发明实施例提供的一种API文档的生成方法的步骤102另一种具体实现流程图;
图4是本发明实施例提供的一种API文档的生成方法的步骤103的一种具体实现流程图;
图5是本发明实施例提供的一种API文档的生成方法的步骤103的另一种具体实现流程图;
图6是本发明实施例提供的一种API文档的生成装置的结构示意图;
图7是本发明实施例提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
另外,在本发明中若涉及“第一”或“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”或“第二”等的特征可以明示或者隐含地包括至少一个该特征。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1示出了本发明实施例提供的API文档的生成方法的实现流程,该生成方法流程包括步骤S101至S105。该生成方法适用于针对应用程序的API自动生成API文档的情形。该API文档的生成方法由API文档的生成装置执行,所述API文档的生成装置配置于终端设备,可由软件和/或硬件实现。各步骤的具体实现原理如下。
S101,获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息。
其中,应用程序包括网页应用和终端应用,为需要生成API文档的目标对象。应用程序的源代码中包括所述应用程序调用的多个API的接口信息和注释信息。获取应用程序源代码,并将源代码切换到合适的版本上,为后续的分析工作提供数据基础。
在本发明实施例中,获取应用程序的源代码包括:通过Git在预先配置好的应用程序源代码托管地址下载所述应用程序的源代码。
可安装于终端设备的应用程序,它们的源代码均使用Git进行管理。将Git的API进行了封装并集成在工具中,该工具可以是独立的用于生成API文档的应用程序,也可以是某个应用程序具备的可生成API文档的功能,在该工具的配置文件中,预先配置好目标对象,即待生成API文档的应用程序的源代码托管地址,在工具运行过程中,利用工具可以自动的下载所需的应用程序源代码。
S102,对所述源代码进行解析,提取出待生成API文档的目标API的接口信息。
其中,对源代码进行解析,提取出待生成API文档的目标API的接口信息。
接口信息包括但不限于:接口名称、接口请求参数信息、和接口响应参数信息。接口请求参数信息包括但不限于:参数名称和参数类型。接口响应参数信息包括但不限于:响应参数名称、响应参数类型、和复杂类型参数信息(即由多个基础类型字段组合而成的新类型)。
可选地,如图2所示,作为本发明一实施例,步骤102包括步骤201至204。
S201,对所述源代码进行编译,生成Java字节码。
其中,对源代码进行编译生成Java字节码,Java字节码是一种数据加载到计算机内存中的数据形式,对类的进一步分析需要此步骤作为基础。
也就是说,源代码需要编译成字节码,Java虚拟机(jvm)才能识别出其中的类结构,如果不进行编译,源代码和普通的文本文件没有区别,jvm就无法获取到其中的信息。
S202,利用Java类加载器加载所述Java字节码,保留符合预设规则的类。
其中,Java类加载器(Java Classloader)是Java运行时环境(Java RuntimeEnvironment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。
利用Java类加载器加载编译后的Java字节码,并结合设计好的规则库,依次扫描加载进来的类,同时根据规则库中的规则对被扫描的类进行匹配,符合预设规则的类被保留,不符合预设规则的类被过滤掉,即符合条件的类进行保留,不符合条件的类则过滤掉。
Java类加载器是将Java类加载至Java虚拟机,虚拟机不包括规则库,规则库是本工具中单独定义的一个用于做类过滤的模块,用于在类加载器将java类加载至虚拟机后,在对已加载进Java虚拟机的类进行扫描时,按规则库中的规则过滤出满足预设规则的Java类。对于API,只需过滤出一些对外开放的接口信息,并非要所有的接口信息全部暴露出来,因此需要一个规则库,来指定哪些类需要进行信息的提取,这样一方面可以保证受限的信息不对外暴漏,另一方面,后续如果有生成规则的变化,只需更新规则库,而不需要重新编写代码。
可以理解的是,本发明实施例中,待生成API文档的目标API可以为一个也可以为多个,根据规则库的设置进行选择,本发明对此不作具体限制。
S203,确定被保留的类的类别。
其中,被保留的类的类别包括但不限于请求参数类、响应参数类、和接口定义类等。基于不同的分类规则,分析被保留的类是属于那种类别,
根据上一步的筛选结果,分析被保留的类是属于那种类别,由于系统的代码是基于一定的规范进行开发的,那么不同的类从命名和继承关系上都有一定的规则。
例如,前面提到的请求参数类,类命名一定是以Request结尾的,并且所有请求参数类继承自Request类,因此既可以通过类名称进行判断分类,也可以从继承关系上进行判断分类。
又如,对于响应参数类,类命名一定是以Response结尾的,并且所有响应参数类继承自Response类,因而通过类名称进行判断分类。
接口定义类,类命名一定是以Action结尾的,并且所有接口定义类继承自Action类,因而通过类名称进行判断分类。
其他的类判断分类的原理类似,不过不同的类可能有不同的规则,本发明不再一一列举。
S204,基于反射机制提取各个类别用于描述所述目标API的接口信息。
其中,根据类别的划分,应用不同的提取规则提取不同的接口信息。例如,对请求参数类和响应参数类,需要提取字段详细信息;对接口类只需要提取接口名称信息等。
反射机制指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法。Java语言的反射机制为动态获取信息,以及动态调用对象方法的功能。
本发明实施例中,通过反射机制提取各个类别用于描述API的接口信息。示例性地,提取描述API的完整信息项,完整信息项包括接口名称、接口请求参数名称、接口请求参数类型、接口请求参数是否为必传参数、接口响应参数名称、接口响应参数类型、接口响应参数中关联的枚举类型、接口响应参数中关联的对象类型、接口版本等。
进一步地,在本发明其他实施例中,如图3所示,在步骤204之后,还包括步骤205,将各个类别用于描述应用程序编程接口的接口信息按简单Java对象的方式进行存储,形成结构化的接口信息。
在本发明实施例中,以json字符串的形式将描述目标API的接口信息,按简单Java对象的方式进行存储,形成结构化的接口信息。例如完整信息项包括:接口名称、接口请求参数名称、接口请求参数类型、接口请求参数是否为必传参数、接口响应参数名称、接口响应参数类型、接口响应参数中关联的枚举类型、接口响应参数中关联的对象类型、接口版本等,用json字符串的方式进行组织和存储后,将其反序列化为简单Java对象非常简便,形成结构化的接口信息,示例如下所示:
S103,从所述源代码中提取出所述目标API的注释信息。
在本发明实施例中,提取出目标API的接口信息,就可以确定出API名称、入参、出参等信息,这些信息中并不包含对API名称、入参和出参的描述和解释,这些信息需要从注释中提取。注释是对代码的解释说明,Java代码经过编译后,生成的Java字节码中会把所有注释信息删除掉。也就是说,API接口信息需要将源代码编译后,通过反射机制提取类信息来获取,但编译后的源代码会将注释信息全部删除掉,因此注释信息需要单独从源代码文件中提取。因而在步骤103中,从源代码中提取出目标API的注释信息。
可选地,如图4所示,作为本发明一实施例,步骤103包括步骤401至402。
S401,基于所述源代码,寻找所有类文件并记录每个类文件的文件路径。
S402,对于被保留的类的类文件,根据其文件路径,将源文件加载到JavaDoc提取模块,提取出被保留的每个类的类注释信息,和每个类的每个字段上的文档注释信息。
其中,接口信息包括类信息和字段信息。类信息不仅仅指类名,这里的类信息包含类名称、类继承关系、类文档信息,接口类的请求参数信息、接口类的响应参数信息、类上的特殊注解信息等。注解是对Java中的一种特殊语法标记,Java中根据注解的类型,会执行一些特殊的处理逻辑。不同注解通常对应着不同的功能,一些细节信息需要通过注解来过滤,比如@OpenApi这个注解表示这个类需要对外提供API文档,没有这个注解的类则可以跳过,不需要保留。
字段信息与类信息类似,字段信息主要是从上文中描述的接口类请求参数和接口响应参数信息中提取。字段信息包含字段名称、字段类型、复杂类型(即由多个基础类型字段组合而成的新类型)个字段信息、字段的文档信息、字段上的特殊注解。比如@Max这个注解指定了该字段的取值最大长度是多少。
通过JavaDoc提取模块提取源文件中每个类的类注释信息,每个类每个字段的文档注释信息。通过类名可以找到类的源文件,通过类中的字段名可以对应到源文件中字段上的注释信息。
进一步地,在本发明其他实施例中,如图5所示,在步骤402之后,还包括步骤403,将所述类注释信息和所述文档注释信息按简单Java对象的方式进行存储,形成结构化的注释信息。
在本发明实施例中,以json字符串的形式将描述目标API的类注释信息和文档注释信息,按简单Java对象的方式进行存储,形成结构化的注释信息。用json字符串的方式进行组织和存储后,将其反序列化为简单Java对象非常简便。结构化的注释信息,示例如下所示:
"batchAuth":"批量操作时,存放有权限和没权限的资源id\n批量操作的特殊性在于:\n(1)部分资源没有操作权限时,需要给用户提示,同时有权限的资源还得继续执行\n(2)有部分资源没有操作权限,某些有权限的资源在执行时条件不满足(如关机时,状态不对),这些都需要进行提示,同时符合条件的继续执行\n用户提示的内容会比较复杂",
S104,将所述目标API的所述接口信息和所述注释信息进行关联。
在步骤102提取了目标API的接口信息,步骤103获取到注释信息,但目标API的接口信息和注释信息各自存储,没有建立关联,因此,在步骤104中,将所述目标API的所述接口信息和所述注释信息进行关联。
也就是说,提取完之后,目标API的接口信息和注释信息是分离的,需要根据类名与类文件路径的映射关系,将目标API的接口信息和API的注释信息关联,从而将相关的信息融合到一起,然后以结构化方式进行存储。
具体地,将目标API的接口信息中的各个字段与提取出来的各个字段的注释信息一一对应起来,就能确定每个字段对应的注释信息是什么,从而最后生成目标API的API文档。
S105,根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
其中,生成API文档是最后一步工作,生成API文档必须依赖于前面提取的接口信息和注释信息。
关联后的API接口信息和注释信息已经包含了API文档所有需要的内容,但这个内容看上去并不友好,在本发明实施例中,步骤105,根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。从而将关联后的这些内容以更加友好的方式表达出来。
具体地,采用文档生成组件根据关联后的接口信息和注释信息生成API文档。文档生成组件可以有不同的风格和/或格式,通过获取用户选定的风格和/或格式,能够生成不同的API文档。
API文档是供用户阅读的文档,采用文档生成组件将提取出来的API内容以更友好的方式表达出来,其表现形式可以有多种,例如,将API内容,包括API接口信息和注释信息输出为docx文档、或markdown文档、或html文档。不同的表现形式只是样式上的差异,其核心内容没有差别,因此,本工具生成的API基本信息会以json文本的方式进行存储,基于这些信息之上,可以通过解析json中的内容,将其以不同形式输出,从而用户可以根据需要实现定制的展示。
需要说明的是,在本发明其他实施例中,文档生成组件还可以默认提供输出word文档格式和markdown文档格式的数据,也可以为其他文档格式的数据,也就是说,文档生成组件生成的API文档的格式可以为默认设置的格式,也可以为用户自定义的格式。
本发明实施例中,文档生成组件对目标API的接口信息和注释信息,即原始数据做了类似排版的工作,多种实现方式可以允许用户自行定义输出的风格和格式,提高了智能化水平,提高了用户体验度。
可选地,在本发明其他实施例中,在步骤105之后,还包括:将API文档保存在预设保存路径,以供用户设备下载。
其中,还可以预先设置API文档的保存路径,将生成的API文档保存在所述预设保存路径,预设保存路径可以是磁盘路径、网路路径、或者是存储卡路径等。
本发明实施例提出的API文档生成方法,通过从源代码中提取出API的接口信息和注释信息后,将接口信息和注释信息进行关联,最后生成API文档,无需对应用程序的源代码做任何改动或注入,避免了代码侵入;此外,由于不需要对源代码做任何改动或注入,因此针对RESTful风格和非RESTful风格的应用程序,都可以做到准确提取各项参数信息以生成API文档。
对应于上文实施例所述的API文档的生成方法,图6示出了本发明实施例提供的API文档的生成装置的结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。
参照图6,该API文档的生成装置包括:
源代码获取模块61,用于获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
第一提取模块62,用于对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
第二提取模块63,用于从所述源代码中提取出所述目标API的注释信息;
关联模块64,用于将所述目标API的所述接口信息和所述注释信息进行关联;
生成模块65,用于根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
可选地,所述第一提取模块62具体用于:
对所述源代码进行编译,生成Java字节码;
利用Java类加载器加载所述Java字节码,保留符合预设规则的类;
确定被保留的类的类别,基于反射机制提取各个类别用于描述所述目标API的接口信息。
可选地,所述第二提取模块63,具体用于:
基于所述源代码,寻找所有类文件并记录每个类文件的文件路径;
对于被保留的类的类文件,根据其文件路径,将源文件加载到JavaDoc提取模块,提取出被保留的每个类的类注释信息,和每个类的每个字段上的文档注释信息。
可选地,所述第一提取模块62,还用于:
将各个类别用于描述所述目标API的接口信息按简单Java对象的方式进行存储,形成结构化的接口信息。
可选地,所述第二提取模块63,还用于:
将所述类注释信息和所述文档注释信息按简单Java对象的方式进行存储,形成结构化的注释信息。
可选地,所述接口信息至少包括:接口名称、接口请求参数信息和接口响应参数信息。
可选地,源代码获取模块61,具体用于:
通过Git在预先配置好的应用程序源代码托管地址下载所述应用程序的源代码。
图7是本发明一实施例提供的终端设备的示意图。如图7所示,该实施例的终端设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72,例如API文档的生成程序。所述处理器70执行所述计算机程序72时实现上述各个API文档的生成方法实施例中的步骤,例如图1所示的步骤101至105。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示单元61至65的功能。
示例性的,所述计算机程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述终端设备7中的执行过程。
所述终端设备7可以是服务器、桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种应用程序编程接口API文档的生成方法,其特征在于,包括:
获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
从所述源代码中提取出所述目标API的注释信息;
将所述目标API的所述接口信息和所述注释信息进行关联;
根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
2.如权利要求1所述的生成方法,其特征在于,所述对所述源代码进行解析,提取出待生成API文档的目标API的接口信息,包括:
对所述源代码进行编译,生成Java字节码;
利用Java类加载器加载所述Java字节码,保留符合预设规则的类;
确定被保留的类的类别,基于反射机制提取各个类别用于描述所述目标API的接口信息。
3.如权利要求2所述的生成方法,其特征在于,所述从所述源代码中提取出所述目标API的注释信息,包括:
基于所述源代码,寻找所有类文件并记录每个类文件的文件路径;
对于被保留的类的类文件,根据其文件路径,将源文件加载到JavaDoc提取模块,提取出被保留的每个类的类注释信息,和每个类的每个字段上的文档注释信息。
4.如权利要求2所述的生成方法,其特征在于,所述基于反射机制提取各个类别用于描述所述目标API的接口信息之后,还包括:
将各个类别用于描述所述目标API的接口信息按简单Java对象的方式进行存储,形成结构化的接口信息。
5.如权利要求3所述的生成方法,其特征在于,所述提取出被保留的每个类的类注释信息,和每个类的每个字段上的文档注释信息之后,还包括:
将所述类注释信息和所述文档注释信息按简单Java对象的方式进行存储,形成结构化的注释信息。
6.如权利要求1至3任一项所述的生成方法,其特征在于,所述接口信息至少包括:接口名称、接口请求参数信息和接口响应参数信息。
7.如权利要求1至3任一项所述的生成方法,其特征在于,所述获取应用程序的源代码,包括:
通过Git在预先配置好的应用程序源代码托管地址下载所述应用程序的源代码。
8.一种应用程序编程接口API文档的生成装置,其特征在于,包括:
源代码获取模块,用于获取应用程序的源代码;所述源代码中包括所述应用程序调用的多个API的接口信息和注释信息;
第一提取模块,用于对所述源代码进行解析,提取出待生成API文档的目标API的接口信息;
第二提取模块,用于从所述源代码中提取出所述目标API的注释信息;
关联模块,用于将所述目标API的所述接口信息和所述注释信息进行关联;
生成模块,用于根据关联后的所述接口信息和所述注释信息,生成所述目标API的API文档。
9.一种终端设备,包括存储器以及处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至7任一项所述的生成方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910299718.8A CN110162296A (zh) | 2019-04-15 | 2019-04-15 | 应用程序编程接口文档的生成方法、装置及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910299718.8A CN110162296A (zh) | 2019-04-15 | 2019-04-15 | 应用程序编程接口文档的生成方法、装置及终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110162296A true CN110162296A (zh) | 2019-08-23 |
Family
ID=67639594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910299718.8A Pending CN110162296A (zh) | 2019-04-15 | 2019-04-15 | 应用程序编程接口文档的生成方法、装置及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110162296A (zh) |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515653A (zh) * | 2019-08-30 | 2019-11-29 | 北京东软望海科技有限公司 | 文档生成方法、装置、电子设备及计算机可读存储介质 |
CN110532028A (zh) * | 2019-08-30 | 2019-12-03 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于eclipse生成接口文档的方法 |
CN110806863A (zh) * | 2019-11-05 | 2020-02-18 | 泰康保险集团股份有限公司 | 接口文档生成方法及装置、电子设备、存储介质 |
CN110825430A (zh) * | 2019-11-08 | 2020-02-21 | 政采云有限公司 | 一种api文档生成方法、装置、设备及存储介质 |
CN111240653A (zh) * | 2019-12-31 | 2020-06-05 | 瑞庭网络技术(上海)有限公司 | 接口文档生成方法、装置及可读存储介质 |
CN111290996A (zh) * | 2020-01-16 | 2020-06-16 | 平安医疗健康管理股份有限公司 | 文档格式转换方法、装置、设备及可读存储介质 |
CN111399902A (zh) * | 2020-03-25 | 2020-07-10 | 北京字节跳动网络技术有限公司 | 客户端源文件处理方法、装置、可读介质与电子设备 |
CN111414161A (zh) * | 2020-03-27 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种生成idl文件的方法、装置、介质和电子设备 |
CN111552464A (zh) * | 2020-04-27 | 2020-08-18 | 上海鸿翼软件技术股份有限公司 | 一种sdk生成方法、装置、设备及介质 |
CN111767035A (zh) * | 2020-06-22 | 2020-10-13 | 星辰天合(北京)数据科技有限公司 | 基于OpenAPI的应用接口对接方法及装置 |
CN111782737A (zh) * | 2020-08-12 | 2020-10-16 | 中国工商银行股份有限公司 | 信息处理方法、装置、设备及存储介质 |
CN111880778A (zh) * | 2020-06-30 | 2020-11-03 | 百度在线网络技术(北京)有限公司 | 接口文档的生成方法、装置、电子设备及存储介质 |
CN111897574A (zh) * | 2020-07-10 | 2020-11-06 | 福州大学 | Dnn程序文档自动生成方法 |
CN111930363A (zh) * | 2020-08-07 | 2020-11-13 | 北京字节跳动网络技术有限公司 | 区块接口代码生成方法、及装置 |
CN111984252A (zh) * | 2020-06-30 | 2020-11-24 | 北京编程猫科技有限公司 | 一种基于图形化编程工具的作品创建方法及装置 |
CN112130830A (zh) * | 2020-08-25 | 2020-12-25 | 汉海信息技术(上海)有限公司 | 接口生成方法、装置及电子设备 |
CN112162755A (zh) * | 2020-09-28 | 2021-01-01 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、介质和电子设备 |
CN112307404A (zh) * | 2020-11-12 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 基于源文件的文档网站的设置方法、装置、设备及介质 |
CN112416430A (zh) * | 2020-11-27 | 2021-02-26 | 亿企赢网络科技有限公司 | 一种接口文档生成方法、装置、设备及存储介质 |
CN112433753A (zh) * | 2020-11-25 | 2021-03-02 | 平安普惠企业管理有限公司 | 基于参数信息的接口文档生成方法、装置、设备和介质 |
CN112540862A (zh) * | 2020-12-23 | 2021-03-23 | 东莞市盟大塑化科技有限公司 | 一种接口文档数据生成方法、装置、设备及存储介质 |
CN112632158A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 数据处理方法、设备及存储介质 |
CN112667274A (zh) * | 2019-10-15 | 2021-04-16 | 北京地平线机器人技术研发有限公司 | 生成应用程序编程接口文档的方法、装置及电子设备 |
CN112926290A (zh) * | 2021-03-09 | 2021-06-08 | 上海万向区块链股份公司 | 生成展示接口文档的系统、方法及介质 |
CN113238739A (zh) * | 2021-05-13 | 2021-08-10 | 挂号网(杭州)科技有限公司 | 一种插件开发和数据获取方法、装置、电子设备及介质 |
CN113296752A (zh) * | 2021-05-25 | 2021-08-24 | 平安养老保险股份有限公司 | 生成api文档的方法、系统、设备及存储介质 |
CN113296785A (zh) * | 2021-05-24 | 2021-08-24 | 平安养老保险股份有限公司 | 文档生成方法、系统、设备及可读存储介质 |
WO2021196904A1 (zh) * | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | 一种设备管理方法、装置及计算机系统 |
CN113495720A (zh) * | 2020-04-07 | 2021-10-12 | 中国移动通信集团重庆有限公司 | 网站开发系统及方法 |
CN114217784A (zh) * | 2021-11-01 | 2022-03-22 | 东莞数汇大数据有限公司 | 一种基于注释和反射生成接口文档的方法 |
CN114327615A (zh) * | 2022-03-09 | 2022-04-12 | 湖南云畅网络科技有限公司 | 一种基于大数据的接口文档生成方法及系统 |
CN114443129A (zh) * | 2021-12-30 | 2022-05-06 | 广东南方新媒体科技有限公司 | 一种项目文档自动化生成方法、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037312A1 (en) * | 2001-08-07 | 2003-02-20 | Gerald Czech | Documentation generator |
US7222333B1 (en) * | 2001-10-15 | 2007-05-22 | Cisco Technology, Inc. | Techniques for generating software application build scripts based on tags in comments |
US20140040863A1 (en) * | 2012-07-31 | 2014-02-06 | Vmware, Inc. | Documentation generation for web apis based on byte code analysis |
CN107193570A (zh) * | 2017-05-31 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种自动生成api文档的方法及系统 |
CN107239271A (zh) * | 2016-03-29 | 2017-10-10 | 滴滴(中国)科技有限公司 | 开发文档生成方法及装置 |
CN108241503A (zh) * | 2016-12-23 | 2018-07-03 | 北京国双科技有限公司 | 注释说明的生成方法及装置 |
CN108536436A (zh) * | 2018-03-15 | 2018-09-14 | 链家网(北京)科技有限公司 | Android系统基于URI的方法级别路由方法及装置 |
CN108762808A (zh) * | 2018-05-17 | 2018-11-06 | 李伟荣 | 接口文档的生成方法及系统 |
US20190034199A1 (en) * | 2017-07-27 | 2019-01-31 | Tibco Software Inc. | Auto-generation of application programming interface (api) documentation via implementation-neutral analysis of api traffic |
CN109542412A (zh) * | 2018-10-16 | 2019-03-29 | 平安普惠企业管理有限公司 | 接口信息生成方法、装置、计算机设备和存储介质 |
-
2019
- 2019-04-15 CN CN201910299718.8A patent/CN110162296A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037312A1 (en) * | 2001-08-07 | 2003-02-20 | Gerald Czech | Documentation generator |
US7222333B1 (en) * | 2001-10-15 | 2007-05-22 | Cisco Technology, Inc. | Techniques for generating software application build scripts based on tags in comments |
US20140040863A1 (en) * | 2012-07-31 | 2014-02-06 | Vmware, Inc. | Documentation generation for web apis based on byte code analysis |
CN107239271A (zh) * | 2016-03-29 | 2017-10-10 | 滴滴(中国)科技有限公司 | 开发文档生成方法及装置 |
CN108241503A (zh) * | 2016-12-23 | 2018-07-03 | 北京国双科技有限公司 | 注释说明的生成方法及装置 |
CN107193570A (zh) * | 2017-05-31 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种自动生成api文档的方法及系统 |
US20190034199A1 (en) * | 2017-07-27 | 2019-01-31 | Tibco Software Inc. | Auto-generation of application programming interface (api) documentation via implementation-neutral analysis of api traffic |
CN108536436A (zh) * | 2018-03-15 | 2018-09-14 | 链家网(北京)科技有限公司 | Android系统基于URI的方法级别路由方法及装置 |
CN108762808A (zh) * | 2018-05-17 | 2018-11-06 | 李伟荣 | 接口文档的生成方法及系统 |
CN109542412A (zh) * | 2018-10-16 | 2019-03-29 | 平安普惠企业管理有限公司 | 接口信息生成方法、装置、计算机设备和存储介质 |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532028A (zh) * | 2019-08-30 | 2019-12-03 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于eclipse生成接口文档的方法 |
CN110532028B (zh) * | 2019-08-30 | 2023-11-21 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于eclipse生成接口文档的方法 |
CN110515653B (zh) * | 2019-08-30 | 2023-04-11 | 望海康信(北京)科技股份公司 | 文档生成方法、装置、电子设备及计算机可读存储介质 |
CN110515653A (zh) * | 2019-08-30 | 2019-11-29 | 北京东软望海科技有限公司 | 文档生成方法、装置、电子设备及计算机可读存储介质 |
CN112632158A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 数据处理方法、设备及存储介质 |
CN112632158B (zh) * | 2019-09-24 | 2024-05-10 | 阿里巴巴集团控股有限公司 | 数据处理方法、设备及存储介质 |
CN112667274A (zh) * | 2019-10-15 | 2021-04-16 | 北京地平线机器人技术研发有限公司 | 生成应用程序编程接口文档的方法、装置及电子设备 |
CN110806863A (zh) * | 2019-11-05 | 2020-02-18 | 泰康保险集团股份有限公司 | 接口文档生成方法及装置、电子设备、存储介质 |
CN110825430A (zh) * | 2019-11-08 | 2020-02-21 | 政采云有限公司 | 一种api文档生成方法、装置、设备及存储介质 |
CN111240653A (zh) * | 2019-12-31 | 2020-06-05 | 瑞庭网络技术(上海)有限公司 | 接口文档生成方法、装置及可读存储介质 |
CN111240653B (zh) * | 2019-12-31 | 2024-02-02 | 瑞庭网络技术(上海)有限公司 | 接口文档生成方法、装置及可读存储介质 |
CN111290996A (zh) * | 2020-01-16 | 2020-06-16 | 平安医疗健康管理股份有限公司 | 文档格式转换方法、装置、设备及可读存储介质 |
CN111399902B (zh) * | 2020-03-25 | 2023-08-08 | 北京字节跳动网络技术有限公司 | 客户端源文件处理方法、装置、可读介质与电子设备 |
CN111399902A (zh) * | 2020-03-25 | 2020-07-10 | 北京字节跳动网络技术有限公司 | 客户端源文件处理方法、装置、可读介质与电子设备 |
CN111414161A (zh) * | 2020-03-27 | 2020-07-14 | 北京字节跳动网络技术有限公司 | 一种生成idl文件的方法、装置、介质和电子设备 |
CN111414161B (zh) * | 2020-03-27 | 2023-05-12 | 北京字节跳动网络技术有限公司 | 一种生成idl文件的方法、装置、介质和电子设备 |
WO2021196904A1 (zh) * | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | 一种设备管理方法、装置及计算机系统 |
CN113495720A (zh) * | 2020-04-07 | 2021-10-12 | 中国移动通信集团重庆有限公司 | 网站开发系统及方法 |
CN111552464B (zh) * | 2020-04-27 | 2024-05-31 | 上海鸿翼软件技术股份有限公司 | 一种sdk生成方法、装置、设备及介质 |
CN111552464A (zh) * | 2020-04-27 | 2020-08-18 | 上海鸿翼软件技术股份有限公司 | 一种sdk生成方法、装置、设备及介质 |
CN111767035A (zh) * | 2020-06-22 | 2020-10-13 | 星辰天合(北京)数据科技有限公司 | 基于OpenAPI的应用接口对接方法及装置 |
CN111984252A (zh) * | 2020-06-30 | 2020-11-24 | 北京编程猫科技有限公司 | 一种基于图形化编程工具的作品创建方法及装置 |
CN111880778A (zh) * | 2020-06-30 | 2020-11-03 | 百度在线网络技术(北京)有限公司 | 接口文档的生成方法、装置、电子设备及存储介质 |
CN111880778B (zh) * | 2020-06-30 | 2023-12-22 | 百度在线网络技术(北京)有限公司 | 接口文档的生成方法、装置、电子设备及存储介质 |
CN111897574A (zh) * | 2020-07-10 | 2020-11-06 | 福州大学 | Dnn程序文档自动生成方法 |
CN111930363A (zh) * | 2020-08-07 | 2020-11-13 | 北京字节跳动网络技术有限公司 | 区块接口代码生成方法、及装置 |
CN111930363B (zh) * | 2020-08-07 | 2023-11-24 | 抖音视界有限公司 | 区块接口代码生成方法、及装置 |
CN111782737B (zh) * | 2020-08-12 | 2024-05-28 | 中国工商银行股份有限公司 | 信息处理方法、装置、设备及存储介质 |
CN111782737A (zh) * | 2020-08-12 | 2020-10-16 | 中国工商银行股份有限公司 | 信息处理方法、装置、设备及存储介质 |
CN112130830B (zh) * | 2020-08-25 | 2024-03-19 | 汉海信息技术(上海)有限公司 | 接口生成方法、装置及电子设备 |
CN112130830A (zh) * | 2020-08-25 | 2020-12-25 | 汉海信息技术(上海)有限公司 | 接口生成方法、装置及电子设备 |
CN112162755A (zh) * | 2020-09-28 | 2021-01-01 | 北京字节跳动网络技术有限公司 | 一种数据处理方法、装置、介质和电子设备 |
CN112307404A (zh) * | 2020-11-12 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 基于源文件的文档网站的设置方法、装置、设备及介质 |
CN112433753A (zh) * | 2020-11-25 | 2021-03-02 | 平安普惠企业管理有限公司 | 基于参数信息的接口文档生成方法、装置、设备和介质 |
CN112416430A (zh) * | 2020-11-27 | 2021-02-26 | 亿企赢网络科技有限公司 | 一种接口文档生成方法、装置、设备及存储介质 |
CN112540862A (zh) * | 2020-12-23 | 2021-03-23 | 东莞市盟大塑化科技有限公司 | 一种接口文档数据生成方法、装置、设备及存储介质 |
CN112926290A (zh) * | 2021-03-09 | 2021-06-08 | 上海万向区块链股份公司 | 生成展示接口文档的系统、方法及介质 |
CN113238739A (zh) * | 2021-05-13 | 2021-08-10 | 挂号网(杭州)科技有限公司 | 一种插件开发和数据获取方法、装置、电子设备及介质 |
CN113296785A (zh) * | 2021-05-24 | 2021-08-24 | 平安养老保险股份有限公司 | 文档生成方法、系统、设备及可读存储介质 |
CN113296752A (zh) * | 2021-05-25 | 2021-08-24 | 平安养老保险股份有限公司 | 生成api文档的方法、系统、设备及存储介质 |
CN114217784A (zh) * | 2021-11-01 | 2022-03-22 | 东莞数汇大数据有限公司 | 一种基于注释和反射生成接口文档的方法 |
CN114443129A (zh) * | 2021-12-30 | 2022-05-06 | 广东南方新媒体科技有限公司 | 一种项目文档自动化生成方法、设备及存储介质 |
CN114327615B (zh) * | 2022-03-09 | 2022-06-28 | 湖南云畅网络科技有限公司 | 一种基于大数据的接口文档生成方法及系统 |
CN114327615A (zh) * | 2022-03-09 | 2022-04-12 | 湖南云畅网络科技有限公司 | 一种基于大数据的接口文档生成方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162296A (zh) | 应用程序编程接口文档的生成方法、装置及终端设备 | |
CN109976761A (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN105511873B (zh) | 用户界面控件展示方法及装置 | |
CN107133052B (zh) | 流程创建的方法及装置 | |
JP4812337B2 (ja) | フォームタイプを使用してフォームを生成する方法および装置 | |
CA2782414C (en) | Specifying user interface elements | |
JP6832288B2 (ja) | クラウドベースの統合サービスにおいてソースエレメントをターゲットエレメントにインテリジェントにマッピングするシステムおよび方法 | |
US7865868B2 (en) | .NET ribbon model for a ribbon user interface | |
US7747588B2 (en) | Extensible XML format and object model for localization data | |
US20150199378A1 (en) | Method and apparatus for realizing a dynamically typed file or object system enabling a user to perform calculations over the fields associated with the files or objects in the system | |
US20030233477A1 (en) | Extensible infrastructure for manipulating messages communicated over a distributed network | |
CN106844153B (zh) | 应用程序运行监控方法、装置以及终端 | |
Fill | SeMFIS: a flexible engineering platform for semantic annotations of conceptual models | |
US20100192124A1 (en) | Source code wrapper generation | |
US9311111B2 (en) | Programming environment with support for handle and non-handle user-created classes | |
US20070192083A1 (en) | Linguistic structure for data flow diagrams | |
US7844978B2 (en) | Artifact management for an extensible runtime environment | |
CN115809056B (zh) | 组件复用实现方法、装置和终端设备、可读存储介质 | |
US20150074678A1 (en) | Device and method for automating a process of defining a cloud computing resource | |
CN114489619A (zh) | 一种界面视图显示方法及终端设备、计算机可读存储介质 | |
US20090007157A1 (en) | Mapping Data Sources to a Procedural API | |
CN112988136B (zh) | 一种用户界面编辑方法及装置 | |
Günther et al. | Metaprogramming in Ruby: a pattern catalog | |
Li | Concern-Oriented and Model-Driven Migration of Legacy Java Applications to RESTful Web Services | |
Kalnins et al. | Metamodel Specialization for DSL Tool Building |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |