CN115904483A - 接口文档生成方法和装置、介质和计算机设备 - Google Patents
接口文档生成方法和装置、介质和计算机设备 Download PDFInfo
- Publication number
- CN115904483A CN115904483A CN202211611049.1A CN202211611049A CN115904483A CN 115904483 A CN115904483 A CN 115904483A CN 202211611049 A CN202211611049 A CN 202211611049A CN 115904483 A CN115904483 A CN 115904483A
- Authority
- CN
- China
- Prior art keywords
- interface
- target interface
- class
- target
- parameters
- 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
Images
Abstract
本发明的实施方式提供了一种接口文档生成方法和装置、介质和计算机设备,能够从目标接口类中解析出目标接口方法和目标接口路径,并从目标接口方法中解析接口参数,从而生成包括接口参数的类对象,然后再将类对象中的接口参数设置到目标接口路径下,并将目标接口路径下的接口参数写入Swagger文档,得到接口文档。这样,可以直接通过解析目标接口类和目标接口方法来自动地获取生成接口文档所需的各种接口参数,而无需开发人员填写对应接口文案,降低了生成接口文档时的操作复杂度,为用户带来了更好的体验。
Description
技术领域
本发明的实施方式涉及计算机软件技术领域,更具体地,本发明的实施方式涉及接口文档生成方法和装置、介质和计算机设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着SpringBoot、SpringCloud等微服务框架的流行,一个应用可能包括成百上千个微服务。数量众多的微服务通常会产生大量的接口调用,而接口调用可以通过接口文档实现。目前,一般通过在接口实体上添加相应注解的方式来自动化地生成接口文档。
发明内容
现有技术中的接口文档生成方式需要开发人员在接口上使用相应注解,并在注解中填写对应接口文案,完成接口的维护,在项目启动时通过读取注解来生成接口文档,而人工填写接口文案的方式复杂度较高。
为此,本发明提供一种接口文档生成方法和装置、介质和计算机设备。
在本发明实施方式的第一方面中,提供了一种接口文档生成方法,所述方法包括:从目标接口类中解析出目标接口方法和目标接口路径;从所述目标接口方法中解析出接口参数,生成包括所述接口参数的类对象;将所述类对象中的接口参数设置到所述目标接口路径下,并将所述目标接口路径下的接口参数写入Swagger文档,得到接口文档。
在一些实施例中,所述方法还包括:执行初始化操作,得到初始化参数,所述初始化参数至少包括用于确定所述候选接口类中需要扫描的所述目标接口类的第一参数;基于所述第一参数从候选接口类中确定需要解析的目标接口类。
在一些实施例中,所述初始化参数还包括以下至少一者:第二参数,用于对接口的运行状态进行设置;第三参数,用于对所述接口文档的信息进行设置。
在一些实施例中,所述从目标接口类中解析出目标接口方法和目标接口路径,包括:从目标接口类中解析出候选接口方法;从所述候选接口方法中删除指定接口方法,得到所述目标接口方法,所述指定接口方法包括以下至少一种:包括exclude的接口方法、抽象的接口方法、静态的接口方法、私有的接口方法、指定类型以外的接口方法。
在一些实施例中,所述从目标接口类中解析出目标接口方法和目标接口路径,包括:基于解析出的目标接口方法的类型查找所述目标接口类对应的注解;基于所述目标接口类对应的注解确定所述目标接口路径。
在一些实施例中,所述生成包括所述接口参数的类对象,包括:循环扫描各个目标接口方法,得到每个目标接口方法中的各个接口参数;将每个接口参数赋值给一个属性参数;基于赋值后的各个属性参数生成所述类对象。
在一些实施例中,所述方法还包括:建立所述类对象与所述目标接口路径之间的映射关系;所述将所述类对象中的接口参数设置到所述目标接口路径下,包括:基于所述映射关系将所述类对象中的接口参数设置到所述目标接口路径下。
在一些实施例中,所述映射关系为键值对;所述建立所述类对象与所述目标接口路径之间的映射关系,包括:将所述目标接口路径设置为所述键值对的键,并将所述类对象设置为所述键值对的值。
在一些实施例中,所述将所述类对象中的接口参数设置到所述目标接口路径下,包括:初始化Swagger的operation对象;基于所述类对象对所述operation对象进行设置;将设置后的所述operation对象设置到所述目标接口路径下。
在本发明实施方式的第二方面中,提供了一种介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任一实施例所述的方法。
在本发明实施方式的第三方面中,提供了一种接口文档生成装置,所述装置包括:第一解析模块,用于从目标接口类中解析出目标接口方法和目标接口路径;第二解析模块,用于从所述目标接口方法中解析出接口参数,生成包括所述接口参数的类对象;设置模块,用于将所述类对象中的接口参数设置到所述目标接口路径下,并将所述目标接口路径下的接口参数写入Swagger文档,得到接口文档。
在本发明实施方式的第四方面中,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明任一实施例所述的方法。
根据本发明实施方式的接口文档生成方法和装置、介质和计算机设备,能够从目标接口类中解析出目标接口方法和目标接口路径,并从目标接口方法中解析接口参数,从而生成包括接口参数的类对象,然后再将类对象中的接口参数设置到目标接口路径下,并将目标接口路径下的接口参数写入Swagger文档,得到接口文档。这样,可以直接通过解析目标接口类和目标接口方法来自动地获取生成接口文档所需的各种接口参数,而无需开发人员填写对应接口文案,降低了生成接口文档时的操作复杂度,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的Swagger注解的示意图;
图2示意性地示出了根据本发明实施方式的接口文档生成方法的流程图;
图3示意性地示出了根据本发明实施方式的初始化过程的示意图;
图4示意性地示出了根据本发明实施方式的生成ControllerResource对象的总体流程的示意图;
图5示意性地示出了根据本发明实施方式的生成methodResourceMap的总体流程的示意图;
图6示意性地示出了根据本发明实施方式的基于类对象methodResource生成接口文档的总体流程的示意图;
图7示意性地示出了根据本发明实施方式的介质的示意图;
图8示意性地示出了根据本发明实施方式的接口文档生成装置的框图;
图9示意性地示出了根据本发明实施方式的计算设备的结构示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种音频播放器的控制方法、介质、装置和计算设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
Swagger能够定义接口标准和接口规范,并能够根据代码自动生成接口说明文档。Swagger UI项目提供了一个可视化的用户界面(User Interface,UI)展示接口文档,接口的调用方、测试方等都可以在该用户界面中对相关接口进行查阅以及执行一些简单的接口请求。Swagger UI项目支持在线导入接口文档和本地部署UI项目。Swagger定义了Api、ApiOperation、ApiImplicitParams、ApiResponses等注解。开发人员通过在接口上使用相应注解,并在注解中填写对应接口文案,完成接口的维护,在项目启动时,Swagger会读取注解,并生成JSON格式的接口文档swagger.json。部署在本地或者远程端的Swagger UI项目可以读取该JSON格式的接口文档,并在用户界面上进行展示,方便相关人员进行查看。
本发明人发现,Swagger仍然需要开发人员在维护接口文档时使用与业务逻辑无关的Swagger注解来进行接口定义,这增加了开发人员的工作量和学习成本,提高了接口文档生成的复杂度。甚至一些复杂的接口还不如直接书写来得方便直观。例如,在图1所示的例子中,autoComplete2是业务逻辑代码,而ApiResponse、ApiOperation、ApiImplicitParam则是开发人员为了维护接口文档而编写的代码(即Swagger注解)。可以看出,维护接口文档增加了开发人员一定的工作量。
为此,本发明能够从目标接口类中解析出目标接口方法和目标接口路径,并从目标接口方法中解析接口参数,从而生成包括接口参数的类对象,然后再将类对象中的接口参数设置到目标接口路径下,并将目标接口路径下的接口参数写入Swagger文档,得到接口文档。这样,可以直接通过解析目标接口类和目标接口方法来自动地获取生成接口文档所需的各种接口参数,而无需开发人员填写对应接口文案,降低了生成接口文档时的操作复杂度,为用户带来了更好的体验。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
示例性方法
参见图2,本发明实施例的接口文档生成方法可包括以下步骤:
步骤S201:从目标接口类中解析出目标接口方法和目标接口路径;
步骤S202:从所述目标接口方法中解析出接口参数,生成包括所述接口参数的类对象;
步骤S203:将所述类对象中的接口参数设置到所述目标接口路径下,并将所述目标接口路径下的接口参数写入Swagger文档,得到接口文档。
本发明实施例可以在Swagger中添加一个插件,称为SwaggerPlugin,本发明实施例的方法可以由SwaggerPlugin执行。SwaggerPlugin在项目编译时,可解析服务端接口涉及的方法名、类名、字段名及其注解等信息,并可解析服务端常用框架Spring的接口相关注解,包括但不限于RequestMapping、RequestBody、RequestParam,同时也兼容已经使用Swagger注解的接口。解析后可以生成JSON格式的接口文档swagger.json。开发人员不再需要书写Swagger注解,减少了开发人员的重复书写工作,降低了生成接口文档的复杂度。
在本发明实施例中,接口方法用于为接口调用方提供实现接口的方式,接口类是指接口方法的集合。例如,@Controller可以用于标记一个接口类。在根文件RootDoc下可以包括多个接口类,记为classDoc。本发明实施例中的目标接口类可以包括全部或部分的接口类。接口方法可以记为methodDoc,一个接口类中可以包括一个或多个接口方法。本发明实施例中的目标接口方法可以包括全部或部分的接口方法。
在一些实施例中,在执行步骤S201之前,可以先执行初始化操作。通过初始化操作,可以得到初始化参数。其中,初始化参数至少包括用于确定候选接口类中需要扫描的接口类(即目标接口类)的第一参数。通过获取第一参数,在步骤S201中可以基于第一参数从候选接口类中确定需要解析的目标接口类。在默认情况下,可以解析根文档rootDoc下的所有接口类,而第一参数中可以包括用于描述不需要解析的接口类的ignoredTypes参数。这样,在解析接口类时,可以对根文档rootDoc下除ignoredTypes参数所指代的接口类以外的其他所有接口类进行解析。
除了第一参数以外,初始化参数还可以包括用于对接口的运行状态进行设置的第二参数,和/或用于对接口文档的信息进行设置的第三参数。其中,接口的运行状态包括接口相关的debug日志的开启状态和/或接口的注释的开启状态。因此,第二参数可以包括用于确定接口运行时是否需要打印debug日志的logDebug参数,和/或用于确定是否需要打开注释的参数。接口文档的信息包括接口文档的属性信息(info)、存储位置、接口文档所针对的项目的版本号,和/或接口文档的标题。因此,第三参数可以包括用于描述接口文档的属性信息的description参数、用于描述接口文档的存储位置的DocBasePath参数、用于描述接口文档所针对的项目的版本号的ProjectVersion参数,和/或用于描述接口文档的标题的title参数。
参见图3,是本发明实施例的初始化过程的示意图。在应用编译时,可以执行Javadoc的入口类ServiceDoclet的入口方法,入口方法可以进行SwaggerPlugin参数解析,得到初始化参数。解析完成后,可以将解析结果存入DocletOptions字段中。
在步骤S201中,目标接口类可以包括根文档rootDoc下的一个或多个接口类。可以通过循环读取根文档rootDoc下的各个候选接口类classDoc,并从所述各个候选接口类classDoc中确定目标接口类。具体来说,可以循环读取根文档rootDoc下的各个候选接口类classDoc的类名称和注解,基于读取到的候选接口类classDoc的类名称和注解确定该候选接口类是否为目标接口类。例如,初始化参数中的ignoredTypes参数中可以包括不需要进行解析的接口类的名称,如果一个候选接口类classDoc的类名称命中ignoredTypes参数中的接口类的名称,则该候选接口类不是目标接口类,否则该候选接口类是目标接口类。又例如,初始化参数中的ignoredTypes参数中可以包括不需要进行解析的接口类的注解(例如,@exclude注解)。如果一个候选接口类的注解包括@exclude注解,则该候选接口类不是目标接口类,否则该候选接口类是目标接口类。在同时存在多个判断条件时,只要基于一个判断条件判断出一个候选接口类不是目标接口类,则可以确定该候选接口类并非目标接口类。只有当各个判断条件的判断结果均指示该候选接口类是目标接口类时,才确定该候选接口类是目标接口类。
在确定目标接口类之后,可以循环读取目标接口类中的各个候选接口方法methodDoc,通过对所述多个候选接口方法methodDoc进行过滤,可以得到目标接口方法。具体来说,可以循环读取每个目标接口类中的各个候选接口方法methodDoc的接口方法名称、方法类型、注解、方法入参名称及类型、方法结果名称和类型等接口方法参数。然后,可以根据候选接口方法的至少一种接口方法参数确定该候选接口方法是否为目标接口方法。例如,如果一个候选接口方法的注解为RequestMapping、PostMapping、PutMapping、GetMapping、DeleteMapping、PatchMapping等mapping名称,则该候选接口方法为目标接口方法,如果一个候选接口方法的名称为除上述mapping名称以外的名称,则该候选接口方法不是目标接口方法。又例如,如果一个候选接口方法的注解包括@exclude注解,则该候选接口方法不是目标接口方法,否则该候选接口方法是目标接口方法。又例如,如果一个候选接口方法的方法类型为抽象、静态(static)或私有类型,则该候选接口方法不是目标接口方法,否则该候选接口方法是目标接口方法。在同时存在多个判断条件时,只要基于一个判断条件判断出一个候选接口方法不是目标接口方法,则可以确定该候选接口方法并非目标接口方法。只有当各个判断条件的判断结果均指示该候选接口方法是目标接口方法时,才确定该候选接口方法是目标接口方法。对于目标接口方法以外的其他接口方法,可以进行过滤。
在确定目标接口类之后,还可以从目标接口类中解析出目标接口路径。具体来说,可以基于解析出的目标接口方法的类型查找所述目标接口类对应的注解annotationDesc;基于所述目标接口类对应的注解确定所述目标接口路径。例如,目标接口路径可以是由注解annotationDesc的参数值value或param参数定义的接口路径。
在获取目标接口方法和目标接口路径之后,还可以将目标接口方法和目标接口路径封装成一个对象,称为ControllerResource对象。生成ControllerResource对象的总体流程如图4所示。首先,可以运行解析SwaggerBuilder.build,并开始解析接口。然后,可以将解析方法SwaggerBuilder.build传入rootDoc对象,从而通过该解析方法循环扫描rootDoc根目录下的所有接口类ClassDoc。如果初始化参数中包括第一参数,还可以基于第一参数确定目标接口类,即,忽略第一参数中所指示的接口类。例如,@exclude注解的接口对应的接口类,仅针对Controller注解和RestController注解的类进行解析。然后,解析目标接口方法和目标接口路径。具体来说,可以从目标接口类中解析出RequestMapping、PostMapping、PutMapping、GetMapping、DeleteMapping、PatchMapping等mapping的目标接口方法,并根据mapping类型查找ClassDoc对象对应的annotationDesc,并获取annotationDesc的value或param参数定义的接口路径。进一步地,可以从上述解析出的接口方法中过滤掉ClassDoc中为抽象、static、私有的接口方法、含有exclude的接口方法以及非request、post、put、get、delete、patch等mapping的方法。然后,将过滤得到的目标接口方法和目标接口路径封装为ControllerResource对象。进一步地,还可以将目标接口类与目标接口方法和目标接口路径一同封装为ControllerResource对象。目标接口类中可以包括一些静态字段,在一些情况下,目标接口方法的返回类型是该目标接口方法所在的目标接口类,因此,需要对该目标接口方法所在的目标接口类中的静态字段进行解析,并将解析出的静态字段添加到接口文档中。
进一步地,还可以基于初始化时获取的第三参数来设置接口文档。例如,可以设置接口文档的存储位置。还可以基于初始化时获取的第二参数设置接口的运行状态。例如,在第二参数中包括logDebug参数的情况下,若logDebug参数的值为true,则可以打印debug日志。
应当说明的是,虽然图4中通过箭头连接了各个步骤,但并不表示本发明实施例中的各个步骤必须按照箭头所示的顺序执行。在实际应用中,图中所示的各个步骤的执行顺序可以根据实际需要调整。例如,设置接口文档和打印debug日志的步骤可以与循环rootDoc的ClassDoc的步骤并行执行,也可以在循环rootDoc的ClassDoc的步骤之后执行。
在步骤S202中,可以从目标接口方法中解析出接口参数,包括但不限于接口类参数和接口方法参数,其中,接口类参数包括接口类的名称和/或接口类的注解,接口方法参数包括接口方法的名称、接口方法的注解、接口方法的入参值、接口方法的入参类型、接口方法的结果值、接口方法的结果名称和/或接口方法的结果类型。然后,可以生成包括所述接口参数的类对象。具体来说,可以循环扫描各个目标接口方法,得到每个目标接口方法中的各个接口参数;将每个接口参数赋值给一个属性参数,基于赋值后的各个属性参数生成所述类对象methodResource。
例如,参见图5,假设类对象记为methodResource,该类对象可以是一个自定义的类,其中的属性参数可以包括类属性(对应于目标接口类的名称)、方法属性(对应于目标接口方法的方法名称和方法类型)、参数属性(对应于目标接口方法的入参名称和入参类型)、注解属性(对应于目标接口类的注解和目标接口方法的注解)和/或结果值属性(对应于目标接口方法的结果名称和结果类型)中的部分或全部。在生成methodResource时,可以根据上述对应关系一一设置methodResource中的各个属性参数,例如,将methodResource的类属性设置为ControllerResource的目标接口类,将methodResource的方法属性returnType设置为目标接口方法的方法类型returnType,将methodResource的方法属性name设置为目标接口方法的方法名称name,将methodResource的参数属性parameters设置为目标接口方法的入参名称parameters。
此外,还可以循环解析所有的目标接口方法中的注解annotationDesc,基于对注解annotationDesc的解析结果进一步设置methodResource的注解参数。例如,可以解析ApiOperation注解作为methodResource的httpMethod属性值,解析ApiImplicitParam注解作为methodResource的ApiImplicitParamMap注解,解析ApiResponses注解作为methodResource的ApiResponsesMap注解。
此外,还可以循环处理目标接口方法的paramTags作为methodResource的javadocParamMap属性(即结果值属性),并解析得到目标接口方法的注解包含的目标接口路径。
在一些实施例中,还可以建立类对象methodResource与目标接口路径之间的映射关系。例如,所述映射关系可以是键值对(记为methodResourceMap对象),在建立映射关系时,可以将所述目标接口路径设置为所述键值对的键(key),并将所述类对象methodResource设置为所述键值对的值(value),并将key和value设置到methodResourceMap对象中。
应当说明的是,虽然图5中通过箭头连接了各个步骤,但并不表示本发明实施例中的各个步骤必须按照箭头所示的顺序执行。在实际应用中,图中所示的各个步骤的执行顺序可以根据实际需要调整。例如,设置methodResource的类属性、方法属性、参数属性、注解属性、结果值属性的步骤可以以任意的顺序执行。
在步骤S203中,可以将所述类对象中的接口参数设置到所述目标接口路径下。具体来说,参见图6,可以初始化Swagger的operation对象;基于步骤S202中生成的类对象对operation对象进行设置;将设置后的operation对象设置到目标接口路径下。
其中,operation对象包括多个属性,例如,标签(tag)属性、parameter属性、ResponsesMap属性。进一步地,ResponsesMap属性可以包括状态属性和返回值属性,parameter属性可以包括parameter的参数属性和文件类型属性。
对operation对象进行设置,即设置operation对象的各个属性的属性值。具体来说,可以先读取operation对象中各个属性的属性名,每读取到一个属性的属性名,从类对象中查找对应于该属性名的属性参数,并将查找到的属性参数赋值给该字段名对应的字段值。例如,可以将controller对象的name属性设置为operation对象的标签属性。又例如,可以将MethodResource的returnType作为默认响应类型加入responseMap,还可以将MethodResource的@status注解值加入到responseMap,还可以解析MethodResource的ApiResponsesMap并加入到responseMap,然后,可以将responseMap设置到operation的Responses属性中。
又例如,可以为operation对象初始化一个类型为swagger的parameter列表,解析parameter的name、required、description作为swagger的parameter参数,解析不同类型的参数作为parameter对象参数,将parameter列表作为operation的parameter字段。还可以解析operation的parameter字段的文件类型属性,若所述文件类型属性为文件类型,则设置operation的consume支持文件类型。
在此之后,可以设置接口路径。具体来说,可以根据MethodResourceMap的key查找swagger.getPath方法,得到对应的path。然后,可以将operation和methodResource的httpMethod设置到path字段中。
然后,可以设置swagger,即基于设置好的path字段在docbasePath目录下生成名为swagger的文件。在设置swagger之后,可以将swagger写入接口文档。具体来说,可以用swagger对象作为参数调用jackson的ObjectWriter类的writeValuesAsString方法来将swagger内容写入到JSON格式的接口文档中。
示例性介质
在介绍了本发明示例性实施方式的方法之后,接下来,参考图7对本发明示例性实施方式的介质的实施例进行说明。
本示例性实施方式中,可以通过程序产品实现上述方法,如可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,该存储器可以在设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读介质70可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
该程序产品可以采用一个或多个可读介质的任意组合。可读介质70可以是可读信号介质或者可读介质。可读介质70例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质70上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RE等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本发明示例性实施方式的介质之后,接下来,参考图8对本发明示例性实施方式的接口文档生成装置的实施例进行说明。所述装置包括:
第一解析模块801,用于从目标接口类中解析出目标接口方法和目标接口路径;
第二解析模块802,用于从所述目标接口方法中解析出接口参数,生成包括所述接口参数的类对象;
设置模块803,用于将所述类对象中的接口参数设置到所述目标接口路径下,并将所述目标接口路径下的接口参数写入Swagger文档,得到接口文档。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图9对本发明示例性实施方式的计算设备的实施例进行说明。
图9显示的计算设备900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算设备900以通用计算设备的形式表现。计算设备900的组件可以包括但不限于:上述至少一个处理单元901、上述至少一个存储单元902,连接不同系统组件(包括处理单元901和存储单元902)的总线903。
总线903包括数据总线、控制总线和地址总线。
存储单元902可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)9021和/或高速缓存存储器9022,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(ROM)9023。
存储单元902还可以包括具有一组(至少一个)程序模块9024的程序/实用工具9025,这样的程序模块9024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备900也可以与一个或多个外部设备904(例如键盘、指向设备等)通信。
这种通信可以通过输入/输出(I/O)接口905进行。并且,计算设备900还可以通过网络适配器906与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图9所示,网络适配器906通过总线903与计算设备900的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了音频播放器的控制装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种接口文档生成方法,所述方法包括:
从目标接口类中解析出目标接口方法和目标接口路径;
从所述目标接口方法中解析出接口参数,生成包括所述接口参数的类对象;
将所述类对象中的接口参数设置到所述目标接口路径下,并将所述目标接口路径下的接口参数写入Swagger文档,得到接口文档。
2.根据权利要求1所述的方法,所述方法还包括:
执行初始化操作,得到初始化参数,所述初始化参数至少包括用于确定候选接口类中需要扫描的所述目标接口类的第一参数;
基于所述第一参数从候选接口类中确定需要解析的目标接口类。
3.根据权利要求2所述的方法,所述初始化参数还包括以下至少一者:
第二参数,用于对接口的运行状态进行设置;
第三参数,用于对所述接口文档的信息进行设置。
4.根据权利要求1所述的方法,所述从目标接口类中解析出目标接口方法和目标接口路径,包括:
从目标接口类中解析出候选接口方法;
从所述候选接口方法中删除指定接口方法,得到所述目标接口方法,所述指定接口方法包括以下至少一种:
包括exclude的接口方法、抽象的接口方法、静态的接口方法、私有的接口方法、指定类型以外的接口方法。
5.根据权利要求1所述的方法,所述从目标接口类中解析出目标接口方法和目标接口路径,包括:
基于解析出的目标接口方法的类型查找所述目标接口类对应的注解;
基于所述目标接口类对应的注解确定所述目标接口路径。
6.根据权利要求1所述的方法,所述生成包括所述接口参数的类对象,包括:
循环扫描各个目标接口方法,得到每个目标接口方法中的各个接口参数;
将每个接口参数赋值给一个属性参数;
基于赋值后的各个属性参数生成所述类对象。
7.根据权利要求1所述的方法,所述方法还包括:
建立所述类对象与所述目标接口路径之间的映射关系;
所述将所述类对象中的接口参数设置到所述目标接口路径下,包括:
基于所述映射关系将所述类对象中的接口参数设置到所述目标接口路径下。
8.根据权利要求7所述的方法,所述映射关系为键值对;所述建立所述类对象与所述目标接口路径之间的映射关系,包括:
将所述目标接口路径设置为所述键值对的键,并将所述类对象设置为所述键值对的值。
9.根据权利要求1所述的方法,所述将所述类对象中的接口参数设置到所述目标接口路径下,包括:
初始化Swagger的operation对象;
基于所述类对象对所述operation对象进行设置;
将设置后的所述operation对象设置到所述目标接口路径下。
10.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1至9任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211611049.1A CN115904483A (zh) | 2022-12-12 | 2022-12-12 | 接口文档生成方法和装置、介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211611049.1A CN115904483A (zh) | 2022-12-12 | 2022-12-12 | 接口文档生成方法和装置、介质和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904483A true CN115904483A (zh) | 2023-04-04 |
Family
ID=86474487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211611049.1A Pending CN115904483A (zh) | 2022-12-12 | 2022-12-12 | 接口文档生成方法和装置、介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904483A (zh) |
-
2022
- 2022-12-12 CN CN202211611049.1A patent/CN115904483A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11675575B2 (en) | Checking source code validity at time of code update | |
WO2019029160A1 (zh) | 应用程序构建方法、系统、计算机设备和存储介质 | |
US20110258600A1 (en) | Using a dsl for calling apis to test software | |
US11593342B2 (en) | Systems and methods for database orientation transformation | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
CN112035443B (zh) | 基于Linux平台的大数据执行方法、系统、设备及存储介质 | |
US11741002B2 (en) | Test automation systems and methods using logical identifiers | |
US20210117313A1 (en) | Language agnostic automation scripting tool | |
CN114153459A (zh) | 接口文档生成方法及装置 | |
CN116028028A (zh) | 请求函数生成方法、装置、设备及存储介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
US11288170B1 (en) | Log analysis debugging without running on real production environment | |
CN113836014A (zh) | 一种接口测试方法、装置、电子设备和存储介质 | |
CN114048415A (zh) | 表单生成方法及装置、电子设备和计算机可读存储介质 | |
CN113918864A (zh) | 网站页面的测试方法、测试系统、装置、电子设备及介质 | |
CN113778897A (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN113377342B (zh) | 一种项目构建方法、装置、电子设备及存储介质 | |
CN113238739A (zh) | 一种插件开发和数据获取方法、装置、电子设备及介质 | |
US11182272B2 (en) | Application state monitoring | |
CN109408057B (zh) | 自动生成代码的方法、装置、介质和计算设备 | |
CN111258802A (zh) | 捕获应用程序崩溃信息的方法及相关设备 | |
US11947966B2 (en) | Identifying computer instructions enclosed by macros and conflicting macros at build time | |
CN115904483A (zh) | 接口文档生成方法和装置、介质和计算机设备 | |
CN114253537A (zh) | 表单生成方法及装置、电子设备和存储介质 | |
CN113885841A (zh) | 脚本生成的方法、装置、电子设备和可读介质 |
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 |