CN116594679A - 接口文档的生成方法及装置、电子设备 - Google Patents
接口文档的生成方法及装置、电子设备 Download PDFInfo
- Publication number
- CN116594679A CN116594679A CN202310476543.XA CN202310476543A CN116594679A CN 116594679 A CN116594679 A CN 116594679A CN 202310476543 A CN202310476543 A CN 202310476543A CN 116594679 A CN116594679 A CN 116594679A
- Authority
- CN
- China
- Prior art keywords
- path
- parameters
- target
- parameter
- public
- 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
- 238000000034 method Methods 0.000 title claims abstract description 450
- 230000007246 mechanism Effects 0.000 claims abstract description 23
- 238000012546 transfer Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/169—Annotation, e.g. comment data or footnotes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种接口文档的生成方法及装置、电子设备。该方法包括:基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,公开方法的信息至少包括方法名、方法参数和返回值;针对每个公开方法,基于公开方法的方法名和公开方法所属类对应的类名,生成公开方法的路径;针对每一公开方法的路径,基于公开方法中每一方法参数和返回值的类型,对路径分别添加匹配的路径参数;基于各类中每一个公开方法的路径以及路径参数,生成目标数据包的接口文档。由于直接利用了java的反射机制,因此无需依赖于Swagger和HTTP服务,降低了对接口文档自动生成的限制,可以在更多的应用场景中实现接口文档的自动生成。
Description
技术领域
本发明涉及接口技术领域,尤其涉及一种接口文档的生成方法及装置、电子设备。
背景技术
接口文档就是接口的说明文档,它是我们调用接口的依据。开发人员参照接口文档就能方便的知道接口的作用以及接口如何进行调用。项目开发过程中,前后端工程师将接口文档作为统一的文件进行沟通交流,提升开发效率。在后期维护中,接口文档可以方便后期人员查看以及对项目进行维护。
目前,通常采用自动生成的方式生成项目的接口文档。具体的,依赖于Swagger或者HTTP(超文本传输协议,Hyper Text Transfer Protocol)服务,基于项目中的注解生成接口文档。
然而,上述方式具有较强的依赖性,在没有Swagger和HTTP服务的场景下,无法自动生成接口文档。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的接口文档的生成方法及装置、电子设备。
第一方面,本发明实施例提供了一种接口文档的生成方法,所述方法包括:
基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,所述公开方法的信息至少包括方法名、方法参数和返回值;
针对每一个所述公开方法,基于所述公开方法的方法名和所述公开方法所属类对应的类名,生成所述公开方法的路径;
针对每一所述公开方法的路径,基于所述公开方法中每一方法参数的类型和返回值的类型,对所述路径分别添加匹配的路径参数,以对所述路径添加目标数量的路径参数,所述目标数量等于所述公开方法中方法参数的数量加上返回值的数量之和;
基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档。
可选地,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标属性的属性名;
其中,所述目标属性包括:所述目标参数中设置有getter方法或setter方法的属性。
可选地,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标注解中的参数名;
其中,所述目标注解包括:针对所述目标参数中设置有getter方法或setter方法的属性的注解。
可选地,在所述基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档之前,所述方法还包括:
基于预设调用方式,对所述公开方法的路径添加表征调用方式的路径参数。
可选地,在所述基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档之后,所述方法还包括:
在接收到超文本传输协议请求的情况下,基于所述超文本传输协议请求的请求参数和所述接口文档,生成目标公开方法的参数列表;其中,所述目标公开方法包括:所述目标数据包中类的实例化对象中的方法;
基于所述参数列表执行所述目标公开方法,得到所述目标公开方法的执行结果。
可选地,所述基于所述超文本传输协议请求的请求参数和所述接口文档,生成目标公开方法的参数列表,包括:
确定所述接口文档中对应所述超文本传输协议请求的目标公开方法;
基于所述请求参数与所述目标公开方法中方法参数的对应关系,将所述请求参数转换为所述目标公开方法的方法参数;
基于所述目标公开方法的方法参数生成所述参数列表。
第二方面,本发明实施例还提供一种接口文档的生成装置,所述装置包括:
反射模块,用于基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,所述公开方法的信息至少包括方法名、方法参数和返回值;
路径模块,用于针对每一个所述公开方法,基于所述公开方法的方法名和所述公开方法所属类对应的类名,生成所述公开方法的路径;
路径参数模块,用于针对每一所述公开方法的路径,基于所述公开方法中每一方法参数的类型和返回值的类型,对所述路径分别添加匹配的路径参数,以对所述路径添加目标数量的路径参数,所述目标数量等于所述公开方法中方法参数的数量加上返回值的数量之和;
文档模块,用于基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档。
可选地,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标属性的属性名;
其中,所述目标属性包括:所述目标参数中设置有getter方法或setter方法的属性。
可选地,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标注解中的参数名;
其中,所述目标注解包括:针对所述目标参数中设置有getter方法或setter方法的属性的注解。
可选地,所述装置还包括:
调用方式模块,基于预设调用方式,对所述公开方法的路径添加表征调用方式的路径参数。
可选地,所述装置还包括:
第一调试模块,用于在接收到超文本传输协议请求的情况下,基于所述超文本传输协议请求的请求参数和所述接口文档,生成目标公开方法的参数列表;其中,所述目标公开方法包括:所述目标数据包中类的实例化对象中的方法;
第二调试模块,用于基于所述参数列表执行所述目标公开方法,得到所述目标公开方法的执行结果。
可选地,所述第一调试模式具体用于:
确定所述接口文档中对应所述超文本传输协议请求的目标公开方法;
基于所述请求参数与所述目标公开方法中方法参数的对应关系,将所述请求参数转换为所述目标公开方法的方法参数;
基于所述目标公开方法的方法参数生成所述参数列表。
第三方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的接口文档的生成方法中的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的接口文档的生成方法中的步骤。
在本发明实施例中,利用java反射机制可以得到目标数据包中各公开方法的信息,进而利用各公开方法的信息生成公开方法的路径和路径参数,最终基于公开方法的路径和路径参数生成目标数据包的接口文档,用以记录目标数据包中各公开方法在接口文档规范下的各项信息。由于直接利用了java的反射机制,因此无需依赖于Swagger和HTTP服务,降低了对接口文档自动生成的限制,可以在更多的应用场景中实现接口文档的自动生成。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种接口文档的生成方法的步骤流程图;
图2为本发明实施例提供的一种接口文档的生成方法的实际应用流程图;
图3为本发明实施例中利用接口文档进行调用和调试的实际应用流程图;
图4为本发明实施例提供的一种接口文档的生成装置的结构框图;
图5为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参见图1,本发明实施例提供了一种接口文档的生成方法。该方法可以包括:
步骤101:基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,公开方法的信息至少包括方法名、方法参数和返回值。
本步骤中,java的反射(Reflection)被视为动态语言的关键,反射机制允许程序在执行期取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。这里,关于java的反射机制不再赘述。本发明利用了java的反射机制可以访问项目中的任意数据包,获取到项目数据包中任何类的内部信息。目标数据包可以为项目中的任一数据包。较佳地,可以基于用户输入的信息,选择对应的数据包作为目标数据包。这样,用户可以指定数据包,生成相应的接口文档。
应当说明的是,通过反射机制可以查询到数据包中的每一个类,并取得类中的内部信息。类中的内部信息可以包括公开方法、属性等信息。其中,公开方法即为public方法,其至少包含有方法名、方法参数和返回值等信息。返回值可以表征该公开方法是否具有返回值,若具有返回值其返回值属于哪种类型。也就是说,基于java的反射机制,可以确定目标数据包中包含有哪几个类,可以确定每一个类中包含有哪几个公开方法和属性,还可以确定每一个公开方法的方法名、方法参数和返回值等具体内容。
需要说明的是,每一个公开方法可以包括至少一个方法参数(入参)、一个返回值和一套执行逻辑,执行这个方法就是将入参带入执行逻辑去执行,得到的执行结果即为返回值。
步骤102:针对每一个公开方法,基于公开方法的方法名和公开方法所属类对应的类名,生成公开方法的路径。
本步骤中,针对每一公开方法可生成一对应的路径。其中,不同的公开方法对应不同的路径,基于该路径可区分不同公开方法,还可以在目标数据包的所有公开方法中查询到相应的公开方法。本实施例基于方法名+类名的组合方式生成公开方法的路径。例如目标数据包中的类M对应的类名为M,类M的公开方法包括:方法名为A的公开方法A、方法名为B的公开方法B、方法名为C的公开方法C、公方法名为D的公开方法D。在生成路径时,针对公开方法A生成的路径包括M-A,针对公开方法B生成的路径包括M-B,针对公开方法C生成的路径包括M-C,针对公开方法D生成的路径包括M-D。这样,在已知某一路径为M-C的情况下,可以确定唯一的公开方法,即类M中的公开方法C。
步骤103:针对每一公开方法的路径,基于公开方法中每一方法参数的类型和返回值的类型,对路径分别添加匹配的路径参数,以对路径添加目标数量的路径参数,目标数量等于公开方法中方法参数的数量加上返回值的数量之和。
本步骤中,针对每一公开方法的路径,可以对其添加目标数量的路径参数。其中,目标数量等于公开方法中方法参数的数量加上返回值的数量之和。具体的,遍历公开方法中的每一个方法参数,对应被遍历到的每一方法参数,对公开方法的路径添加一个路径参数。之后对应公开方法中的返回值,对公开方法的路径添加一个路径参数。例如,公开方法A包括方法参数a、方法参数b、方法参数c和返回值d,则对应方法参数a,对公开方法A的路径添加第一路径参数;对应方法参数b,对公开方法A的路径添加第二路径参数;对应方法参数c,对公开方法A的路径添加第三路径参数;对应返回值d,对公开方法A的路径添加第四路径参数;以实现基于方法参数和返回值添加四个路径参数。
进一步的,路径参数需指示其对应方法参数或返回值的类型。因此,在对应方法参数或返回值添加路径参数时,将添加相同类型的数据作为路径参数。例如,某一方法参数的类型为字符串类型,则对应该方法参数添加的路径参数的类型同样为字符串类型。
步骤104:基于各类中每一个公开方法的路径以及对公开方法的路径添加的路径参数,生成目标数据包的接口文档。
应当说明的是,接口文档将记录目标数据包中每一个公开方法的路径以及对应该路径添加的路径参数。从而通过接口文档就可以了解到目标数据包中各公开方法的相关信息。例如基于接口文档可以清楚的了解到目标数据包中具有哪些公开方法,各公开方法中的参数和返回值都是哪种类型。
可以理解的是,接口文档中各不同公开方法的路径和路径参数对应设置,从而在确定某一公开方法之后,可以查找到唯一的路径和该路径的路径参数。当然,在目标数据包中具有多个类的情况下,各不同类下的数据信息同样对应设置,从而在确定某一类之后,可以查找到该类下所有公开方法的路径和路径参数。较佳地,生成的接口文档符合openAPI规范,其中,OpenAPI提供了一种通用的和编程语言无关的API(应用程序接口,ApplicationProgramming Interface)描述规范,这里不再详述。
在生成接口文档之后,可以将该接口文档传输至目标用户,以供目标用户查看。也可以将接口文档上传至数据库中,供用户主动调用查看,这里不做限制。
本发明实施例中,利用java反射机制可以得到目标数据包中各公开方法的信息,进而利用各公开方法的信息生成公开方法的路径和路径参数,最终基于公开方法的路径和路径参数生成目标数据包的接口文档,用以记录目标数据包中各公开方法在接口文档规范下的各项信息。由于直接利用了java的反射机制,因此无需依赖于Swagger和HTTP服务,降低了对接口文档自动生成的限制,可以在更多的应用场景中实现接口文档的自动生成。
可选地,在公开方法中的方法参数包括对象类型的目标参数的情况下,基于目标参数的对象类型对路径添加的路径参数包括:目标属性的属性名;
其中,目标属性包括:目标参数中设置有getter方法或setter方法的属性。
应当说明的是,java的公开方法中方法参数涉及的类型通常包括简单类型和复杂的对象类型。其中,简单类型包括浮点型、整型、字符型、字符串型。还可以是java.util.Collection类型或者java.util.Map类型。由于这些类型较为简单,处理起来也较为方便。从而针对简单类型的方法参数或者返回值,可以直接生成相同类型的路径参数。
对于对象类型的方法参数或者返回值,由于对象类型的复杂性,导致该类型下的方法参数较为复杂,其包含有更多的信息,例如对象类型的方法参数或者返回值可能包含有其它方法、属性等。鉴于此,在基于目标参数对路径添加路径参数时,可以采用与简单类型不同的处理方式。值得注意的是,声明为私有访问类型的变量只能通过类中公共的getter/setter方法被外部类访问。因此,可以将目标参数的所有设置了getter/setter方法的属性作为对应路径的路径参数,路径参数的参数名便是属性名。还可以为针对目标参数添加的所有路径参数添加统一的前缀,来避免参数名的重复。
本发明实施例中,针对对象类型的方法参数或返回值,可以将设置有getter方法或setter方法的属性的属性名作为路径参数添加至路径中。
可选地,在公开方法中的方法参数包括对象类型的目标参数的情况下,基于目标参数的对象类型对路径添加的路径参数包括:目标注解中的参数名;
其中,目标注解包括:针对目标参数中设置有getter方法或setter方法的属性的注解。
应当说明的是,关于对象类型以及目标参数,参见上述发明实施例,这里不再赘述。可以理解的是,在存在目标注解的情况下,目标注解应当是对目标参数中设置有getter方法或setter方法的属性的说明。此时,可以将注解中的参数名作为路径参数。通过注解中的参数名可以定位到目标参数以及目标参数中设置有getter方法或setter方法的属性。
本发明实施例中,针对对象类型的方法参数或返回值,可以将设置有getter方法或setter方法的属性的目标注解作为路径参数的依据,将目标注解中的参数名作为路径参数添加至路径中。
可选地,在基于各类中每一个公开方法的路径以及对公开方法的路径添加的路径参数,生成目标数据包的接口文档之前,该方法还包括:
基于预设调用方式,对公开方法的路径添加表征调用方式的路径参数。
应当说明的是,接口文档中可以包含接口的调用方式。这里可以预先定义默认的调用方式,将该默认的调用方式作为路径的一项路径参数。例如,可以将默认的调用方式设置为POST调用方式,则对应添加的参数可以为“POST”。可以理解的是,接口文档中还可以包括请求和响应的Content-Type(内容类型)。同理,可以预先定义默认的Content-Type,将该默认的Content-Type作为路径的一项路径参数。例如,可以将默认的Content-Type设置为application/json,则对应添加的参数可以为“application/json”。较佳地,如果目标数据包中添加了Swagger相关的注解,优先使用这些注解。
本发明实施例中,将接口的调用方式作为路径的一项路径参数,添加至接口文档中,可以丰富接口文档的数据内容。
可选地,在基于各类中每一个公开方法的路径以及对公开方法的路径添加的路径参数,生成目标数据包的接口文档之后,该方法还包括:
在接收到超文本传输协议请求的情况下,基于超文本传输协议请求的请求参数和接口文档,生成目标公开方法的参数列表;其中,目标公开方法包括:目标数据包中类的实例化对象中的方法;
基于参数列表执行目标公开方法,得到目标公开方法的执行结果。
应当说明的是,在生成接口文档之后,可以利用接口文档对目标数据包中各公开方法进行调用和调试。这里,可以利用HTTP请求发起对公开方法的调用和调试。可以理解的是,对不同公开方法的调用和调试的过程类似,这里仅以对一个公开方法进行调用和调试为例进行说明。用户可以针对被调用和调试的公开方法输入相应的参数,然后生成携带有这些参数的HTTP请求。在基于HTTP请求确定需要对哪一个公开方法进行调用和调试之后,将HTTP参数转换为实例化对象中方法的参数。从而可以利用转换后的参数直接执行实例化对象的方法。
具体的,在执行实例化对象的方法时,可以通过反射机制执行对应实例的方法,拿到返回值,并将返回值序列化成JSON(JS对象简谱,JavaScript Object Notation)格式进行返回。
本发明实施例中,利用接口文档对目标数据包中各公开方法进行调用和调试,使得公开方法的调试更加方便,提升了公开方法的调试效率。
可选地,基于超文本传输协议请求的请求参数和接口文档,生成目标公开方法的参数列表,包括:
确定接口文档中对应超文本传输协议请求的目标公开方法;
基于请求参数与目标公开方法中方法参数的对应关系,将请求参数转换为目标公开方法的方法参数;
基于目标公开方法的方法参数生成参数列表。
应当说明的是,http参数并不能直接作为实例化对象的方法中的参数进行使用。这里,将基于请求参数与目标公开方法中参数的对应关系,确定请求参数的转换方式。具体的,请求参数与目标公开方法中简单类型的参数相对应,则可以直接将请求参数转换为实例化对象中方法的参数。请求参数与目标公开方法中复杂对象类型的参数相对应,则需要先实例化一个对象,再为这个对象的所有设置了getter/setter方法的属性进行设置值。
本发明实施例中,基于请求参数对应的公开方法中参数的类型,对请求参数进行不同的处理,从而可以将所有类型的请求参数正确转换为目标公开方法的参数。
如图2所示,为本发明实施例提供的一种接口文档的生成方法的实际应用流程图,这里的接口文档为符合OpenAPI规范的接口文档,该流程包括:
步骤201:扫描类文件。这里针对需要生成接口文档的目标数据包的类文件,利用java的反射机制对其进行扫描。
步骤202:遍历类文件中所有的公开方法,每遍历到一个公开方法,基于公开方法的方法名和类文件中类对应的名称生成该公开方法的路径。相当于上述发明实施例中的步骤102,为避免重复这里不再赘述。
步骤203:针对遍历到的每一个公开方法,解析公开方法中的参数。若参数的类型为简单类型,则对路径添加简单类型的路径参数。若参数的类型为复杂的对象类型,则定义一对象,同时遍历该参数中的各属性,把这个参数的每一个设置了getter/setter方法的属性作为对应路径的一项路径参数,路径参数的参数名便是属性名。同时可以通过自定义注解来为属性定义参数名。当然也可以通过自定义注解来为基于复杂类型添加的路径参数添加统一的前缀,来避免参数名的重复,如果添加了Swagger相关的注解,优先使用这些注解。其中,复杂类型即为复杂的对象类型,可参见上述发明实施例,这里不做限定。
步骤204:针对遍历到的每一个公开方法,解析公开方法中的返回值。基于返回值的类型进行与公开方法中参数相同的处理,为避免重复这里不再赘述。
接口文档需要包含公开方法的路径以及路径参数,路径参数基于公开方法中方法参数和返回值的数据类型确定,在步骤204之后,即可生成接口文档。
本发明实施例,可以应用于利用RPC(远程过程调用,Remote Procedure Call)的微服务项目中,可以为这些微服务项目生成统一的OpenAPI文档。同时,不会入侵代码。
参见图3所示,为本发明实施例中利用接口文档进行调用和调试的实际应用流程图,包括:
步骤301:用户通过HTTP调用的方式,输入被调用方法的各项参数,即输入参数列表。
步骤302:查找真实的java方法,基于HTTP请求确定接口文档中相应的公开方法。通过HTTP请求对应的路径找到相应的公开方法。可以提前把每一个路径和对应的公开方法做好映射,存储在一个哈希映射中,通过这个哈希映射便可快速找到对应的方法。
步骤303:将HTTP参数转换为实例化对象中方法的参数。这里,针对HTTP参数所属的类型采用不同的转换方式进行转换。具体的,首先拿到HTTP参数和公开方法中方法参数的对应关系,然后做类型转换。如果是基本类型可以直接做类型转换,如果是复杂对象类型,需要先实例化一个对象,再为这个对象的所有设置了getter/setter方法的属性设置值。
步骤304:将转换后的参数重新组合成参数列表。
步骤305:找到类文件的实例化对象。这里,可以从Spring工厂中获取对应的实例化对象,或者通过统一自定义Bean工厂来管理项目的Bean实例对象。
步骤306:基于找到的实例化对象和重新组合的参数列表执行相应方法。
步骤307:JSON序列化方法返回结果。具体的,将拿到的返回值序列化成JSON格式进行返回。
本发明实施例中,可以利用接口文档对其中的公开方法快速的展开调用和调试,可以极大的提高开发效率和可维护性。
以上介绍了本发明实施例提供的接口文档的生成方法,下面将结合附图介绍本发明实施例提供的接口文档的生成装置。
参见图4所示,本发明实施例提供了一种接口文档的生成装置,该装置包括:
反射模块41,用于基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,所述公开方法的信息至少包括方法名、方法参数和返回值;
路径模块42,用于针对每一个公开方法,基于公开方法的方法名和公开方法所属类对应的类名,生成公开方法的路径;
路径参数模块43,用于针对每一公开方法的路径,基于公开方法中每一方法参数的类型和返回值的类型,对路径分别添加匹配的路径参数,以对所述路径添加目标数量的路径参数,所述目标数量等于所述公开方法中方法参数的数量加上返回值的数量之和;
文档模块44,用于基于各类中每一个公开方法的路径以及对公开方法的路径添加的路径参数,生成目标数据包的接口文档。
可选地,在公开方法中的方法参数包括对象类型的目标参数的情况下,基于目标参数的对象类型对路径添加的路径参数包括:目标属性的属性名;
其中,目标属性包括:目标参数中设置有getter方法或setter方法的属性。
可选地,在公开方法中的方法参数包括对象类型的目标参数的情况下,基于目标参数的对象类型对路径添加的路径参数包括:目标注解中的参数名;
其中,目标注解包括:针对目标参数中设置有getter方法或setter方法的属性的注解。
可选地,该装置还包括:
调用方式模块,用于基于预设调用方式,对公开方法的路径添加表征调用方式的路径参数。
可选地,该装置还包括:
第一调试模块,用于在接收到超文本传输协议请求的情况下,基于超文本传输协议请求的请求参数和接口文档,生成目标公开方法的参数列表;其中,目标公开方法包括:目标数据包中类的实例化对象中的方法;
第二调试模块,用于基于参数列表执行目标公开方法,得到目标公开方法的执行结果。
可选地,第一调试模块,具体用于:
确定接口文档中对应超文本传输协议请求的目标公开方法;
基于请求参数与目标公开方法中方法参数的对应关系,将请求参数转换为目标公开方法的方法参数;
基于目标公开方法的方法参数生成参数列表。
本发明实施例中,利用java反射机制可以得到目标数据包中各公开方法的信息,进而利用各公开方法的信息生成公开方法的路径和路径参数,最终基于公开方法的路径和路径参数生成目标数据包的接口文档,用以记录目标数据包中各公开方法在接口文档规范下的各项信息。由于直接利用了java的反射机制,因此无需依赖于Swagger和HTTP服务,降低了对接口文档自动生成的限制,可以在更多的应用场景中实现接口文档的自动生成。。
本申请实施例提供的接口文档的生成装置能够实现图1的方法实施例实现的各个过程,实现相同的技术效果,为避免重复,这里不再赘述。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述接口文档的生成方法中的步骤。
举个例子如下,图5示出了一种电子设备的实体结构示意图。
如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如下方法:
基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,公开方法的信息至少包括方法名、方法参数和返回值;针对每一个公开方法,基于公开方法的方法名和公开方法所属类对应的类名,生成公开方法的路径;针对每一公开方法的路径,基于公开方法中每一方法参数的类型和返回值的类型,对路径分别添加匹配的路径参数,以对路径添加目标数量的路径参数,目标数量等于公开方法中方法参数的数量加上返回值的数量之和;基于各类中每一个公开方法的路径以及对公开方法的路径添加的路径参数,生成目标数据包的接口文档。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的接口文档的生成方法,例如包括:
基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,公开方法的信息至少包括方法名、方法参数和返回值;
针对每一个公开方法,基于公开方法的方法名和公开方法所属类对应的类名,生成公开方法的路径;
针对每一公开方法的路径,基于公开方法中每一方法参数的类型和返回值的类型,对路径分别添加匹配的路径参数,以对所述路径添加目标数量的路径参数,所述目标数量等于所述公开方法中方法参数的数量加上返回值的数量之和;
基于各类中每一个公开方法的路径以及对公开方法的路径添加的路径参数,生成目标数据包的接口文档。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种接口文档的生成方法,其特征在于,所述方法包括:
基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,所述公开方法的信息至少包括方法名、方法参数和返回值;
针对每一个所述公开方法,基于所述公开方法的方法名和所述公开方法所属类对应的类名,生成所述公开方法的路径;
针对每一所述公开方法的路径,基于所述公开方法中每一方法参数的类型和返回值的类型,对所述路径分别添加匹配的路径参数,以对所述路径添加目标数量的路径参数,所述目标数量等于所述公开方法中方法参数的数量加上返回值的数量之和;
基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档。
2.根据权利要求1所述的方法,其特征在于,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标属性的属性名;
其中,所述目标属性包括:所述目标参数中设置有getter方法或setter方法的属性。
3.根据权利要求1所述的方法,其特征在于,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标注解中的参数名;
其中,所述目标注解包括:针对所述目标参数中设置有getter方法或setter方法的属性的注解。
4.根据权利要求1所述的方法,其特征在于,在所述基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档之前,所述方法还包括:
基于预设调用方式,对所述公开方法的路径添加表征调用方式的路径参数。
5.根据权利要求1所述的方法,其特征在于,在所述基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档之后,所述方法还包括:
在接收到超文本传输协议请求的情况下,基于所述超文本传输协议请求的请求参数和所述接口文档,生成目标公开方法的参数列表;其中,所述目标公开方法包括:所述目标数据包中类的实例化对象中的方法;
基于所述参数列表执行所述目标公开方法,得到所述目标公开方法的执行结果。
6.根据权利要求5所述的方法,其特征在于,所述基于所述超文本传输协议请求的请求参数和所述接口文档,生成目标公开方法的参数列表,包括:
确定所述接口文档中对应所述超文本传输协议请求的目标公开方法;
基于所述请求参数与所述目标公开方法中方法参数的对应关系,将所述请求参数转换为所述目标公开方法的方法参数;
基于所述目标公开方法的方法参数生成所述参数列表。
7.一种接口文档的生成装置,其特征在于,所述装置包括:
反射模块,用于基于java反射机制查询目标数据包中的每一个类,得到每一个类中公开方法的信息,所述公开方法的信息至少包括方法名、方法参数和返回值;
路径模块,用于针对每一个所述公开方法,基于所述公开方法的方法名和所述公开方法所属类对应的类名,生成所述公开方法的路径;
路径参数模块,用于针对每一所述公开方法的路径,基于所述公开方法中每一方法参数的类型和返回值的类型,对所述路径分别添加匹配的的路径参数,以对所述路径添加目标数量的路径参数,所述目标数量等于所述公开方法中方法参数的数量加上返回值的数量之和;
文档模块,用于基于各类中每一个所述公开方法的路径以及对所述公开方法的路径添加的路径参数,生成所述目标数据包的接口文档。
8.根据权利要求7所述的装置,其特征在于,在所述公开方法中的方法参数包括对象类型的目标参数的情况下,基于所述目标参数的对象类型对所述路径添加的路径参数包括:目标属性的属性名;
其中,所述目标属性包括:所述目标参数中设置有getter方法或setter方法的属性。
9.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的接口文档的生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的接口文档的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310476543.XA CN116594679A (zh) | 2023-04-27 | 2023-04-27 | 接口文档的生成方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310476543.XA CN116594679A (zh) | 2023-04-27 | 2023-04-27 | 接口文档的生成方法及装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116594679A true CN116594679A (zh) | 2023-08-15 |
Family
ID=87592870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310476543.XA Pending CN116594679A (zh) | 2023-04-27 | 2023-04-27 | 接口文档的生成方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594679A (zh) |
-
2023
- 2023-04-27 CN CN202310476543.XA patent/CN116594679A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11150874B2 (en) | API specification generation | |
US8626803B2 (en) | Method and apparatus for automatically providing network services | |
JP6494609B2 (ja) | カスタマイズされたソフトウェア開発キット(sdk)生成のための方法および装置 | |
US7287247B2 (en) | Instrumenting a software application that includes distributed object technology | |
JP5431513B2 (ja) | コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈 | |
CN110275831B (zh) | 协议接口的mock数据校验方法和装置 | |
US7426503B2 (en) | System and method for an improved type inference | |
US20120110028A1 (en) | Translating an object-oriented data model to a yang data model | |
US11561997B2 (en) | Methods, systems, and computer readable media for data translation using a representational state transfer (REST) application programming interface (API) | |
CN110058864B (zh) | 微服务的部署方法及装置 | |
KR20080084966A (ko) | 서비스 계약 문서의 웹 서비스 구현 변경 방법 및 이를구현하는 데 사용되는 컴퓨터 프로그램 제품 | |
CN113238740B (zh) | 代码生成方法、代码生成装置、存储介质及电子设备 | |
WO2019033018A1 (en) | SYSTEM AND METHOD FOR GENERATING A PROGRAM PROGRAMMING LANGUAGE SPECIFIC TO A DOMAIN FROM A CLOUD COMPUTING SYSTEM | |
CN111443901B (zh) | 一种基于Java反射的业务扩展方法及装置 | |
Lv et al. | Potential risk detection system of hyperledger fabric smart contract based on static analysis | |
Bartolini et al. | Data flow-based validation of web services compositions: Perspectives and examples | |
US20060193342A1 (en) | System and method for testing a protocol using targeted variant input | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN115858466A (zh) | 一种操作日志生成方法、装置、设备及介质 | |
CN116594679A (zh) | 接口文档的生成方法及装置、电子设备 | |
US7640260B2 (en) | Valid transformation expressions for structured data | |
KR101966815B1 (ko) | Rdbms 및 웹 api의 객체-관계 통합 매핑 시스템 | |
US10108743B2 (en) | Methods and systems for simplifying object mapping for user interfaces | |
JP5732926B2 (ja) | リモートプロシージャコール処理方法 | |
US20230333917A1 (en) | Methods for providing compliance indicators for api specifications |
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 |