CN113238740B - 代码生成方法、代码生成装置、存储介质及电子设备 - Google Patents
代码生成方法、代码生成装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN113238740B CN113238740B CN202110657306.4A CN202110657306A CN113238740B CN 113238740 B CN113238740 B CN 113238740B CN 202110657306 A CN202110657306 A CN 202110657306A CN 113238740 B CN113238740 B CN 113238740B
- Authority
- CN
- China
- Prior art keywords
- interface
- attribute
- type
- information
- character string
- 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 92
- 230000004044 response Effects 0.000 claims description 73
- 230000006870 function Effects 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003252 repetitive 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
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- 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
-
- 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/44—Encoding
- G06F8/447—Target code generation
Abstract
本公开提供一种代码生成方法及装置、计算机可读存储介质、电子设备;涉及计算机技术领域。其中,代码生成方法包括:获取待处理接口文档中的接口信息对应的数据对象;针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值的类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串;根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码。本公开能够基于接口文档自动的生成接口代码,提高代码开发效率。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种代码生成方法、代码生成装置、计算机可读存储介质以及电子设备。
背景技术
在项目的前端开发中,往往需要通过接口函数代码来获取前端需要的数据。
相关技术中,主要通过开发人员直接基于接口文档以人工编写Typescript(TypeScript是一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成)接口代码的方式生成接口函数代码或者先将接口文档转换为Javascript(一种具有函数优先的轻量级,解释型或即时编译型的编程语言)数据对象,然后将Javascript数据对象直接解析为Typescript的类型定义,由于直接解析得到的Typescript的类型定义存在嵌套的缺陷,因此还需要前端开发人员人工重新梳理接口的定义和类型约束,以生成Typescript的接口代码。
然而,相关技术中的接口代码生成方式需要人工参与,因此开发效率低下。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种代码生成方法、代码生成装置、计算机可读存储介质以及电子设备,进而能够自动的生成接口代码,以提高前端的开发效率。
根据本公开的一个方面,提供一种代码生成方法,包括:
获取待处理接口文档中的接口信息对应的数据对象;
针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;
对所述接口信息对应的属性树进行解析,以得到所述接口信息的类型模板字符串;
根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码;
其中,所述接口信息对应的数据对象为第一类型编程语言,所述接口代码为第二类型编程语言。
在本公开的一种示例性实施例中,所述根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树,包括:
根据所述接口信息生成所述属性树中的根节点;
在所述属性的值类型为基础类型时,将所述值类型为基础类型的属性封装为所述根节点的子节点,其中,所述基础类型包括字符串、数值、布尔中的一种或多种;
在所述属性的值类型为对象时,将所述值类型为对象类型的属性封装为所述根节点的子节点,且将所述值类型为对象类型的属性中包含的每个子属性封装为所述值类型为对象类型的属性的子节点;
在所述的属性的值类型为数组时,将所述值类型为数组类型的属性封装为所述根节点的子节点,且将所述值类型为数组类型的属性中的每个元素封装为所述值类型为数组类型的属性的子节点;
基于所述根节点和所述子节点,生成所述接口信息对应的属性树。
在本公开的一种示例性实施例中,所述对所述接口信息的属性树进行解析,以得到所述接口信息的类型模板字符串,包括:
对所述接口信息的属性树中的每个节点进行解析,在解析到的当前节点的值类型为对象或数组时,对所述值类型为对象或数组的节点包含的每个子节点进行解析,以得到所述接口信息的类型模板字符串。
在本公开的一种示例性实施例中,所述将所述属性封装为节点,包括:
基于所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点。
在本公开的一种示例性实施例中,所述获取待处理接口文档中的接口信息对应的数据对象,包括:
根据预设字段确定出待处理接口文档的基础配置信息,并获取所述基础配置信息中所包含的指示信息,所述指示信息用于确定是否生成接口信息的类型模板字符串;
在根据所述指示信息确定生成接口信息的类型模板字符串时,获取待处理接口文档中的接口信息对应的数据对象。
在本公开的一种示例性实施例中,所述获取所述基础配置信息中所包含的指示信息,包括:
根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,其中,每种类型的接口信息对应的指示信息用于确定是否生成当前类型的接口信息的类型模板字符串。
在本公开的一种示例性实施例中,所述根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码,包括:
基于生成的一种或多种类型的接口信息的类型模板字符串,拼接每种类型的接口信息对应的类型模板字符串,得到所述待处理接口文档对应的接口代码字符串;
将所述接口代码字符串写入到接口代码文件中,以生成所述待处理接口文档对应的接口代码。
在本公开的一种示例性实施例中,所述基础配置信息包括接口路径和/或接口方法,所述接口路径和/或所述接口方法用于生成所述待处理接口文档对应的接口基础模板字符串;
所述拼接每种类型的接口信息对应的类型模板字符串,包括:
拼接每种类型的接口信息对应的类型模板字符串与所述接口基础模板字符串,得到所述待处理接口文档对应的接口代码字符串。
在本公开的一种示例性实施例中,所述接口基础模板字符串通过以下方式生成:
根据基础配置信息中的接口方法和/或接口路径,确定出所述待处理接口文档对应的接口函数标识;
在根据所述指示信息确定生成接口信息的类型模板字符串时,根据所述接口方法和/或接口路径,确定出所述接口信息的类型模板标识;
拼接所述接口函数标识与所述接口信息的类型模板标识,生成所述接口基础模板字符串。
在本公开的一种示例性实施例中,所述预设字段包括接口请求数据字段、接口请求参数字段、接口响应数据字段、接口请求报头字段中的一种或多种;
所述根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,包括:
在所述预设字段包括所述接口请求数据字段时,根据所述待处理接口文档中是否存在接口请求数据,获取第一指示信息,所述第一指示信息用于确定是否生成所述接口请求数据的类型模板字符串;
在所述预设字段包括所述接口请求参数字段时,根据所述待处理接口文档中是否存在接口请求参数,获取第二指示信息,所述第二指示信息用于确定是否生成所述接口请求参数的类型模板字符串;
在所述预设字段包括所述接口响应数据字段时,根据所述待处理接口文档中是否存在接口响应数据,获取第三指示信息,所述第三指示信息用于确定是否生成所述接口响应数据的类型模板字符串;
在所述预设字段包括所述接口请求报头字段时,根据所述待处理接口文档中是否存在接口请求报头,获取第四指示信息,所述第四指示信息用于确定是否生成所述接口请求报头的类型模板字符串。
在本公开的一种示例性实施例中,所述针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树,包括:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,针对所述接口请求数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求数据对应的第一属性树;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,针对所述接口请求参数对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求参数对应的第二属性树;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,针对所述接口响应数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口响应数据对应的第三属性树。
在本公开的一种示例性实施例中,所述对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串,包括:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,对所述第一属性树进行解析,得到所述接口请求数据的类型模板字符串;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,对所述第二属性树进行解析,得到所述接口请求参数的类型模板字符串;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,对所述第三属性树进行解析,得到所述接口响应数据的类型模板字符串。
在本公开的一种示例性实施例中,所述方法还包括:
在根据所述第四指示信息确定生成所述接口请求报头的类型模板字符串时,针对所述接口请求报头对应的数据对象所包含的每个属性,根据所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点;
基于每个属性对应的节点,生成所述接口请求报头对应的属性数组;
对所述属性数组进行解析,得到所述接口请求报头的类型模板字符串。
根据本公开的一个方面,提供一种代码生成装置,包括:数据对象获取模块,被配置为获取待处理接口文档中的接口信息对应的数据对象;属性树生成模块,被配置为针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;属性树解析模块,被配置为对所述接口信息对应的属性树进行解析,以得到所述接口信息的类型模板字符串;接口代码生成模块,被配置为根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码;其中,所述接口信息对应的数据对象为第一类型编程语言,所述接口代码为第二类型编程语言。
在本公开的一种示例性实施例中,所述属性树生成模块还被具体配置为:
根据所述接口信息生成所述属性树中的根节点;
在所述属性的值类型为基础类型时,将所述值类型为基础类型的属性封装为所述根节点的子节点,其中,所述基础类型包括字符串、数值、布尔中的一种或多种;
在所述属性的值类型为对象时,将所述值类型为对象类型的属性封装为所述根节点的子节点,且将所述值类型为对象类型的属性中包含的每个子属性封装为所述值类型为对象类型的属性的子节点;
在所述的属性的值类型为数组时,将所述值类型为数组类型的属性封装为所述根节点的子节点,且将所述值类型为数组类型的属性中的每个元素封装为所述值类型为数组类型的属性的子节点;
基于所述根节点和所述子节点,生成所述接口信息对应的属性树。
在本公开示例性的实施方式中,所述属性树解析模块还被具体配置为:
对所述接口信息的属性树中的每个节点进行解析,在解析到的当前节点的值类型为对象或数组时,对所述值类型为对象或数组的节点包含的每个子节点进行解析,以得到所述接口信息的类型模板字符串。
在本公开示例性的实施方式中,所述将所述属性封装为节点,包括:
基于所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点。
在本公开示例性的实施方式中,所述数据对象获取模块被具体配置为:
根据预设字段确定出待处理接口文档的基础配置信息,并获取所述基础配置信息中所包含的指示信息,所述指示信息用于确定是否生成接口信息的类型模板字符串;
在根据所述指示信息确定生成接口信息的类型模板字符串时,获取待处理接口文档中的接口信息对应的数据对象。
在本公开示例性的实施方式中,所述获取所述基础配置信息中所包含的指示信息,包括:
根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,其中,每种类型的接口信息对应的指示信息用于确定是否生成当前类型的接口信息的类型模板字符串。
在本公开示例性的实施方式中,基于前述实施例,所述接口代码生成模块还被具体配置为:
所述根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码,包括:
基于生成的一种或多种类型的接口信息的类型模板字符串,拼接每种类型的接口信息对应的类型模板字符串,得到所述待处理接口文档对应的接口代码字符串;
将所述接口代码字符串写入到接口代码文件中,以生成所述待处理接口文档对应的接口代码。
在本公开示例性的实施方式中,所述基础配置信息包括接口路径和/或接口方法,所述接口路径和/或所述接口方法用于生成所述待处理接口文档对应的接口基础模板字符串;
所述拼接每种类型的接口信息对应的类型模板字符串,包括:
拼接每种类型的接口信息对应的类型模板字符串与所述接口基础模板字符串,得到所述待处理接口文档对应的接口代码字符串。
在本公开示例性的实施方式中,所述接口基础模板字符串通过以下方式生成:
根据基础配置信息中的接口方法和/或接口路径,确定出所述待处理接口文档对应的接口函数标识;
在根据所述指示信息确定生成接口信息的类型模板字符串时,根据所述接口方法和/或接口路径,确定出所述接口信息的类型模板标识;
拼接所述接口函数标识与所述接口信息的类型模板标识,生成所述接口基础模板字符串。
在本公开示例性的实施方式中,所述预设字段包括接口请求数据字段、接口请求参数字段、接口响应数据字段、接口请求报头字段中的一种或多种;
所述根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,包括:
在所述预设字段包括所述接口请求数据字段时,根据所述待处理接口文档中是否存在接口请求数据,获取第一指示信息,所述第一指示信息用于确定是否生成所述接口请求数据的类型模板字符串;
在所述预设字段包括所述接口请求参数字段时,根据所述待处理接口文档中是否存在接口请求参数,获取第二指示信息,所述第二指示信息用于确定是否生成所述接口请求参数的类型模板字符串;
在所述预设字段包括所述接口响应数据字段时,根据所述待处理接口文档中是否存在接口响应数据,获取第三指示信息,所述第三指示信息用于确定是否生成所述接口响应数据的类型模板字符串;
在所述预设字段包括所述接口请求报头字段时,根据所述待处理接口文档中是否存在接口请求报头,获取第四指示信息,所述第四指示信息用于确定是否生成所述接口请求报头的类型模板字符串。
在本公开示例性的实施方式中,所述属性树生成模块还可以被配置为:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,针对所述接口请求数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求数据对应的第一属性树;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,针对所述接口请求参数对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求参数对应的第二属性树;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,针对所述接口响应数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口响应数据对应的第三属性树。
在本公开示例性的实施方式中,所述属性树解析模块1230被具体配置为:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,对所述第一属性树进行解析,得到所述接口请求数据的类型模板字符串;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,对所述第二属性树进行解析,得到所述接口请求参数的类型模板字符串;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,对所述第三属性树进行解析,得到所述接口响应数据的类型模板字符串。
在本公开示例性的实施方式中,所述代码生成装置还包括接口请报头的类型模板字符串生成模块,该模块被具体配置为:
在根据所述第四指示信息确定生成所述接口请求报头的类型模板字符串时,针对所述接口请求报头对应的数据对象所包含的每个属性,根据所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点;
基于每个属性对应的节点,生成所述接口请求报头对应的属性数组;
对所述属性数组进行解析,得到所述接口请求报头的类型模板字符串。
根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
根据本公开的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在本公开示例性实施例所提供的代码生成方法中,一方面,通过将接口信息的数据对象转换为属性树,可以对属性树进行解析以得到接口信息的类型模板字符串,进而基于接口信息的类型模板字符串自动的生成接口代码,相比于人工梳理接口的类型定义和类型约束以生成接口代码的方式而言,提高了代码开发效率。另一方面,通过生成的属性树,可以对Javascript的嵌套对象进行深入的解析,得到Typescript的完整类型定义,进而保证了生成的接口代码的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的一种代码生成方法及装置的示例性系统架构的示意图;
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;
图3示意性示出了根据本公开的一个实施例的代码生成方法的流程图;
图4示意性示出了根据本公开的一个实施例的获取接口信息对应的数据对象的方法的流程示意图;
图5示意性示出了根据本公开的一个实施例的生成接口请求报头的类型模板字符串的方法的流程图;
图6示意性示出了根据本公开的一个实施例的多叉树的结构示意图;
图7示意性示出了根据本公开的一个实施例中的基于类型模板字符串生成接口代码的方法的流程图;
图8示意性示出了根据本公开的一个实施例的接口代码生成系统的结构图;
图9示意性示出了根据本公开的一个实施例的接口管理平台的显示界面;
图10示意性示出了根据本公开的另一个实施例的接口管理平台的显示界面;
图11示意性示出了根据本公开的再一个实施例的接口管理平台的显示界面;以及
图12示意性示出了根据本公开的一个实施例的代码生成装置的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出了可以应用本公开实施例的一种代码生成方法及装置的示例性应用环境的系统架构的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
本公开实施例所提供的代码生成方法可以在服务器105执行,相应地,代码生成装置一般设置于服务器105中。本公开实施例所提供的代码生成方法也可以由终端设备101、102、103执行,相应的,代码生成装置也可以设置于终端设备101、102、103中。
举例而言,在一种示例性实施例中,可以是用户在终端设备101、102、103的图形用户界面中选中需要生成代码的接口函数、服务器105根据用户选择的接口函数的名称在接口文档数据库中查找对应的接口文档,并将查找到的接口文档确定为待处理文档,然后服务器105可以执行以下过程:获取待处理接口文档中的接口信息对应的数据对象;针对接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将属性封装为节点,以生成接口信息对应的属性树;对接口信息对应的属性树进行解析,以得到接口信息的类型模板字符串;根据接口信息的类型模板字符串,生成待处理接口文档对应的接口代码。同时,服务器在执行上述过程时,还可以向终端101、102、103发送接口代码的生成进度(如正在导出中、导出已完成),终端101、102、103的图形用户界面中会显示接口代码的生成进度。进一步的,在终端101、102、103的图形用户界面中显示接口代码的生成进度为导出完成时,用户可以通过终端101、102、103中显示的下载接口直接将生成的接口代码下载至本地终端设备中。但本领域技术人员容易理解的是,上述应用场景仅是用于举例,本示例性实施例中并不以此为限。
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有系统操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本公开的方法和装置中限定的各种功能。
以下对本公开实施例的技术方案进行详细阐述:
相关技术中,通常通过“硬转换”的方式将Javascript数据对象直接解析转换为Typescript的类型定义。由于这种硬转换的方式没有具体的分析Javascript对象中每一个属性对应的值类型,进而无法深入解析到Javascript的嵌套对象,导致转换后的Typescript的类型定义存在缺陷。例如,硬转换后对象的属性的值可能依然是一个对象,或者是一个数组。
可见,相关技术中不能直接的使用Typescript的类型定义来描述一个Javascript的对象。因此,在生成前端接口代码时,还需要前端开发人员基于硬转换后的Typescript的类型定义重新梳理Typescript接口的类型定义和约束,以生成前端的Typescript接口代码,这导致了前端开发的工作效率低下。
基于上述一个或多个问题,本示例实施方式提供了一种代码生成方法。参考图3所示,该代码生成方法可以包括以下步骤:
步骤S310,获取待处理接口文档中的接口信息对应的数据对象;
步骤S320,针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;
步骤S330,对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串;
步骤S340,根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码;
其中,所述接口信息对应的数据对象为第一类型编程语言,所述接口代码为第二类型编程语言。
在本示例实施方式所提供的代码生成方法中,一方面,通过将接口信息的数据对象转换为对应的属性树,可以对属性树进行解析以得到接口信息的类型模板字符串,进而基于接口信息的类型模板字符串自动的生成接口代码,相比于人工梳理接口的类型定义和类型约束以生成接口代码的方式而言,提高了代码开发效率。另一方面,通过生成的属性树,可以对Javascript的嵌套对象进行深入的解析,得到Typescript的完整类型定义,进而保证生成的接口代码的准确性。
下面,在另一实施例中,对上述步骤进行更加详细的说明。
在步骤S310中,获取待处理接口文档中的接口信息对应的数据对象。
其中,待处理接口文档可以包括待处理的API(Application ProgrammingInterface,应用程序接口)文档。待处理接口文档中的接口信息可以包括接口请求数据(Request Data)、接口请求参数(Request Query)、接口响应数据(Response Data)、接口请求报头(Request headers)中的一种或多种。当然,待处理文档中的接口信息也可以包括其它的与接口函数相关的信息,本示例性实施方式对此不做特殊限定。
在本公开示例性的实施方式中,接口信息对应的数据对象为第一类型编程语言。例如,可以是Javascript编程语言。换言之,待处理接口文档中的接口信息对应的数据对象可以包括Javascript对象。即,可以将待处理接口文档中的接口信息转换为Javascript对象,然后获取该Javascript对象。
在一种可选的实施方式中,可以根据客户端发送的接口文档标识,在接口文档数据库中根据接口文档标识查询对应的接口文档,并将查询到的该接口文档作为待处理接口文档,以得到待处理接口文档。在得到待处理接口文档后,可以基于待处理接口文档进行预处理,以得到待处理接口文档的基础配置信息,然后根据待处理接口文档的基础配置信息获取待处理接口文档中的接口信息对应的数据对象。
示例性的,图4示出本公开一示例性实施例中获取接口信息对应的数据对象的方法的流程示意图。参考图4,该方法可以包括步骤S410至步骤S420。
在步骤S410中,根据预设字段确定出待处理接口文档的基础配置信息,并获取所述基础配置信息中所包含的指示信息。
其中,所述指示信息用于确定是否生成接口信息的类型模板字符串。
在本公开示例性实施方式中,获取所述基础配置信息中所包含的指示信息,可以包括:根据预设字段包括的接口信息字段的类型,获取基础配置信息中所包含的每种类型的接口信息对应的指示信息,其中,每种类型的接口信息对应的指示信息用于确定是否生成当前类型的接口信息的类型模板字符串。
在一种可选的实施方式中,预设字段可以包括接口请求数据字段、接口请求参数字段、接口响应数据字段中的一种或多种。
示例性的,上述的根据预设字段包括的接口信息字段的类型,获取基础配置信息中所包含的每种类型的接口信息对应的指示信息可以包括:
在所述预设字段包括所述接口请求数据字段时,根据所述待处理接口文档中是否存在接口请求数据,获取第一指示信息,所述第一指示信息用于确定是否生成所述接口请求数据的类型模板字符串;
在所述预设字段包括所述接口请求参数字段时,根据所述待处理接口文档中是否存在接口请求参数,获取第二指示信息,所述第二指示信息用于确定是否生成所述接口请求参数的类型模板字符串;
在所述预设字段包括所述接口响应数据字段时,根据所述待处理接口文档中是否存在接口响应数据,获取第三指示信息,所述第三指示信息用于确定是否生成所述接口响应数据的类型模板字符串;
在所述预设字段包括所述接口请求报头字段时,根据所述待处理接口文档中是否存在接口请求报头,获取第四指示信息,所述第四指示信息用于确定是否生成所述接口请求报头的类型模板字符串。
其中,第一指示信息、第二指示信息、第三指示信息以及第四指示信息对应的值可以为布尔类型,通过各指示信息对应的布尔类型的值可以确定是否生成对应的接口信息的类型模板字符串。
以预设字段包括接口请求数据为例,当预设字段包括接口请求数据字段时,则待处理接口文档的基础配置信息中可以包括第一指示信息,第一指示信息的值可以根据待处理接口文档中是否存在接口请求数据确定。换言之,在得到待处理接口文档后,可以先判断待处理接口文档中是否存在接口请求数据,如果存在,则可以将第一指示信息的值配置为能够代表待处理接口文档中存在接口请求数据的状态标识,例如,将第一指示信息的值配置为1,如果不存在,则可以将第一指示信息的值配置为能够代表待处理接口文档中不存在接口请求数据的状态标识,例如,将第一指示信息配置为0。进而,可以根据第一指示信息的值确定是否生成接口请求数据的类型模板字符串。
需要说明的是,步骤S410中的预设字段可以根据实际需求或者API文档的具体内容确定,包括但不限于上述的接口请求数据字段、接口请求参数字段、接口响应数据字段、接口请求报头字段中的一种或多种,对应的步骤S410中的指示信息包括但不限于上述的第一指示信息、第二指示信息、第三指示信息、第四指示信息中的一种或多种。当预设字段包括对应的接口信息的字段时,基础配置信息中才会包含对应的接口信息的指示信息。例如,当预设字段中包括接口响应数据字段时,配置信息中才会包含第三指示信息,当预设字段中不包括接口响应数据字段时,配置信息中不会包含第三指示信息,也就表示不生成接口响应数据的类型模板字符串。
接下来,继续参考图4,在步骤S420中,在根据所述指示信息确定生成接口信息的类型模板字符串时,获取待处理接口文档中的接口信息对应的数据对象。
示例性的,根据步骤S410中的预设字段所包括的接口信息字段,步骤S420的具体实施方式可以包括:在预设字段包括接口请求数据字段,且根据第一指示信息确定生成接口请求数据的类型模板字符串时,获取待处理接口文档中的接口请求数据对应的Javascript数据对象;在预设字段包括接口请求参数字段,且根据第二指示信息确定生成接口请求参数的类型模板字符串时,获取待处理接口文档中的接口请求参数对应的Javascript数据对象;在预设字段包括接口响应数据字段,且根据第三指示信息确定生成接口响应数据的类型模板字符串时,获取待处理接口文档中的接口响应数据对应的Javascript数据对象;在预设字段包括接口请求报头字段,且根据第四指示信息确定生成接口请求报头的类型模板字符串时,获取待处理接口文档中的接口请求报头对应的Javascript数据对象。
示例性的,在获取到待处理接口文档中的接口请求报头对应的Javascript数据对象时,还可以基于接口请求报头对应的Javascript数据对象生成待处理文档中的接口请求报头对应的类型模板字符串。图5示意性示出了根据本公开的一个实施例的生成接口请求报头的类型模板字符串的方法的流程图。参考图5,该方法可以包括步骤S510至步骤S530。
在步骤S510中,针对所述接口请求报头对应的数据对象所包含的每个属性,根据所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点。
在步骤S520中,基于每个属性对应的节点,生成所述接口请求报头对应的属性数组;
在步骤S530中,对所述属性数组进行解析,得到所述接口请求报头的类型模板字符串。
举例而言,在获取到待处理接口文档中的接口请求报头对应的Javascript数据对象时,针对接口请求报头对应的Javascript数据对象所包含的每个属性,可以将该属性的标识、属性的值类型、属性的必要性标识、属性的子节点封装为一个节点,从而生成每个属性对应的节点,将每个属性对应的节点存放在接口请求报头对应的属性数组中,然后对属性数组中的每个节点进行解析,进而得到接口请求报头的类型模板字符串。其中,属性的必要性标识可以理解为该属性是否必须存在。
由于接口请求报头对应的Javascript数据对象一般不存在嵌套结构,即各属性的值都为基础类型,如string(字符串)、number(数值)、boolean(布尔)等,因此,接口请求报头对应的Javascript数据对象所包含的每个属性对应的节点中的子节点的值都为空值,即其不存在子节点。进而,可以直接将封装成节点的各属性存放在数组类型的结构中,然后可以对数组中每个元素对应的每个节点进行解析,以得到接口请求报头的类型模板字符串。
需要说明的是,Javascript数据对象通常用花括号来书写,对象属性为“name(key):value”对,各属性之间用逗号隔开,例如,以“var person={firstName:"Bill",lastName:"Gates",age:62,eyeColor:"blue"}”这个Javascript数据对象为例,该对象(person)中有4个属性,这4个属性的名称(可以理解为标识)分别为:firstName、lastName、age、eyeColor。
进一步的,对于获取到的接口请求数据对应的Javascript数据对象、接口请求参数对应的Javascript数据对象、接口响应数据对应的Javascript数据对象可以执行下述的步骤S320至步骤S330。
继续参考图3,在步骤S320中,针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树。
在本公开示例性的实施方式中,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树可以包括:根据所述接口信息生成所述属性树中的根节点;在所述属性的值类型为基础类型时,将所述值类型为基础类型的属性封装为所述根节点的子节点,其中,所述基础类型包括字符串、数字、布尔中的一种或多种;在所述属性的值类型为对象时,将所述值类型为对象类型的属性封装为所述根节点的子节点,且将所述值类型为对象类型的属性中包含的每个子属性封装为所述值类型为对象类型的属性的子节点;在所述的属性的值类型为数组时,将所述值类型为数组类型的属性封装为所述根节点的子节点,且将所述值类型为数组类型的属性中的每个元素封装为所述值类型为数组类型的属性的子节点;基于所述根节点和所述子节点,生成所述接口信息对应的属性树。
其中,可以基于所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点。
在本公开示例性的实施方式中,根据所述接口信息生成所述属性树中的根节点可以包括:根据所述接口信息对应的数据对象的标识、数据对象的值类型(即对象类型)、数据对象的必要性标识、数据对象的子节点,将接口信息对应的数据对象的标识封装为属性树的根节点。其中,数据对象的子节点可以包括数据对象中包含的各个属性对应的封装的节点。
对于属性树中的根节点,以接口信息包括接口请求数据为例,则可以将接口请求数据对应的数据对象的标识,如Request Data、接口请求数据的值类型,即object、接口请求数据的必须要性标识,如required、接口请求数据的子节点children,即接口请求数据对应的数据对象中的各属性对应的节点,封装为一个节点,从而生成接口请求数据对应的属性树中的根节点。
举例而言,可以将属性的值类型分为基础类型和复合类型两种,其中,基础类型包括string、number、boolean,复合类型包括object(对象类型)、array(数组类型)。基于属性对应的值类型,将Javascript数据对象所包含的每个属性封装为一个节点,该节点中会有4个属性,分别为key(名称)、type(值类型)、required(必要性标识)、children(子节点)。其中,将每个属性封装为一个节点可以理解为将每个属性封装为一个对象,这个对象中包含4个属性,即上述的key、type、required、children,每个对象可以被看作一个节点。每个对象中包含的子节点和该对象对应的节点存在父子关系,这样层层关联,即可生成接口信息对应的属性树。
在本公开示例性的实施方式中,属性树可以包括多叉树。图6示意性示出了根据本公开的一个实施例的多叉树的结构示意图。在图6所示的多叉树中,每个节点包含4个属性,即key(节点名称,也是属性名称)、type(值类型)、required(是否为可选,即必要性标识)、children(子节点)。
示例性,在上述的预设字段包括接口请求数据字段、接口请求参数字段、接口响应数据字段中的一种或多种时,步骤S320的具体实施方式可以包括:
在根据上述的第一指示信息确定生成所述接口请求数据的类型模板字符串时,针对所述接口请求数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求数据对应的第一属性树;
在根据上述的第二指示信息确定生成所述接口请求参数的类型模板字符串时,针对所述接口请求参数对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求参数对应的第二属性树;
在根据上述的第三指示信息确定生成所述接口响应数据的类型模板字符串时,针对所述接口响应数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口响应数据对应的第三属性树。
换言之,可以根据不同的接口信息对应的数据对象,生成不同的接口信息对应的属性树。
接下来,继续参考图3,在步骤S330中,对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串。
示例性,在上述的预设字段包括接口请求数据字段、接口请求参数字段、接口响应数据字段中的一种或多种时,步骤S330的实施方式可以包括:
在根据上述的第一指示信息确定生成所述接口请求数据的类型模板字符串时,对所述第一属性树进行解析,得到所述接口请求数据的类型模板字符串;
在根据上述的第二指示信息确定生成所述接口请求参数的类型模板字符串时,对所述第二属性树进行解析,得到所述接口请求参数的类型模板字符串;
在根据上述的第三指示信息确定生成所述接口响应数据的类型模板字符串时,对所述第三属性树进行解析,得到所述接口响应数据的类型模板字符串。
示例性的,对接口信息对应的属性树进行解析的实施方式可以包括:对所述接口信息的属性树中的每个节点进行解析,在解析到的当前节点的值类型为对象或数组时,对所述值类型为对象或数组的节点包含的每个子节点进行解析,以得到所述接口信息的类型模板字符串。
举例而言,可以使用深度优先遍历算法,对上述的第一属性树、第二属性树、第三属性树进行解析,如何解析到的当前节点的值类型为基础类型,则直接根据当前节点的信息生成模板字符串;如果解析到的当前节点的值类型为复合类型,则可以采用递归的方式将递归到复合类型的节点所包含的个子节点,基于各子节点的信息生成模板字符串,进而基于各个属性树得到对应的接口信息的类型模板字符串。
接下来,在步骤S340中,根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码。
图7示意性示出了根据本公开的一个实施例中的基于模板字符串生成接口代码的方法的流程图。下面结合图7,对上述的步骤S340进行更进一步的说明。
参考图7,基于模板字符串生成接口代码的方法可以包括步骤S710至步骤S720。
在步骤S710中,基于生成的一种或多种类型的接口信息的类型模板字符串,拼接每种类型的接口信息对应的类型模板字符串,得到所述待处理接口文档对应的接口代码字符串。
在本公开的示例性实施方式中,经过前述的步骤S310至步骤S330的处理,最终生成的类型模板字符串可以包括接口请求数据的类型模板字符串、接口请求参数的类型模板字符串、接口响应数据的类型模板字符串、接口请求报头的类型模板字符串中的一种或多种。
示例性的,可以拼接每种类型的接口信息对应的类型模板字符串与接口基础模板字符串,得到待处理接口文档对应的接口代码字符串。
其中,接口基础模板字符串可以通过以下方式生成:根据基础配置信息中的接口方法和/或接口路径,确定出所述待处理接口文档对应的接口函数标识;在根据所述指示信息确定生成接口信息的类型模板字符串时,根据所述接口方法和/或接口路径,确定出所述接口信息的类型模板标识;拼接所述接口函数标识与所述接口信息的类型模板标识,生成所述接口基础模板字符串。
在本公开的示例性实施方式中,上述的预设字段还可以包括接口路径字段和/或接口方法字段,进而可以根据接口路径字段和/或接口方法字段,得到待处理接口文档中的接口方法和/或接口路径,并将其作为待处理接口文档对应的基础配置信息,其中,接口路径和/或接口方法用于生成待接口文档对应的接口模板字符串。
举例而言,以预设字段包括接口方法和接口路径、第一指示信息、第二指示信息、第三指示信息、第四指示信息的值都为1,待处理接口文档中的接口方法可以为get、接口路径为path1为例,则基于接口路径和接口方法,可以生成接口函数的标识为get_path1_function,接口请求数据的类型模板标识为get_path1__Request Data,接口请求参数对应的类型模板标识为get_path1__Request Query,接口响应数据对应的类型模板标识为get_path1__Response Data,接口请求报头对应的类型模板标识为get_path1__Requestheaders,然后可以将各标识进行拼接,得到接口基础模板字符串。
然后,可以将接口基础模板字符串和接口请求数据的类型模板字符串、接口请求参数的类型模板字符串、接口响应数据的类型模板字符串、接口请求报头的类型模板字符串进行拼接,进而可以得到待处理接口文档对应的接口代码字符串。其中,各字符串的拼接顺序可以根据需求进行自定义,本示例性实施方式对此不做特殊限定。
在步骤S720中,将所述接口代码字符串写入到接口代码文件中,以生成所述待处理接口文档对应的接口代码。
在本公开示例性的实施方式中,接口代码为第二类型编程语言,如Typescript语言。对应的接口代码文件可以包括Typescript类型的文件。
可以将拼接后得到的接口代码字符串写入到Typescript文件中,进而生成待处理接口文档对应的接口代码。
需要说明的是,预设字段还可以包括其它的字段,例如接口测试地址字段等其它的接口信息对应的字段,以保证预设字段中可以包含生成接口函数所需的完整信息。对于其它字段,可以将其作为基础配置信息,进而可以基于基础配置信息生成包含其它接口信息的接口基础模板字符串。
通过本公开的实施方式,可以将对Javascript的嵌套对象进行深入的分析,每一个属性树的节点都会对Javascript对象的每一个字段进行描述(比如,字段的类型,字段的名字,字段是否是可选等),进而通过解析对应的属性树,可以生成Typescript的完整类型定义,进而自动的生成待处理接口文档对应的Typescript接口代码,进而提高前端开发效率。又由于生成的属性树的每个节点对Javascript对象的每一个字段都进行描述,进而可以保证生成的接口代码的完整性和准确性。
进一步的,本公开示例性实施方式中还提供了一种代码生成系统,图8示意性示出了根据本公开的一个实施例的接口代码生成系统的结构图。参考图8,该代码生成系统可以包括预处理器810、类型编译器820、以及模板生成器830。其中:
预处理器810用于对查询到的待处理接口文档进行预处理,以得到待处理接口文档的基础配置信息。
其中,基础配置信息可以包括上述的第一指示信息、第二指示信息、第三指示信息、第四指示信息、接口方法、接口路径中的一种或多种。同时基础配置信息还可以包括接口测试地址等其它的待处理接口文档中包含的接口信息。
图8中的81表示可以对接口文档进行解析,以得到接口的基础信息(如接口方法、接口路径等),即对应81中的parseBaseinfo(),还可以解析得到接口文档中是否存在接口请求参数,即对应81中的parseQuery()、是否存在接口请求数据,即对应81中的parseData()、是否存在接口响应数据即对应81中的parseResDate()。
举例而言,可以根据用户选择或输入的接口文档标识,例如接口函数名称,在接口文档数据库中查询对应的接口文档,并将查询到的接口文档发送至预处理器810。预处理器810可以根据接收的原始的接口文档数据,在预处理器810中的预设基础配置对象config中添加布尔类型的属性值,如,添加是否存在请求数据、是否存在请求参数、是否存在相应数据、是否存在请求报头等布尔类型的属性值,若存在对应的接口信息,则将该接口信息对应的布尔类型的属性值配置为1,若不存在,将该接口信息对应的布尔类型的属性值配置为0。该属性值可以用于指示模板生成器830是否生成对应的类型模板字符串,同时也可以用于指示类型编译器是否生成接口请数据、接口请求参数、接口响应数据对应的属性树,即多叉树。
同时,预处理器810还可以通过接口文档中的接口方法和接口路径生成最终要生成的接口代码对应的接口函数的名字、接口请求数据类型定义模板的名字、接口请求参数类型定义模板的名字、接口响应数据类型定义模板的名字、接口请求报头类型定义的名字等。
进一步的,预处理器810还可以将接口文档中无用的信息进行剔除,例如将请求数据或请求参数中无用的属性进行剔除。其中,无用的信息可以根据需求和实际场景自定义确定,本示例性实施方式对此不做特殊限定。具体的,可以将有用的信息配置为预设字段,然后将待处理接口文档中的预设字段保留,其它字段删除,从而达到剔除无用信息的目的。
此外,由于接口请求报头中的字段一般不存在嵌套现象,即接口请求报头的字段对应的Javascript数据对象中每个属性的值类型一般都为基础类型。因此,预处理器还可以对接口请求报头的字段进行预处理,如执行上述的图5中的步骤,以生成接口请求报头的类型模板字符串。
预处理结束后,预处理器810可以将得到的基础配置信息config,如上述的布尔类型的属性值、接口请求报头的类型模板字符串、接口函数的名字、接口请求数据的类型模板标识、接口响应数据的类型模板标识、接口请求参数的类型模板标识、接口请求报头的类型模板标识、接口方法(method)、接口路径(Path)、主机接口(host)等发送给模板生成器830,同时还可以将添加的布尔类型的属性值发送给类型编译器820,以用于指示类型编译器是否生成对应的接口信息的多叉树。图8中的预处理器810给类型编译器820发送的信息中,Query代表接口请求参数对应的布尔类型的属性值,data代表接口请求数据对应的布尔类型的属性值,ResData代表接口响应数据对应的布尔类型的属性值。
类型编译器820,用于根据接收到的基础配置信息,生成接口信息的多叉树。
举例而言,类型编译器820可以根据接收到的接口请求数据对应的布尔类型的属性值确定是否生成接口请求数据对应的多叉树,根据接收到的接口请求参数对应的布尔类型的属性值确定是否生成接口请求参数对应的多叉树,根据接收到的接口响应数据对应的布尔类型的属性值确定是否生成接口响应数据对应的多叉树。具体的,如果对应的布尔类型的属性值为1,则表明待处理接口文档中存在该接口信息字段,则可以生成该接口信息对应的多叉树,如果对应的布尔类型的属性值为0,则表明不生成接口信息对应的多叉树。如,若预处理器810传递给类型编译器的数据为Query=1,则类型编译器820对接口请求参数对应的Javascript对象进行解析,得到接口请求参数对应的多叉树。
图8的82中的“parseQuery To Type(query):Node Tree”表示类型编译器可以将接口请求参数对应的Javascript对象解析为接口请求参数的类型对应的多叉树;“parseData To Type(data):Node Tree”表示类型编译器可以将接口请求参数对应的Javascript对象解析为接口请求数据的类型对应的多叉树;“parseResData To Type(resData):Node Tree”表示类型编译器可以将接口响应数据对应的Javascript对象解析为接口响应数据的类型对应的多叉树。
在根据Query、data、resData的值分别确定生成接口请求数据、接口请求参数、接口响应数据对应的多叉树时,类型编译器820可以分别将接口文档中的接口请求数据、接口请求参数、接口响应数据转换为其对应的Javascript数据对象,然后分别解析对应的Javascript数据对象所包含的数属性的值类型,基于不同的值类型,将每一个属性都封装为一个节点(Node),该节点中会有4个属性,即key、type、required、children。具体的,如果属性的值类型为上述的基础类型,则可以直接将该属性封装为一个节点,封装后的节点的key为属性名称、type为属性的值类型、required根据属性是否必须确定、children为空。如果属性的值类型为数组类型或对象类型,对于值类型为数组类型的属性而言,则使用递归算法,将数组中的每一个元素都封装为一个节点,同时将每个元素对应的节点放在该数组对应的节点的children属性中,即值类型为数组的属性对应的节点的key为数组名称、type为数组、required根据属性是否必须确定、children为数组中每个元素对应的节点。对于值类型为对象类型的属性而言,则同样也可以采用递归算法,将对象的每一个属性封装为一个节点,且作为值类型为对象类型的属性的子节点。进而,层层关联最终可以形成一个多叉树的树形的数据结构。
模板生成器830,用于对生成的多叉树进行解析,以得到类型模板字符串,并基于模板类型字符串生成接口文档对应的接口代码。
举例而言,模板生成器830可以将预处理器发送的接口文档对应的基础配置信息中的接口函数名字、接口请求数据的类型模板名字、接口请求参数的类型模板名字、接口响应数据的类型模板名字、接口请求报头的类型模板名字、接口方法、接口路径、接口请求报头等对应的字符串进行拼接,生成Typescript接口基础模板字符串。
同时,模板生成器830还可以根据预处理器810发送的布尔类型的属性值,使用深度优先遍历算法对类型编译器生成的多叉树进行解析。具体的,在解析的当前节点为基础类型时,则直接生成当前节点对应的字符串,在解析到的当前节点为数组类型或对象类型时,则使用递归的方法解析数组类型或对象类型的节点的每个子节点,以生成当前节点和每个子节点对应的字符串,进而最终将Javascript对象完整的转换为Typescript的类型定义,以得到各个多叉树对应的类型模板字符串。
模板生成器830可以将Typescript接口基础模板字符串和各个多叉树对应的类型模板字符串进行拼接和格式化后写入到Typescript文件中,以生成接口代码文件。
如图8的83中的“parseBaseinfo To Tpl(baseinfo):string”代表模板生成器830可以通过解析接收的基础配置信息,生成对应的接口基础模板字符串,“parseData TypeTo tpl(types):string”代表模板生成器830可以通过解析多叉树,得到类型模板字符串,“splice Tpl(tpl...):string”代表可以拼接基础模板字符串和类型模板字符串,进而生成接口代码文件。
生成接口代码文件后,客户端可以通过代码生成系统提供的下载接口,下载对应的接口代码文件,直接进行使用。
进一步的,基于上述的代码生成方法或代码生成系统可以实现一个接口管理平台,通过该接口管理平台可以统一管理后台接口,同时也可以直接将后台接口解析为可供前端调用的API接口函数(即直接生可供前端调用的接口代码)。图9示意性示出了根据本公开的一个实施例的接口管理平台的显示界面。
下面,结合图9对接口代码的生成过程进行说明。
用户可以在图9所示的接口管理平台的界面中选择需要生成代码的接口函数,如选择接口名称为“AAAA”的接口函数,选中之后,可以触发图9所示界面中的“生成接口函数”控件91。用户触发控件91后,接口管理平台可以生成如图10所示的界面,给界面可以是一个弹窗界面,然后用户可以在图10所示的弹窗界面中选择需要导出的接口函数的类型,接口管理平台提供了两种可直接导出的接口函数类型,即分别为Typescript接口函数和Javascript接口函数。
当用户在图10所示的界面中选择导出Typescript API函数,且点击图10中所示的“确定”控件时,接口管理平台即可执行上述的图3所示的各个步骤,解析API接口文档,生成接口代码文件。同时,接口管理平台会生成如图11所示的界面,以向用户提示导出进度,且为用户提供下载接口,如用户在导出完成后,可以通过点击图11中的“下载文件”控件直接将生成的接口代码文件下载至本地,这样,用户在前端开发时可以直接将代码复制到项目中使用,提高前端开发的效率。
在图11中“xxxxxx”为生成的接口代码文件的标识。其中,在生成的是TypescriptAPI函数时,接口代码文件的标识可以通过“时间戳+_ts_api_function+一段随机数”确定,在生成的是Javascript API函数时,接口代码文件的标识可以通过“时间戳+_js_api_function+一段随机数”确定,当然也可以根据其它的信息生成接口代码文件的标识,本示例性实施方式对此不做特殊限定。
进一步的,本公开还提供了一种代码生成装置,参考图12所示,该代码生成装置1200可以包括:数据对象获取模板1210、属性树生成模块1220、属性树解析模块1230、接口代码生成模块1240。其中:
数据对象获取模块1210,被配置为获取待处理接口文档中的接口信息对应的数据对象;
属性树生成模块1220,被配置为针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;
属性树解析模块1230,被配置为对所述接口信息对应的属性树进行解析,以得到所述接口信息的类型模板字符串;
接口代码生成模块1240,被配置为根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码。
在本公开示例性的实施方式中,基于前述实施例,所述属性树生成模块1220还被具体配置为:
根据所述接口信息生成所述属性树中的根节点;
在所述属性的值类型为基础类型时,将所述值类型为基础类型的属性封装为所述根节点的子节点,其中,所述基础类型包括字符串、数值、布尔中的一种或多种;
在所述属性的值类型为对象时,将所述值类型为对象类型的属性封装为所述根节点的子节点,且将所述值类型为对象类型的属性中包含的每个子属性封装为所述值类型为对象类型的属性的子节点;
在所述的属性的值类型为数组时,将所述值类型为数组类型的属性封装为所述根节点的子节点,且将所述值类型为数组类型的属性中的每个元素封装为所述值类型为数组类型的属性的子节点;
基于所述根节点和所述子节点,生成所述接口信息对应的属性树。
在本公开示例性的实施方式中,基于前述实施例,所述属性树解析模块1230还被具体配置为:
对所述接口信息的属性树中的每个节点进行解析,在解析到的当前节点的值类型为对象或数组时,对所述值类型为对象或数组的节点包含的每个子节点进行解析,以得到所述接口信息的类型模板字符串。
在本公开示例性的实施方式中,基于前述实施例,所述将所述属性封装为节点,包括:
基于所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点。
在本公开示例性的实施方式中,基于前述实施例,所述数据对象获取模块1210还被具体配置为:
根据预设字段确定出待处理接口文档的基础配置信息,并获取所述基础配置信息中所包含的指示信息,所述指示信息用于确定是否生成接口信息的类型模板字符串;
在根据所述指示信息确定生成接口信息的类型模板字符串时,获取待处理接口文档中的接口信息对应的数据对象。
在本公开示例性的实施方式中,基于前述实施例,所述获取所述基础配置信息中所包含的指示信息,包括:
根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,其中,每种类型的接口信息对应的指示信息用于确定是否生成当前类型的接口信息的类型模板字符串。
在本公开示例性的实施方式中,基于前述实施例,所述接口代码生成模块1240还被具体配置为:
所述根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码,包括:
基于生成的一种或多种类型的接口信息的类型模板字符串,拼接每种类型的接口信息对应的类型模板字符串,得到所述待处理接口文档对应的接口代码字符串;
将所述接口代码字符串写入到接口代码文件中,以生成所述待处理接口文档对应的接口代码。
在本公开示例性的实施方式中,基于前述实施例,所述基础配置信息包括接口路径和/或接口方法,所述接口路径和/或所述接口方法用于生成所述待处理接口文档对应的接口基础模板字符串;
所述拼接每种类型的接口信息对应的类型模板字符串,包括:
拼接每种类型的接口信息对应的类型模板字符串与所述接口基础模板字符串,得到所述待处理接口文档对应的接口代码字符串。
在本公开示例性的实施方式中,基于前述实施例,所述接口基础模板字符串通过以下方式生成:
根据基础配置信息中的接口方法和/或接口路径,确定出所述待处理接口文档对应的接口函数标识;
在根据所述指示信息确定生成接口信息的类型模板字符串时,根据所述接口方法和/或接口路径,确定出所述接口信息的类型模板标识;
拼接所述接口函数标识与所述接口信息的类型模板标识,生成所述接口基础模板字符串。
在本公开示例性的实施方式中,基于前述实施例,所述预设字段包括接口请求数据字段、接口请求参数字段、接口响应数据字段、接口请求报头字段中的一种或多种;
所述根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,包括:
在所述预设字段包括所述接口请求数据字段时,根据所述待处理接口文档中是否存在接口请求数据,获取第一指示信息,所述第一指示信息用于确定是否生成所述接口请求数据的类型模板字符串;
在所述预设字段包括所述接口请求参数字段时,根据所述待处理接口文档中是否存在接口请求参数,获取第二指示信息,所述第二指示信息用于确定是否生成所述接口请求参数的类型模板字符串;
在所述预设字段包括所述接口响应数据字段时,根据所述待处理接口文档中是否存在接口响应数据,获取第三指示信息,所述第三指示信息用于确定是否生成所述接口响应数据的类型模板字符串;
在所述预设字段包括所述接口请求报头字段时,根据所述待处理接口文档中是否存在接口请求报头,获取第四指示信息,所述第四指示信息用于确定是否生成所述接口请求报头的类型模板字符串。
在本公开示例性的实施方式中,基于前述实施例,上述的属性树生成模块1220还可以被配置为:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,针对所述接口请求数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求数据对应的第一属性树;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,针对所述接口请求参数对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求参数对应的第二属性树;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,针对所述接口响应数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口响应数据对应的第三属性树。
在本公开示例性的实施方式中,基于前述实施例,上述的属性树解析模块1230还可以被配置为:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,对所述第一属性树进行解析,得到所述接口请求数据的类型模板字符串;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,对所述第二属性树进行解析,得到所述接口请求参数的类型模板字符串;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,对所述第三属性树进行解析,得到所述接口响应数据的类型模板字符串。
在本公开示例性的实施方式中,基于前述实施例,所述代码生成装置还包括接口请报头的类型模板字符串生成模块,该模块被具体配置为:
在根据所述第四指示信息确定生成所述接口请求报头的类型模板字符串时,针对所述接口请求报头对应的数据对象所包含的每个属性,根据所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点;
基于每个属性对应的节点,生成所述接口请求报头对应的属性数组;
对所述属性数组进行解析,得到所述接口请求报头的类型模板字符串。
上述代码生成装置1200中各模块或单元的具体细节已经在对应的代码生成方法中进行了详细的描述,因此此处不再赘述。
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3所示的各个步骤等。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
此外,本公开在一个示例性实施例中,还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (15)
1.一种代码生成方法,其特征在于,包括:
获取待处理接口文档中的接口信息对应的数据对象;
针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;其中,所述根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树,包括:根据所述接口信息生成所述属性树中的根节点;在所述属性的值类型为基础类型时,将所述值类型为基础类型的属性封装为所述根节点的子节点,其中,所述基础类型包括字符串、数值、布尔中的一种或多种;在所述属性的值类型为对象时,将所述值类型为对象类型的属性封装为所述根节点的子节点,且将所述值类型为对象类型的属性中包含的每个子属性封装为所述值类型为对象类型的属性的子节点;在所述属性的值类型为数组时,将所述值类型为数组类型的属性封装为所述根节点的子节点,且将所述值类型为数组类型的属性中的每个元素封装为所述值类型为数组类型的属性的子节点;基于所述根节点和所述子节点,生成所述接口信息对应的属性树;
对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串;
根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码;
其中,所述接口信息对应的数据对象为第一类型编程语言,所述接口代码为第二类型编程语言。
2.根据权利要求1所述的代码生成方法,其特征在于,所述对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串,包括:
对所述接口信息的属性树中的每个节点进行解析,在解析到的当前节点的值类型为对象或数组时,对所述值类型为对象或数组的节点包含的每个子节点进行解析,以得到所述接口信息的类型模板字符串。
3.根据权利要求1至2中任一项所述的代码生成方法,其特征在于,所述将所述属性封装为节点,包括:
基于所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点,所述必要性标识为是否为可选。
4.根据权利要求1所述的代码生成方法,其特征在于,所述获取待处理接口文档中的接口信息对应的数据对象,包括:
根据预设字段确定出待处理接口文档的基础配置信息,并获取所述基础配置信息中所包含的指示信息,所述指示信息用于确定是否生成接口信息的类型模板字符串;
在根据所述指示信息确定生成接口信息的类型模板字符串时,获取待处理接口文档中的接口信息对应的数据对象。
5.根据权利要求4所述的代码生成方法,其特征在于,所述获取所述基础配置信息中所包含的指示信息,包括:
根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,其中,每种类型的接口信息对应的指示信息用于确定是否生成当前类型的接口信息的类型模板字符串。
6.根据权利要求5所述的代码生成方法,其特征在于,所述根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码,包括:
基于生成的一种或多种类型的接口信息的类型模板字符串,拼接每种类型的接口信息对应的类型模板字符串,得到所述待处理接口文档对应的接口代码字符串;
将所述接口代码字符串写入到接口代码文件中,以生成所述待处理接口文档对应的接口代码。
7.根据权利要求6所述的代码生成方法,其特征在于,所述基础配置信息包括接口路径和/或接口方法,所述接口路径和/或所述接口方法用于生成所述待处理接口文档对应的接口基础模板字符串;
所述拼接每种类型的接口信息对应的类型模板字符串,包括:
拼接每种类型的接口信息对应的类型模板字符串与所述接口基础模板字符串,得到所述待处理接口文档对应的接口代码字符串。
8.根据权利要求7所述的代码生成方法,其特征在于,所述接口基础模板字符串通过以下方式生成:
根据基础配置信息中的接口方法和/或接口路径,确定出所述待处理接口文档对应的接口函数标识;
在根据所述指示信息确定生成接口信息的类型模板字符串时,根据所述接口方法和/或接口路径,确定出所述接口信息的类型模板标识;
拼接所述接口函数标识与所述接口信息的类型模板标识,生成所述接口基础模板字符串。
9.根据权利要求5所述的代码生成方法,其特征在于,所述预设字段包括接口请求数据字段、接口请求参数字段、接口响应数据字段、接口请求报头字段中的一种或多种;
所述根据预设字段包括的接口信息字段的类型,获取所述基础配置信息中所包含的每种类型的接口信息对应的指示信息,包括:
在所述预设字段包括所述接口请求数据字段时,根据所述待处理接口文档中是否存在接口请求数据,获取第一指示信息,所述第一指示信息用于确定是否生成所述接口请求数据的类型模板字符串;
在所述预设字段包括所述接口请求参数字段时,根据所述待处理接口文档中是否存在接口请求参数,获取第二指示信息,所述第二指示信息用于确定是否生成所述接口请求参数的类型模板字符串;
在所述预设字段包括所述接口响应数据字段时,根据所述待处理接口文档中是否存在接口响应数据,获取第三指示信息,所述第三指示信息用于确定是否生成所述接口响应数据的类型模板字符串;
在所述预设字段包括所述接口请求报头字段时,根据所述待处理接口文档中是否存在接口请求报头,获取第四指示信息,所述第四指示信息用于确定是否生成所述接口请求报头的类型模板字符串。
10.根据权利要求9所述的代码生成方法,其特征在于,所述针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树,包括:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,针对所述接口请求数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求数据对应的第一属性树;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,针对所述接口请求参数对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口请求参数对应的第二属性树;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,针对所述接口响应数据对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口响应数据对应的第三属性树。
11.根据权利要求10所述的代码生成方法,其特征在于,所述对所述接口信息对应的属性树进行解析,得到所述接口信息的类型模板字符串,包括:
在根据所述第一指示信息确定生成所述接口请求数据的类型模板字符串时,对所述第一属性树进行解析,得到所述接口请求数据的类型模板字符串;
在根据所述第二指示信息确定生成所述接口请求参数的类型模板字符串时,对所述第二属性树进行解析,得到所述接口请求参数的类型模板字符串;
在根据所述第三指示信息确定生成所述接口响应数据的类型模板字符串时,对所述第三属性树进行解析,得到所述接口响应数据的类型模板字符串。
12.根据权利要求9所述的代码生成方法,其特征在于,所述方法还包括:
在根据所述第四指示信息确定生成所述接口请求报头的类型模板字符串时,针对所述接口请求报头对应的数据对象所包含的每个属性,根据所述属性的标识、所述属性的值类型、所述属性的必要性标识、所述属性的子节点,将所述属性封装为节点,所述必要性标识为是否为可选;
基于每个属性对应的节点,生成所述接口请求报头对应的属性数组;
对所述属性数组进行解析,得到所述接口请求报头的类型模板字符串。
13.一种代码生成装置,其特征在于,包括:
数据对象获取模块,被配置为获取待处理接口文档中的接口信息对应的数据对象;
属性树生成模块,被配置为针对所述接口信息对应的数据对象所包含的每个属性,根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树;其中,所述根据所述属性的值类型,将所述属性封装为节点,以生成所述接口信息对应的属性树,包括:根据所述接口信息生成所述属性树中的根节点;在所述属性的值类型为基础类型时,将所述值类型为基础类型的属性封装为所述根节点的子节点,其中,所述基础类型包括字符串、数值、布尔中的一种或多种;在所述属性的值类型为对象时,将所述值类型为对象类型的属性封装为所述根节点的子节点,且将所述值类型为对象类型的属性中包含的每个子属性封装为所述值类型为对象类型的属性的子节点;在所述属性的值类型为数组时,将所述值类型为数组类型的属性封装为所述根节点的子节点,且将所述值类型为数组类型的属性中的每个元素封装为所述值类型为数组类型的属性的子节点;基于所述根节点和所述子节点,生成所述接口信息对应的属性树;
属性树解析模块,被配置为对所述接口信息对应的属性树进行解析,以得到所述接口信息的类型模板字符串;
接口代码生成模块,被配置为根据所述接口信息的类型模板字符串,生成所述待处理接口文档对应的接口代码;
其中,所述接口信息对应的数据对象为第一类型编程语言,所述接口代码为第二类型编程语言。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的代码生成方法。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至12中任一项所述的代码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110657306.4A CN113238740B (zh) | 2021-06-11 | 2021-06-11 | 代码生成方法、代码生成装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110657306.4A CN113238740B (zh) | 2021-06-11 | 2021-06-11 | 代码生成方法、代码生成装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113238740A CN113238740A (zh) | 2021-08-10 |
CN113238740B true CN113238740B (zh) | 2023-10-27 |
Family
ID=77139780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110657306.4A Active CN113238740B (zh) | 2021-06-11 | 2021-06-11 | 代码生成方法、代码生成装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238740B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742008B (zh) * | 2021-09-13 | 2024-04-02 | 挂号网(杭州)科技有限公司 | 接口调用方法、装置、电子设备及存储介质 |
US11941382B2 (en) | 2022-02-07 | 2024-03-26 | Red Hat, Inc. | User customizable compiler attributes for code checking |
CN116339703B (zh) * | 2023-05-24 | 2023-08-15 | 北京蓝天航空科技股份有限公司 | 总线接口代码生成方法、装置、电子设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262783A (zh) * | 2019-05-22 | 2019-09-20 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
WO2020173128A1 (zh) * | 2019-02-27 | 2020-09-03 | 平安科技(深圳)有限公司 | 软件开发工具包的生成方法、装置及终端设备 |
-
2021
- 2021-06-11 CN CN202110657306.4A patent/CN113238740B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020173128A1 (zh) * | 2019-02-27 | 2020-09-03 | 平安科技(深圳)有限公司 | 软件开发工具包的生成方法、装置及终端设备 |
CN110262783A (zh) * | 2019-05-22 | 2019-09-20 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
Non-Patent Citations (3)
Title |
---|
amp ; M".3GPP tsg_ran\WG3_Iu.1999,(TSGR3_06),全文. * |
Siemens / Italtel.R3-99961 "Info Model and State Management Functions for NodeB logical O amp * |
基于DOM的XML解析技术在构件描述中的应用;李斌;孔祥艳;;无线电通信技术(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113238740A (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113238740B (zh) | 代码生成方法、代码生成装置、存储介质及电子设备 | |
US20210049137A1 (en) | Building and managing data-processign attributes for modeled data sources | |
US20220035600A1 (en) | API Specification Generation | |
US8838653B2 (en) | Translating an object-oriented data model to a YANG data model | |
US11269694B2 (en) | Automated API code generation | |
EP3502896A1 (en) | Generation of an adapters configuration user interface | |
Merle et al. | A precise metamodel for open cloud computing interface | |
US7257647B2 (en) | Development environment platform using message type mapping for converting message and providing information between systems having different data structures | |
CN112187558B (zh) | 数据校验方法、装置、电子设备 | |
US10885087B2 (en) | Cognitive automation tool | |
CN110543297A (zh) | 用于生成源码的方法和装置 | |
CN111581920A (zh) | 文档转换方法、装置、设备及计算机存储介质 | |
CN114116065B (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
CN113419789A (zh) | 数据模型脚本的生成方法和装置 | |
CN113504900A (zh) | 一种编程语言转换方法和装置 | |
CN113326030A (zh) | 一种业务请求的处理方法和装置 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN113836454A (zh) | 一种内容展示页面的展示方法、装置、介质及设备 | |
CN116360735A (zh) | 一种表单生成方法、装置、设备和介质 | |
CN110471708B (zh) | 基于可重用组件的配置项获取的方法及装置 | |
CN113688134A (zh) | 基于多维数据的可视化变量管理方法、系统及设备 | |
CN113050987A (zh) | 一种接口文档的生成方法、装置、存储介质及电子设备 | |
CN113050935A (zh) | 生成混入对象的方法、装置、计算设备及计算机可读存储介质 | |
CN113515285A (zh) | 生成实时计算逻辑数据的方法和装置 | |
CN112579151A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |