CN111767096B - 接口文档的生成方法、装置、设备及计算机可读存储介质 - Google Patents
接口文档的生成方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111767096B CN111767096B CN202010617452.XA CN202010617452A CN111767096B CN 111767096 B CN111767096 B CN 111767096B CN 202010617452 A CN202010617452 A CN 202010617452A CN 111767096 B CN111767096 B CN 111767096B
- Authority
- CN
- China
- Prior art keywords
- parameter
- type
- determining
- target
- interface
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000003672 processing method Methods 0.000 claims abstract description 11
- 230000009466 transformation Effects 0.000 claims 2
- 238000005516 engineering process Methods 0.000 abstract description 6
- 239000000284 extract Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明涉及金融科技技术领域,公开了一种接口文档的生成方法、装置、设备及计算机可读存储介质。该接口文档的生成方法包括:获取接口对应的源文件;从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法;从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象;根据所述第一目标参数以及所述第二目标参数生成接口文档。本发明通过接口的源文件即可解析接口的结构得到目标参数,无需依托于项目的运行获取目标参数,避免了手写接口文档,不仅生成接口文档不受项目进度限制,还保证了接口文档的生成效率。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种接口文档的生成方法、装置、设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
网络架构中,前端以及后端需要通过接口文档进行交流。具体地,通过解析接口的结构,从而根据解析的结构得到接口文档。现有的用于解析接口的结构的工具是在项目运行的基础上执行的,若是项目还在开发阶段,项目运行不成功,使得用于解析接口结构工具无法生效,导致需要手写接口文档,接口文档的生成效率较低。
发明内容
本发明的主要目的在于提供一种接口文档的生成方法、装置、设备及计算机可读存储介质,旨在解决接口文档的生成受限,且生成效率较低的问题。
为实现上述目的,本发明提供一种接口文档的生成方法,所述接口文档的生成方法包括:
获取接口对应的源文件;
从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法;
从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象;
根据所述第一目标参数以及所述第二目标参数生成接口文档。
在一实施例中,所述从所述源文件中确定第一对象对应的第一目标参数的步骤包括:
从所述源文件中提取所述第一对象的第一参数;
在所述第一参数为字符串时,将所述第一参数确定为所述第一对象的第一目标参数;
在所述第一参数为数组或者常量时,将所述第一参数分割为至少一个要素,并根据所述要素确定所述第一对象对应的第一目标参数。
在一实施例中,所述根据所述要素确定所述第一对象对应的第一目标参数的步骤包括:
去除包括第一预设符号的所述要素得到剩余的各个所述要素;
根据剩余的各个所述要素确定所述第一对象对应的第一目标参数。
在一实施例中,所述根据所述要素确定所述第一对象对应的第一目标参数的步骤包括:
确定具有引用的第二参数的所述要素;
根据各个所述第二参数以及不具有引用第二参数的各个所述要素,确定所述第一对象对应的第一目标参数。
在一实施例中,所述从所述源文件中确定第二对象对应的第二目标参数的步骤包括:
从所述源文件中提取所述第二对象对应的第三参数;
确定所述第三参数对应的类型;
根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数。
在一实施例中,所述根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数的步骤包括:
在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
在一实施例中,所述确定所述第三参数对应的类型的步骤之后,还包括:
在所述类型为目标类,从所述第三参数中提取泛型变量参数,并将所述泛型变量转换为实际类型参数,所述目标类包括集合类或者class类;
将所述实际类型参数更新为第三参数,并返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
在一实施例中,所述目标类包括class类,所述从所述第三参数中提取泛型变量参数的步骤包括:
获取所述第三参数对应的父类参数;
从所述第三参数以及所述父类参数中提取泛型变量。
在一实施例中,所述获取所述第三参数对应的父类参数的步骤之后,还包括:
确定所述父类参数是否包括预设符字;
在所述父类参数包括预设符字,执行所述从所述第三参数以及所述父类参数中提取泛型变量参数的步骤;
在所述父类参数不包括预设符字,将所述父类参数确定为所述第二对象对应的第二目标参数,并执行所述根据所述第一目标参数以及所述第二目标参数生成接口文档的步骤。
在一实施例中,所述根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数的步骤包括:
在所述类型为数组类时,提取所述第三参数中第二预设符号之前的字段以更新为第三参数;
返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
为实现上述目的,本发明还提供一种接口文档的生成装置,所述接口文档的生成装置包括:
获取模块,用于获取接口对应的源文件;
确定模块,用于从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法中的至少一个;
所述确定模块,还用于从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象中的至少一个;
生成模块,用于根据所述第一目标参数以及所述第二目标参数生成接口文档。
为实现上述目的,本发明还提供一种接口文档的生成设备,所述接口文档的生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的生成程序,所述生成程序被所述处理器执行时实现如上所述的接口文档的生成方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有生成程序,所述生成程序被处理器执行时实现如上所述的接口文档的生成方法的步骤。
本发明提供一种接口文档的生成方法、装置、设备及计算机可读存储介质,接口文档的装置或设备获取接口对应的源文件,从源文件中确定接口名、请求路径以及资源处理方法等第一对象的第一目标参数,且从源文件中确定请求以及返回对象等第二对象的第二目标参数,从而根据第一目标参数以及第二目标参数生成接口文档。由于通过接口的源文件即可解析接口的结构得到目标参数,无需依托于项目的运行获取目标参数,避免了手写接口文档,不仅生成接口文档不受项目进度限制,还保证了接口文档的生成效率。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的设备的结构示意图;
图2为本发明接口文档的生成方法第一实施例的流程示意图;
图3为本发明PSI树的结构示意图;
图4为本发明接口文档的生成方法第二实施例中步骤S20的细化流程示意图;
图5为本发明接口文档的生成方法第三实施例中步骤S30的细化流程示意图;
图6为本发明接口文档的生成装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例所涉及的设备是接口文档的生成设备。
如图1所示,该接口文档的生成设备可以包括:处理器1001,例如CPU,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的接口文档的生成设备结构并不构成对接口文档的生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及生成程序。
在图1所示的终端中,网络接口1004主要用于连接服务器,与服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的生成程序,并执行以下操作:
获取接口对应的源文件;
从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法;
从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象;
根据所述第一目标参数以及所述第二目标参数生成接口文档。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
从所述源文件中提取所述第一对象的第一参数;
在所述第一参数为字符串时,将所述第一参数确定为所述第一对象的第一目标参数;
在所述第一参数为数组或者常量时,将所述第一参数分割为至少一个要素,并根据所述要素确定所述第一对象对应的第一目标参数。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
去除包括第一预设符号的所述要素得到剩余的各个所述要素;
根据剩余的各个所述要素确定所述第一对象对应的第一目标参数。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
确定具有引用的第二参数的所述要素;
根据各个所述第二参数以及不具有引用第二参数的各个所述要素,确定所述第一对象对应的第一目标参数。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
从所述源文件中提取所述第二对象对应的第三参数;
确定所述第三参数对应的类型;
根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
在所述类型为目标类,从所述第三参数中提取泛型变量参数,并将所述泛型变量转换为实际类型参数,所述目标类包括集合类或者class类;
将所述实际类型参数更新为第三参数,并返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
获取所述第三参数对应的父类参数;
从所述第三参数以及所述父类参数中提取泛型变量。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
确定所述父类参数是否包括预设符字;
在所述父类参数包括预设符字,执行所述从所述第三参数以及所述父类参数中提取泛型变量参数的步骤;
在所述父类参数不包括预设符字,将所述父类参数确定为所述第二对象对应的第二目标参数,并执行所述根据所述第一目标参数以及所述第二目标参数生成接口文档的步骤。
在一实施例中,处理器1001可以调用存储器1005中存储的生成程序,还执行以下操作:
在所述类型为数组类时,提取所述第三参数中第二预设符号之前的字段以更新为第三参数;
返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
基于上述硬件结构,提出本发明接口文档的生成方法的各实施例。
参照图2,图2为本发明接口文档的生成方法第一实施例的流程示意图,所述接口文档的生成方法包括:
步骤S10,获取接口对应的源文件;
在本实施例中,执行主体为接口文档的生成装置,为了便于描述,以下采用装置指代接口文档的生成装置。装置中新设有解析接口结构的工具,该工具可选是基于ideaintelliJ(JAVA开发工具)生成的插件sdk(Software Development Kit,软件开发工具包),该sdk插件可解析源文件,并获取源文件中的参数、要素以生成接口文档。接口可以是PSI接口(The Program Structure Interface,程序结构接口),也可以是其他类型的接口。接口具有对应的源文件,装置在需要生成接口文档时,获取接口对应的源文件。
步骤S20,从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法;
装置在确定源文件后,即从源文件中确定第一对象对应的第一目标参数。第一对象包括接口名、请求路径以及http方法,http方法为请求处理资源的方法,在此将http方法定义为资源处理方法。第一目标参数即为第一对象在源文件中的字符串,或者通过源文件所得到的字符串。以JAVA项目、接口为PSI接口为例,对装置获取第一对象的第一目标参数进行详细说明。
PSI接口中的源文件被skd插件解析后,可以以PSI树进行表征。PSI树的关键节点可以图3所示。其中,PSI源文件先解析为一级节点PSI类,再将一级节点PSI类进行解析得到二级节点PSI方法以及二级节点PSI文档注释。Sdk插件再对二级节点PSI方法进行解析,得到三级节点PSI注解、三级节点PSI文档注释、三级节点PSI类型元素以及三级节点PSI参数列表。Sdk插件再对三级节点PSI类型元素以及三级节点参数列表进行解析,得到三级节点PSI类型下的四级节点PSI域,以及三级节点下的四级节点PSI参数。Sdk插件再对四级节点PSI域进行解析,得到五级节点PSI文档注释、五级节点PSI类型以及五级节点名称。同时sdk插件对四级节点PSI参数进行解析,得到五级节点PSI域,最后对五级节点PSI域进行解析得到六级节点PSI文档注释、六级节点PSI类型以及六级节点名称。
接口名的第一目标参数可以在接口注释中得到,接口注释在PSI树对应的节点是三级节点PSI注释文档。请求路径和http方法可以从源代码@RequestMapping里取到,源代码@RequestMapping在PSI树中的所对应的节点为三级节点PSI注解。
步骤S30,从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象;
装置还需要在源文件中确定第二对象对应的第二目标参数。第二对象包括请求以及返回对象。第二目标参数即为第二对象在源文件中的字符串,或者通过源文件所得到的字符串。仍以图3所示的PSI树为例,对从源文件中确定第二对象的第二目标参数进行详细说明。
装置在源文件中确定请求所对应的节点,请求在PSI树中所对应的节点是三级节点PSI参数列表,从而在PSI参数列表所对应的字符串确定请求所对应的第二目标参数。装置再确定返回对象在PSI树所对应的节点,返回对象在PSI对应的节点为三级节点PSI类型元素。其中,返回对象以及请求所对应的下级节点,也即四级节点PSI域表示请求或者对象里的各个参数,参数包括参数名、参数类型以及参数描述,参数名、参数类型以及参数描述分别从节点五级节点名称、五级节点Psi类型e以及五级节点Psi文档注释中获取。
步骤S40,根据所述第一目标参数以及所述第二目标参数生成接口文档。
由图3可知,装置对PSI接口进行了结构的解析得到了第一目标参数以及第二目标参数,从而根据第一目标参数以及第二目标参数生成接口文档,接口文档即为第一目标参数的字符串以及第二目标参数的字符串构成。
需要说明的是,在本实施例中,以PSI接口为例,对如何解析PSI接口的结构进行详细说明,但本实施例中的装置并不限应用于PSI接口,还可以对其他类型的接口进行解析以生成接口文档。在本实施例中,装置无需编译项目,也无需将项目运行起来,即可完成接口文档的生成。
在本实施例提供的技术方案中,接口文档的装置或设备获取接口对应的源文件,从源文件中确定接口名、请求路径以及资源处理方法等第一对象的第一目标参数,且从源文件中确定请求以及返回对象等第二对象的第二目标参数,从而根据第一目标参数以及第二目标参数生成接口文档。由于通过接口的源文件即可解析接口的结构得到目标参数,无需依托于项目的运行获取目标参数,避免了手写接口文档,不仅生成接口文档不受项目进度限制,还保证了接口文档的生成效率。
参照图4,图4为本发明接口文档的生成方法的第二实施例,基于第一实施例,所述步骤S20包括:
步骤S21,从所述源文件中提取所述第一对象的第一参数;
步骤S22,在所述第一参数为字符串时,将所述第一参数确定为所述第一对象的第一目标参数;
步骤S23,在所述第一参数为数组或者常量时,将所述第一参数分割为至少一个要素,并根据所述要素确定所述第一对象对应的第一目标参数。
在本实施例中,第一对象所对应的参数可能是字符串、数组或者常量。若是字符串,则可以直接用于生成接口文档,但如果是数组或者常量,则需要把数组或者常量转换为字符串,以用于生成接口文档。
当第一参数为一串字符串时,可以用PsiNameValuePair#getLiteralValue的方法直接提取第一参数的字符串。若是第一参数为数组或者常量,则无法采用PsiNameValuePair#getLiteralValue的方法提取第一参数的字符串,此时,需要对第一参数进行分割成要素,以通过分割得到的要素转换为字符串,进而再采用PsiNameValuePair#getLiteralValue提取转换后的字符串。
对此,装置先从源文件中提取第一对象对应的第一参数,再判断第一参数是否为字符串,若第一参数为字符串,则直接采用PsiNameValuePair#getLiteralValue的方法将第一参数中的字符串提取出来,以将提取出来的字符串确定为第一对象的第一目标参数。若第一参数为数组或者常量,则需要对数组或者常量进行分割得到要素,进而将要素转换为字符串。具体的,装置将第一参数分割为至少一个要素,装置即可根据要素组合得到第一对象对应的第一目标参数。如果仅有一个要素,该要素即为第一目标参数。
分割的方式可以是以最小单位对第一参数进行分割。仍然以PSI树进行举例说明。例如,@RequestMapping(value={“m1”,“m1/”+Constant.PATH},method=RequesetMethod.POST),value是个数组,则分割成“m1”、“,”、“m1/”、“+”、以及“Constant.PATH”(逗号以及加号用于双引号表征成分割后的要素)。由上可知,要素分为三种,第一种要素为数字字母以及符号,如“m1”以及“m1/”;第二种为符号,如“,”以及“+”;第三种为具有引用关系的要素,如“Constant.PATH”。实际上,第一种要素可以直接作为第一目标参数,而第二种要素中的某一类要舍弃,第三中参数则需要确定其引用的参数,引用的参数即可作为第一目标参数。由于第一参数为数组,那么要素必然有第二种以及第三中的至少一个,且必然有第二种。也即各个要素的组合为第一种和第二种。第一种和第三种,第一种、第二种和第三终端。以下对各个要素组合确定第一目标参数进行说明。
1、各个要素包括字符串要素以及符号要素:
分割后的要素中包括第一种要素以及第二种要素时,装置先去除第一预设符号的要素,第一预设符号可以是上文中“+”,还可以是其他符号,装置即可以根据剩余的各个要素进行组合得到第一对象对应的第一目标参数。
2、各个要素包括字符串要素以及有引用参数的要素:
装置先确定具有引用第二参数的要素,从而提取第二参数。例如,要素为“Constant.PATH”,该要素具有引用对象,通过psiElement.getReference().resolve().getText()拿到引用对象的代码,也即拿到Constant.PATH,对其进行调用得到publicstatic final String PATH="path",path即为第二参数,装置再根据第二参数以及不具有引用第二参数的要素组合得到第一目标参数。
3、各个要素包括字符串要素、符号要素以及有引用参数的要素:
装置先去除第一预设符号的要素得到剩余的要素,再从剩余的要素中确定具有引用第二参数的要素,以提取到第二参数,从而将第二参数和不具有引用第二参数的剩余的要素组合得到第一目标参数。以@RequestMapping(value={“m1”,“m1/”+Constant.PATH}为例,最后得到的第一目标参数为“m1,m1/path”。
需要说明的是,装置可以构建队列StringBuilder,然后对分割后的要素PsiElement按照分割的顺序依次进行遍历,若要素为字符串,则将字符串放入队列StringBuilder;若是要素为第一预设符号,则结算对当前要素的遍历,进行下一个要素的遍历;若要素为符号要素,但不是第一预设符号,则将该要素对应的符号放入队列StringBuilder;若是要素具有引用的参数,则获取该参数,将参数放入队列StringBuilder。在遍历完所有的要素PsiElement后,要素PsiElement输出的字符串即为第一目标参数。
在本实施例提供的技术方案中,装置从源文件中提取第一对象对应的第一参数,若是第一参数为字符串,则将第一参数作为第一目标参数,若第一参数为常量或者数组时,则将第一参数分割为多个要素,进而根据各个要素撰的得到第一目标参数。
参照图5,图5为本发明接口文档的生成方法的第三实施例,基于第一或第二实施例,所述步骤S30包括:
步骤S31,从所述源文件中提取所述第二对象对应的第三参数;
步骤S32,确定所述第三参数对应的类型;
步骤S33,根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数。
在本实施例中,第二对象为请求以及返回对象。第二对象中的参数类型有多种,而不同类的参数有不同的处理方式,也即有不同的第二目标参数。
装置先从源文件中提取第二对象对应的第三参数,在确定第三参数的类型,从而根据类型以及第三参数确定第二对象对应的第二目标参数。以下以不同类的第三参数,对根据类型以及第三参数确定第二目标参数的确定进行详细的说明。
装置通过PsiType.canonicalText()方法获取第三参数的全称,第三参数可以为上述的参数类型。装置再通过全称确定第三参数的类型。
1、在当类型为文档类或者字典类时,文档类或者字典类的第三参数为字符串,即可将第三参数确定为第二对象的目标参数。
2、在当类型为目标类时,目标类为集合类或者class类,第三参数中包括有泛型变量,此时需要将泛型变量转换为实际类型。装置先确定泛型变量与实际类型之间的对应关系,从而根据对应关系将泛型变量转换为实际类型,转化的是参数,也即将泛型变量参数转换为实际类型参数。例如,一个类Test<T,E>,实例化后是Test<String,BigDecimal>,泛型变量与实际类型的对应关系就是T:String;E:BigDecimal。在第三参数中取出泛型变量,比如第三参数是SuperClass<T,E>,取出来的就是T和E,根据对应关系,就可以把T和E替换掉得到实际类型,替换后是SuperClass<String,BigDecimal>。而转化后的实际类型有可能并不是字符串,对此,装置将实际类型参数更新为第三参数,从而返回确定第三参数的类型,并且在更新的第三参数的类型为文档类或者字典类时,将更新的第三参数确定为第二目标参数。需要说明的,在当全称中包括预设字符时,即可确定第三参数为class类或者集合类,预设字符可为“<”和“>”。例如,第三参数的全称是java.util.ArrayList<com.xxx.UserInfo>,获取com.xxx.UserInfo更新为第三参数,java.util.ArrayList是文档类,将java.util.ArrayList确定为第二目标参数。
此外,class类的第三参数可能有继承关系,若有继承关系,第三参数为子参数,第三参数具有对应的父类参数,此时,装置通过PsiClass.getTypeParameters()父类参数以及第三参数中提取泛型变量参数,进而将泛型变量参数转换为实际类型参数,以将其更新为第三参数。若第三参数不具有继承关系,则第三参数不是子参数,则从第三参数中提取泛型变量参数,以执行将泛型变量参数转换为实际类型参数的步骤。可以理解的是,在目标类为class类,且第三参数为子参数时,获取第三参数对应的父类参数,并从父类参数以及第三参数中提取泛型变量参数。
装置还需要确定父类参数是否具有泛型变量参数。具体的,装置确定父类参数中是否包括预设字符,若包括有预设字符,则从预设字符“<”和“>”中截取“<”和“>”之间的内容作为泛型变量参数;若父类参数不包括预设字符,则将父类参数确定为第二目标参数,进而基于第一目标参数以及第二目标参数生成接口文档。
3、在当全称中包括第二预设字符时,即可确定第三参数为数组类,第二预设字符可为“[]”。此时,装置提取第二预设符号之前的字段,字段不为字符串,因此,需要将字段更新为第三参数,从而返回执行第三参数的步骤,若是更新的第三参数的类型为文档类或者字典类时,则将更新的第三参数确定为第二目标参数。例如第三参数的全称是com.xxx.UserInfo[],则获取com.xxx.UserInfo更新为第三参数,com.xxx.UserInfo为文档类,此时,将将com.xxx.UserInfo确定为第二目标参数。如果第三全称是java.lang.String[],获取java.lang.String更新为第三参数,java.lang.String为文档类,此时,将将java.lang.String确定为第二目标参数。
需要说明的是,在得到更新的第三参数后,重新确定的第三参数的类型,直至参数类型为文档类或者字典类,结束对第三参数的更新,再将为文档类或者字典类的第三参数确定为第二目标参数。
在本实施例提供的技术方案中,装置从源文件中提取第二对象对应的第三参数,并确定第三参数的类型,从而根据类型以及第三参数准确的确定第二对象对应的第二目标参数,实现了根据不同的类型确定第二目标参数,使得接口文档的生成更加符合实际的业务需求,更加准确。
本发明还提供一种接口文档的生成装置。
参照图6,图6为本发明接口文档的生成装置第一实施例的功能模块示意图。
如图6所示,所述接口文档的生成装置包括:
获取模块10,用于获取接口对应的源文件;
确定模块20,用于从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法;
确定模块20,还用于从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象;
生成模块,用于根据所述第一目标参数以及所述第二目标参数生成接口文档。
在一实施例中,接口文档的生成装置还包括提取模块以及分割模块:
提取模块,用于从所述源文件中提取所述第一对象的第一参数;
确定模块20,用于在所述第一参数为字符串时,将所述第一参数确定为所述第一对象的第一目标参数;
分割模块,用于在所述第一参数为数组或者常量时,将所述第一参数分割为至少一个要素,并根据所述要素确定所述第一对象对应的第一目标参数。
在一实施例中,接口文档的生成装置还包括去除模块:
去除模块,用于去除包括第一预设符号的所述要素得到剩余的各个所述要素;
确定模块,用于根据剩余的各个所述要素确定所述第一对象对应的第一目标参数。
在一实施例中,接口文档的生成装置还包括:
确定模块20,用于确定具有引用的第二参数的所述要素;
确定模块20,还用于根据各个所述第二参数以及不具有引用第二参数的各个所述要素,确定所述第一对象对应的第一目标参数。
在一实施例中,接口文档的生成装置还包括:
提取模块,用于从所述源文件中提取所述第二对象对应的第三参数;
确定模块20,用于确定所述第三参数对应的类型;
确定模块20,用于根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数。
在一实施例中,接口文档的生成装置还包括:
确定模块20,用于在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
在一实施例中,接口文档的生成装置还包括执行模块:
提取模块,用于在所述类型为目标类,从所述第三参数中提取泛型变量参数,并将所述泛型变量转换为实际类型参数,所述目标类包括集合类或者class类;
执行模块,用于将所述实际类型参数更新为第三参数,并返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
在一实施例中,接口文档的生成装置还包括:
获取模块10,用于获取所述第三参数对应的父类参数;
提取模块,用于从所述第三参数以及所述父类参数中提取泛型变量。
在一实施例中,接口文档的生成装置还包括:
确定模块20,用于确定所述父类参数是否包括预设符字;
执行模块,用于在所述父类参数包括预设符字,执行所述从所述第三参数以及所述父类参数中提取泛型变量参数的步骤;
确定模块20,还用于在所述父类参数不包括预设符字,将所述父类参数确定为所述第二对象对应的第二目标参数,并执行所述根据所述第一目标参数以及所述第二目标参数生成接口文档的步骤。
在一实施例中,接口文档的生成装置还包括:
提取模块,用于在所述类型为数组类时,提取所述第三参数中第二预设符号之前的字段以更新为第三参数;
执行模块,用于返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
其中,上述接口文档的生成装置中各个模块的功能实现与上述接口文档的生成方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有生成程序,所述生成程序被处理器执行时实现如以上任一项实施例所述的邮件发送方法的步骤。
本发明计算机可读存储介质的具体实施例与上述接口文档的生成方法各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种接口文档的生成方法,其特征在于,所述接口文档的生成方法包括:
获取接口对应的源文件;
从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法;
从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象;
根据所述第一目标参数以及所述第二目标参数生成接口文档;
其中,所述从所述源文件中确定第二对象对应的第二目标参数的步骤包括:
从所述源文件中提取所述第二对象对应的第三参数;
确定所述第三参数对应的类型;
在所述类型为集合类,从所述第三参数中提取泛型变量参数;在所述类型为class类,获取所述第三参数对应的父类参数,从所述第三参数以及所述父类参数中提取泛型变量;
将所述泛型变量转换为实际类型参数,将所述实际类型参数更新为第三参数,并返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数;
根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数。
2.如权利要求1所述的接口文档的生成方法,其特征在于,所述从所述源文件中确定第一对象对应的第一目标参数的步骤包括:
从所述源文件中提取所述第一对象的第一参数;
在所述第一参数为字符串时,将所述第一参数确定为所述第一对象的第一目标参数;
在所述第一参数为数组或者常量时,将所述第一参数分割为至少一个要素,并根据所述要素确定所述第一对象对应的第一目标参数。
3.如权利要求2所述的接口文档的生成方法,其特征在于,所述根据所述要素确定所述第一对象对应的第一目标参数的步骤包括:
去除包括第一预设符号的所述要素得到剩余的各个所述要素;
根据剩余的各个所述要素确定所述第一对象对应的第一目标参数。
4.如权利要求2所述的接口文档的生成方法,其特征在于,所述根据所述要素确定所述第一对象对应的第一目标参数的步骤包括:
在各个所述要素中确定第一要素,其中,所述第一要素设有引用对象;
获取每个所述第一要素的引用对象对应的第二参数;
根据各个所述第二参数以及各个第二要素,确定所述第一对象对应的第一目标参数,其中,除所述第一要素之外的所述要素为所述第二要素。
5.如权利要求1所述的接口文档的生成方法,其特征在于,所述根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数的步骤包括:
在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
6.如权利要求1所述的接口文档的生成方法,其特征在于,所述获取所述第三参数对应的父类参数的步骤之后,还包括:
确定所述父类参数是否包括预设符字;
在所述父类参数包括预设符字,执行所述从所述第三参数以及所述父类参数中提取泛型变量参数的步骤;
在所述父类参数不包括预设符字,将所述父类参数确定为所述第二对象对应的第二目标参数,并执行所述根据所述第一目标参数以及所述第二目标参数生成接口文档的步骤。
7.如权利要求1所述的接口文档的生成方法,其特征在于,所述根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数的步骤包括:
在所述类型为数组类时,提取所述第三参数中第二预设符号之前的字段以更新为第三参数;
返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数。
8.一种接口文档的生成装置,其特征在于,所述接口文档的生成装置包括:
获取模块,用于获取接口对应的源文件;
确定模块,用于从所述源文件中确定第一对象对应的第一目标参数,所述第一对象包括接口名、请求路径以及资源处理方法中的至少一个;
所述确定模块,还用于从所述源文件中确定第二对象对应的第二目标参数,所述第二对象包括请求以及返回对象中的至少一个;
生成模块,用于根据所述第一目标参数以及所述第二目标参数生成接口文档;
其中,所述确定模块具体用于,从所述源文件中提取所述第二对象对应的第三参数;确定所述第三参数对应的类型;
若所述类型为集合类,从所述第三参数中提取泛型变量参数;若所述类型为class类,获取所述第三参数对应的父类参数,从所述第三参数以及所述父类参数中提取泛型变量;
将所述泛型变量转换为实际类型参数,将所述实际类型参数更新为第三参数,并返回执行所述确定所述第三参数的类型的步骤,其中,在所述类型为文档类或字典类时,将所述第三参数确定为所述第二对象对应的第二目标参数;
根据所述类型以及所述第三参数,确定所述第二对象对应的第二目标参数。
9.一种接口文档的生成设备,其特征在于,所述接口文档的生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的生成程序,所述生成程序被所述处理器执行时实现如权利要求1至7中任一项所述的接口文档的生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有生成程序,所述生成程序被处理器执行时实现如权利要求1至7中任一项所述的接口文档的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617452.XA CN111767096B (zh) | 2020-06-29 | 2020-06-29 | 接口文档的生成方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617452.XA CN111767096B (zh) | 2020-06-29 | 2020-06-29 | 接口文档的生成方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767096A CN111767096A (zh) | 2020-10-13 |
CN111767096B true CN111767096B (zh) | 2024-08-16 |
Family
ID=72724463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617452.XA Active CN111767096B (zh) | 2020-06-29 | 2020-06-29 | 接口文档的生成方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767096B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799718A (zh) * | 2021-01-15 | 2021-05-14 | 亿企赢网络科技有限公司 | 一种枚举文档的生成方法、装置、电子设备及存储介质 |
CN112836477B (zh) * | 2021-01-15 | 2024-02-09 | 亿企赢网络科技有限公司 | 代码注释文档的生成方法、装置、电子设备及存储介质 |
CN112882852A (zh) * | 2021-03-25 | 2021-06-01 | 上海科世达-华阳汽车电器有限公司 | 一种接口数据存储方法、装置和计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110308930A (zh) * | 2019-06-18 | 2019-10-08 | 广州华多网络科技有限公司 | 接口文档生成方法、装置、计算机设备和存储介质 |
CN111258563A (zh) * | 2020-01-16 | 2020-06-09 | 江苏满运软件科技有限公司 | 一种接口文档的生成方法、装置、存储介质及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155664B1 (en) * | 2000-11-14 | 2006-12-26 | Cypress Semiconductor, Corp. | Extracting comment keywords from distinct design files to produce documentation |
CN107301137A (zh) * | 2017-07-04 | 2017-10-27 | 福建中金在线信息科技有限公司 | Rset接口实现方法和装置及电子设备和计算机可读存储介质 |
US10839011B2 (en) * | 2018-04-18 | 2020-11-17 | International Business Machines Corporation | Application programing interface document generator |
CN109408375B (zh) * | 2018-09-27 | 2023-06-09 | 深圳壹账通智能科技有限公司 | 接口文档的生成方法和装置 |
CN110955416B (zh) * | 2019-10-12 | 2024-08-13 | 西藏威普特电子科技发展有限公司 | 接口文档生成方法、装置、设备和计算机存储介质 |
CN110806863A (zh) * | 2019-11-05 | 2020-02-18 | 泰康保险集团股份有限公司 | 接口文档生成方法及装置、电子设备、存储介质 |
-
2020
- 2020-06-29 CN CN202010617452.XA patent/CN111767096B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110308930A (zh) * | 2019-06-18 | 2019-10-08 | 广州华多网络科技有限公司 | 接口文档生成方法、装置、计算机设备和存储介质 |
CN111258563A (zh) * | 2020-01-16 | 2020-06-09 | 江苏满运软件科技有限公司 | 一种接口文档的生成方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111767096A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111767096B (zh) | 接口文档的生成方法、装置、设备及计算机可读存储介质 | |
CN110019486B (zh) | 数据采集方法、装置、设备及存储介质 | |
CN109343857B (zh) | 线上部署机器学习模型的方法、设备和存储介质 | |
US10620945B2 (en) | API specification generation | |
US9875098B2 (en) | System and method for extracting a business rule embedded in an application source code | |
CN102665231B (zh) | 一种lte系统自动生成参数配置文件的方法 | |
CN110532084B (zh) | 平台任务的调度方法、装置、设备及存储介质 | |
CN108984155B (zh) | 数据处理流程设定方法和装置 | |
CN111200523B (zh) | 中台系统配置方法、装置、设备及存储介质 | |
CN113238740B (zh) | 代码生成方法、代码生成装置、存储介质及电子设备 | |
CN109582886B (zh) | 页面内容提取方法、模板的生成方法及装置、介质及设备 | |
CN109285024B (zh) | 在线特征确定方法、装置、电子设备及存储介质 | |
CN110018835B (zh) | Yang模型配置数据处理方法及装置、终端设备及存储介质 | |
CN112130830A (zh) | 接口生成方法、装置及电子设备 | |
CN113885880A (zh) | 一种多规则匹配方法、装置及设备 | |
US10360208B2 (en) | Method and system of process reconstruction | |
CN107679055B (zh) | 信息检索方法、服务器及可读存储介质 | |
CN113448852A (zh) | 一种测试案例的获取方法、装置、电子设备及存储介质 | |
CN113806647A (zh) | 识别开发框架的方法及相关设备 | |
JP2019101889A (ja) | テスト実行装置及びプログラム | |
CN112241621A (zh) | 一种通过用户代理识别客户端环境的方法和装置 | |
CN111151008B (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 | |
CN112130860A (zh) | Json对象解析方法、装置、电子设备及存储介质 | |
CN111949309A (zh) | 拉取idl文件的方法、装置、计算机设备和存储介质 | |
JP2016051367A (ja) | データ解析装置、データ解析方法、および、プログラム。 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |