CN116501303B - Api代码自动生成方法与装置 - Google Patents
Api代码自动生成方法与装置 Download PDFInfo
- Publication number
- CN116501303B CN116501303B CN202310751867.XA CN202310751867A CN116501303B CN 116501303 B CN116501303 B CN 116501303B CN 202310751867 A CN202310751867 A CN 202310751867A CN 116501303 B CN116501303 B CN 116501303B
- Authority
- CN
- China
- Prior art keywords
- code
- typescript
- api
- generated
- request
- 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 29
- 230000006870 function Effects 0.000 claims description 64
- 238000013499 data model Methods 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 11
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification 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/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请实施例涉及程序开发技术领域,本申请实施例提供一种API代码自动生成方法及装置,读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;根据所述JavaScript对象和代码模板生成TypeScript语法树;创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript代码字符串;将所述TypeScript代码字符串写入到代码文件中后,得到API代码。从而实现API代码的自动生成,提升API代码的编写效率,降低错误率。
Description
技术领域
本申请各实施例属程序开发技术领域,尤其涉及一种API代码自动生成方法与装置。
背景技术
API(Application Programming Interface:应用程序接口)是一组规定了如何通过编程访问特定软件组件或网络服务的约定,其允许不同的应用程序之间进行交互和数据传输,使得软件组件和服务之间的通信更加方便和可靠。通常,API可以在不同的编程语言和平台之间进行交互,以实现应用程序的互操作性和集成,常见的API类型包括Web API、操作系统API和数据库API。无论哪一种类型的API,都需要编写API代码来实现。现有技术中,编写API代码往往是非常繁琐的工作,需要对每一个API进行单独的编写,且需要定义API请求参数和响应参数的类型,以致于编写API代码会耗费开发者大量时间,而且容易产生遗漏,误写,从而导致 API 调用错误,造成程序出错。
综上所述,现有API代码的编写存在效率低,易出错等技术问题。
发明内容
针对上述现有技术存在的不足,本申请提供一种API代码自动生成方法与装置,以提升API代码的编写效率,降低错误率。
第一方面,本申请实施例提供了一种API代码自动生成方法,所述方法包括:
读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;
根据所述JavaScript对象和代码模板生成TypeScript语法树;
创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript 代码字符串;
将所述TypeScript代码字符串写入到代码文件中后,得到API代码。
作为本申请一优选实施例,所述将所述JSON文件转换为JavaScript对象,包括:
通过fs.readFileSync文件读取模块读取JSON文件,并使用JavaScript 编程语言的JSON.parse内置方法将读取的JSON文件转化为JavaScript 对象。
作为本申请一优选实施例,所述根据所述JavaScript对象和代码模板生成TypeScript语法树,包括:
根据所述代码模板构建生成TypeScript语法树函数;
遍历所有JavaScript对象,获取所述JavaScript对象的调用参数;
通过所述调用参数调用生成TypeScript语法树函数,以生成TypeScript语法树。
作为本申请一优选实施例,所述根据所述代码模板构建生成TypeScript语法树函数,包括:
根据待生成API代码生成代码模版,其中,待生成API代码包括请求体、响应体和请求函数,所述请求体和响应体共用一个代码模板, 所述请求函数使用一个代码模板;
构建用于生成TypeScript语法树函数的逻辑,包括:
读取待JavaScript对象的调用参数的变量中的请求体和响应体,所述JavaScript对象的调用参数的变量中的请求体和响应体中包含数据模型或用于获取数据模型链接;
将所述数据模型放入待生成API代码中的请求体和响应体共用的代码模板中,并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树;
用JavaScript对象的调用参数中的变量替换待生成API代码的请求函数使用的代码模板中的对应字段后,生成待生成API代码中的请求函数的语法树;
将生成待生成API代码的请求体和响应体的语法树和待生成API代码中的请求函数的语法树合并成一个数组以得到最终的语法树。
作为本申请一优选实施例,所述并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树,包括:
所述数据模型的属性包括第一类型和第二类型;
当所述数据模型的属性为第一类型时,则通过与所述第一类型对应的符号进行替代;
当所述数据模型的属性为第二类型时,则通过递归方式调用数据模型的处理逻辑对数据模型进行处理,以生成待生成API代码的请求体和响应体的语法树。
作为本申请一优选实施例,所述根据待生成API代码生成代码模版,包括:
对待生成API代码解析,获取解析后待生成API代码的所有要素;
根据所述待生成API代码所有要素的类型,使用不同的方式表达待生成API代码,从而制作出对应的代码模板。
作为本申请一优选实施例,所述遍历所有JavaScript对象,包括:
所述JavaScript对象包含待生成API代码的数据结构,所述JavaScript对象包括schema属性和paths属性;
将所述schema属性作为参数传入TypeScript语法树函数;
对所述paths属性对应的接口组成的数组进行遍历,将所述数组的每一个接口作为参数,传入TypeScript语法树函数,以便生成TypeScript语法树。
作为本申请一优选实施例,所述创建代码生成器,包括:
从依赖库中引入TypeScript编程语言创建代码生成器函数;
调用所述代码生成器函数以创建代码生成器。
与现有技术相比,本申请实施例提供一种代码自动生成方法,读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;根据所述JavaScript对象和代码模板生成TypeScript语法树;创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript 代码字符串;将所述TypeScript代码字符串写入到代码文件中后,得到API代码。从而实现API代码的自动生成,提升API代码的编写效率,降低错误率。
第二方面,本申请实施例还提供了一种API代码自动生成装置,包括:
读取模块,用于读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;
生成模块,用于根据所述JavaScript对象和代码模板生成TypeScript语法树;
创建模块,用于创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript 代码字符串;
写入模块,用于将所述TypeScript代码字符串写入到代码文件中后,得到API代码。
与现有技术相比,本申请实施例提供了一种API代码自动生成装置的有益效果与第一方面提供的有益效果相同,在此不再赘述。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。后文将参照附图以示例性而非限制性的方式详细描述本申请的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分,本领域技术人员应该理解的是,这些附图未必是按比例绘制的,在附图中:
图1是本申请实施例提供的一种API代码自动生成方法的流程示意图;
图2是本申请实施例提供的一种API代码自动生成装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
现有技术中,应用程序接口(Application Programming Interface,简称:API),又称为应用编程接口,编写API代码往往是非常繁琐的工作,需要对每一个API进行单独的编写,且需要定义API请求参数和响应参数的类型,以致于编写API代码会耗费开发者大量时间,而且容易产生遗漏,误写,从而导致 API 调用错误,造成程序出错。
TypeScript是一种开源编程语言,是JavaScript的超集,支持静态类型检查、类、接口、泛型等面向对象的特性,为JavaScript开发大型应用程序提供更好的可维护性、可读性和可靠性,使得代码更加健壮、易于调试和维护。另外,TypeScript通过添加静态类型检查等功能,提供了一种更加安全、可靠的编程方式。通过使用TypeScript,开发人员可以在编写代码时就发现并修复潜在的错误,而不是等到代码运行时才发现问题。此外,TypeScript还可以提供更好的代码提示、自动补全和重构支持,以及更好的IDE集成和文档生成等功能,使得开发人员可以更快地编写高质量的代码。
OpenAPI规范是一种广泛使用的API描述规范,提供了标准的接口描述格式,可以使API文档更加一致和规范化,降低开发者的学习成本。另外,诸如Swagger UI、Postman等开源工具都支持OpenAPI规范,可以自动生成API文档、客户端SDK、服务端代码等,从而提高开发效率和降低出错率。
JSON文件是一种通用的轻量级数据交换格式,易于阅读和编辑,方便修改API描述信息。同时,JSON文件是一种文本格式,方便传输和存储,不需要额外的解析和编码过程。另外,JSON文件能在多种编程语言中解析和操作,提高开发效率。将JSON文件中的数据结构转化为抽象语法结构的树形表示,方便开发人员进行解析和分析,理解JSON数据结构的层次结构和属性,减少出错的可能性,提高代码质量。
为了解决上述技术问题,本申请实施例提供一种代码自动生成方法,读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;根据所述JavaScript对象和代码模板生成TypeScript语法树;创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript 代码字符串;将所述TypeScript代码字符串写入到代码文件中后,得到API代码,从而实现API代码的自动生成,提升API代码的编写效率,降低错误率。
如图1所示,第一方面,本申请实施例还提供了一种API代码自动生成方法,所述方法包括:
步骤S01,读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;
需要说明的是,本实施例提供的代码自动生成方法可以运行在计算机设备端。
所述将所述JSON文件转换为JavaScript对象,包括:
通过fs.readFileSync文件读取模块读取JSON文件,并使用JavaScript 编程语言的JSON.parse内置方法将读取的JSON文件转化为JavaScript 对象。
所述将所述JSON文件转换为JavaScript对象中的数据结构,从而更容易地在程序中使用和操作API。同时,所述将所述JSON文件转换为JavaScript对象的数据结构可以减少手写代码的错误,提高代码质量。另外,因为语法树是源代码的抽象语法结构的树形表示,能够帮助开发人员更好地理解源代码的结构和语法,方便对源代码进行解析和分析,减少手写代码的工作量,提高开发效率,帮助更好地理解源代码的结构和语法,从而减少出错的可能性,提高代码质量。
步骤S02,根据所述JavaScript对象和代码模板生成TypeScript语法树;
需要说明的是,所述根据所述JavaScript对象和代码模板生成TypeScript语法树,包括:
根据所述代码模板构建生成TypeScript语法树函数;
遍历所有的JavaScript对象,获取所述JavaScript对象的调用参数;
通过所述调用参数调用生成TypeScript语法树函数,以生成TypeScript语法树。
需要说明的是,在具体生成TypeScript语法树需要TypeScript语法树函数,也就是说,生成以生成TypeScript语法树的过程实际上就是调用函数,执行函数内部逻辑过程。
具体的,所述根据所述代码模板构建生成TypeScript语法树的函数,包括:
根据待生成API代码生成代码模版,其中,待生成API代码包括请求体、响应体和请求函数,所述请求体和响应体共用一个代码模板, 所述请求函数使用一个代码模板;
构建用于生成TypeScript语法树函数的逻辑,包括:
读取待JavaScript对象的调用参数的变量中的请求体和响应体,所述JavaScript对象的调用参数的变量中的请求体和响应体中包含数据模型或用于获取数据模型链接;
将所述数据模型放入待生成API代码中的请求体和响应体共用的代码模板中,并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树;
用JavaScript对象的调用参数中的变量替换待生成API代码的请求函数使用的代码模板中的对应字段后,生成待生成API代码中的请求函数的语法树;
将生成待生成API代码的请求体和响应体的语法树和待生成API代码中的请求函数的语法树合并成一个数组以得到最终的语法树。
需要说明的是,上述构建用于生成TypeScript语法树函数的逻辑主要通过4个逻辑实现构建TypeScript语法树函数,其中,逻辑一主要是读取读取待JavaScript对象的调用参数的变量中的请求体和响应体;逻辑二主要是将所述数据模型放入待生成API代码中的请求体和响应体共用的代码模板中,并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树;逻辑三主要是用JavaScript对象的调用参数中的变量替换待生成API代码的请求函数使用的代码模板中的对应字段后,生成待生成API代码中的请求函数的语法树;逻辑四主要是将将生成待生成API代码的请求体和响应体的语法树和待生成API代码中的请求函数的语法树合并成一个数组以得到最终的语法树。通过执行构建用于生成TypeScript语法树函数的逻辑可以生成TypeScript语法树。该TypeScript语法树可以表示整个API代码的所有细节,包括接口定义、请求参数、响应体、错误处理等方面。利用TypeScript语法树,可以生成具体的TypeScript代码,进行代码的自动生成、验证、文档生成、代码分析等。
所述根据待生成API代码生成代码模版,包括:
对待生成API代码解析,获取解析后待生成API代码的所有要素;
根据所述待生成API代码所有要素的类型,使用不同的方式表达待生成API代码,从而制作出对应的代码模板。
具体的,待生成API代码的所有要素包括:注释、关键字、变量、运算符号等进行整理,根据要素的不同类型,使用不同的方式进行表达,如果要素为注释,则用与注释对应的方式进行表达;如果要素为关键字,则用与关键字对应的方式进行表达;如果要素为变量,则用与变量对应的方式进行表达;如果要素为运算符号,则用与运算符号对应的方式进行表达,等等以此类推将待生成API代码的所有要素用对应的方式进行表达,从而制作出对应的代码模板。
以下以一个例子说明根据待生成的代码
待生成API代码:
function sum(a,b) => {
return a + b
}
待生成API代码模板:
factory.createFunctionDeclaration(
undefined,
undefined,
factory.createIdentifier("sum"),
undefined,
[
factory.createParameterDeclaration(
undefined,
undefined,
factory.createIdentifier("a"),
undefined,
undefined,
undefined
),
factory.createParameterDeclaration(
undefined,
undefined,
factory.createIdentifier("b"),
undefined,
undefined,
undefined
)
],
undefined,
factory.createBlock(
[],
False
)
)
具体的,在执行所述对所述数据模型的每一个属性,进行分类处理,包括:
所述数据模型的属性包括第一类型和第二类型;
当所述数据模型的属性为第一类型时,则通过与所述第一类型对应的符号进行替代;
如果所述数据模型的属性为第二类型时,则通过递归方式调用数据模型的处理逻辑对数据模型进行处理,以生成待生成API代码的请求体和响应体的语法树。
需要说明的是,第一类型属性为基础属性,基础属性可以为数字,字符串和布尔值,则用与第一类型属性对应的number数字、string字符串、布尔值进行替代;第二类型属性为复杂类型,则通过递归方式调用数据模型的处理逻辑对数据模型进行处理,以生成请求体和响应体代码的语法树。递归方式实际上就是递归算法,递归算法(recursionalgorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言(如Scheme)中习惯用递归来实现循环。
所述遍历所有的JavaScript对象,包括:
所述JavaScript对象是包含API数据的数据结构,所述JavaScript对象包括schema属性和paths属性;
将所述schema属性作为参数传入TypeScript语法树函数;
对所述paths属性对应的接口组成的数组进行遍历,将所述数组的每一个接口作为参数,传入TypeScript语法树函数,以便生成TypeScript语法树。
需要说明的是,schema属性是API消息体数据模型的对象。
步骤S03,创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript 代码字符串;
需要说明的是,代码生成器主要用于将语法树转换为代码的工具。
所述创建代码生成器,包括:
从依赖库中引入typescript编程语言的创建代码生成器函数;
调用所述代码生成器函数以创建代码生成器。
步骤S04,将所述TypeScript代码字符串写入到代码文件中后,得到API代码。
需要说明的是,在API代码自动生成方法的各个步骤都进行了错误捕获,当运行出错的时候,可以及时得到错误信息。
如图2所示,第二方面,本申请实施例还提供了一种API代码自动生成装置,包括:
读取模块21,用于读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;
生成模块22,用于根据所述JavaScript对象和代码模板生成TypeScript语法树;
创建模块23,用于创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript 代码字符串;
写入模块24,用于将所述TypeScript代码字符串写入到代码文件中后,得到API代码。
与现有技术相比,本申请实施例提供了一种API代码自动生成装置的有益效果与第一方面提供的有益效果相同,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (6)
1.一种API代码自动生成方法,其特征在于,所述方法包括:
读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;
根据所述JavaScript对象和代码模板生成TypeScript语法树;
创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript代码字符串;
将所述TypeScript代码字符串写入到代码文件中后,得到API代码;
根据所述代码模板构建生成TypeScript语法树函数,包括:
根据待生成API代码生成代码模版,其中,待生成API代码包括请求体、响应体和请求函数,所述请求体和响应体共用一个代码模板,所述请求函数使用一个代码模板;
构建用于生成TypeScript语法树函数的逻辑,包括:
读取JavaScript对象的调用参数的变量中的请求体和响应体,所述JavaScript对象的调用参数的变量中的请求体和响应体中包含数据模型或用于获取数据模型链接;
将所述数据模型放入待生成API代码中的请求体和响应体共用的代码模板中,并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树;
用JavaScript对象的调用参数中的变量替换待生成API代码的请求函数使用的代码模板中的对应字段后,生成待生成API代码中的请求函数的语法树;
将生成待生成API代码的请求体和响应体的语法树和待生成API代码中的请求函数的语法树合并成一个数组以得到最终的语法树;
所述JavaScript对象包含待生成API代码的数据结构,所述JavaScript对象包括schema属性和paths属性;
将所述schema属性作为参数传入TypeScript语法树函数;
对所述paths属性对应的接口组成的数组进行遍历,将所述数组的每一个接口作为参数,传入TypeScript语法树函数,以便生成TypeScript语法树;
所述并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树,包括:
所述数据模型的属性包括第一类型和第二类型;
当所述数据模型的属性为第一类型时,则通过与所述第一类型对应的符号进行替代;
当所述数据模型的属性为第二类型时,则通过递归方式调用数据模型的处理逻辑对数据模型进行处理,以生成待生成API代码的请求体和响应体的语法树。
2.如权利要求1所述的API代码自动生成方法,其特征在于,所述将所述JSON文件转换为JavaScript对象,包括:
通过fs.readFileSync文件读取模块读取JSON文件,并使用JavaScript编程语言的JSON.parse内置方法将读取的JSON文件转化为JavaScript对象。
3.如权利要求1所述的API代码自动生成方法,其特征在于,所述根据所述JavaScript对象和代码模板生成TypeScript语法树,包括:
根据所述代码模板构建生成TypeScript语法树函数;
遍历所有JavaScript对象,获取所述JavaScript对象的调用参数;
通过所述调用参数调用生成TypeScript语法树函数,以生成TypeScript语法树。
4.如权利要求1所述的API代码自动生成方法,其特征在于,所述根据待生成API代码生成代码模版,包括:
对待生成API代码解析,获取解析后待生成API代码的所有要素;
根据所述待生成API代码所有要素的类型,使用不同的方式表达待生成API代码,从而制作出对应的代码模板。
5.如权利要求1所述的API代码自动生成方法,其特征在于,所述创建代码生成器,包括:
从依赖库中引入TypeScript编程语言创建代码生成器函数;
调用所述代码生成器函数以创建代码生成器。
6.一种API代码自动生成装置,其特征在于,包括:
读取模块,用于读取遵守OpenAPI规范的JSON文件,将所述JSON文件转换为JavaScript对象;
生成模块,用于根据所述JavaScript对象和代码模板生成TypeScript语法树;
创建模块,用于创建代码生成器,并将TypeScript语法树作为参数传入到代码生成器中,得到TypeScript代码字符串;
写入模块,用于将所述TypeScript代码字符串写入到代码文件中后,得到API代码;
根据所述代码模板构建生成TypeScript语法树函数,包括:
根据待生成API代码生成代码模版,其中,待生成API代码包括请求体、响应体和请求函数,所述请求体和响应体共用一个代码模板,所述请求函数使用一个代码模板;
构建用于生成TypeScript语法树函数的逻辑,包括:
读取JavaScript对象的调用参数的变量中的请求体和响应体,所述JavaScript对象的调用参数的变量中的请求体和响应体中包含数据模型或用于获取数据模型链接;
将所述数据模型放入待生成API代码中的请求体和响应体共用的代码模板中,并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树;
用JavaScript对象的调用参数中的变量替换待生成API代码的请求函数使用的代码模板中的对应字段后,生成待生成API代码中的请求函数的语法树;
将生成待生成API代码的请求体和响应体的语法树和待生成API代码中的请求函数的语法树合并成一个数组以得到最终的语法树;
所述JavaScript对象包含待生成API代码的数据结构,所述JavaScript对象包括schema属性和paths属性;
将所述schema属性作为参数传入TypeScript语法树函数;
对所述paths属性对应的接口组成的数组进行遍历,将所述数组的每一个接口作为参数,传入TypeScript语法树函数,以便生成TypeScript语法树;
所述并对所述数据模型的属性进行分类处理以生成待生成API代码的请求体和响应体的语法树,包括:
所述数据模型的属性包括第一类型和第二类型;
当所述数据模型的属性为第一类型时,则通过与所述第一类型对应的符号进行替代;
当所述数据模型的属性为第二类型时,则通过递归方式调用数据模型的处理逻辑对数据模型进行处理,以生成待生成API代码的请求体和响应体的语法树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310751867.XA CN116501303B (zh) | 2023-06-25 | 2023-06-25 | Api代码自动生成方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310751867.XA CN116501303B (zh) | 2023-06-25 | 2023-06-25 | Api代码自动生成方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116501303A CN116501303A (zh) | 2023-07-28 |
CN116501303B true CN116501303B (zh) | 2023-11-14 |
Family
ID=87318703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310751867.XA Active CN116501303B (zh) | 2023-06-25 | 2023-06-25 | Api代码自动生成方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501303B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262783A (zh) * | 2019-05-22 | 2019-09-20 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
CN111338637A (zh) * | 2020-02-26 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种代码生成方法及装置 |
CN111625224A (zh) * | 2020-05-28 | 2020-09-04 | 北京百度网讯科技有限公司 | 代码生成方法、装置、设备及存储介质 |
CN111722873A (zh) * | 2020-07-23 | 2020-09-29 | 腾讯科技(深圳)有限公司 | 代码重构方法、装置、设备及介质 |
CN112231068A (zh) * | 2020-12-18 | 2021-01-15 | 浙江太美医疗科技股份有限公司 | 使用领域专用语言的自定义逻辑方法、系统和可读介质 |
CN112667274A (zh) * | 2019-10-15 | 2021-04-16 | 北京地平线机器人技术研发有限公司 | 生成应用程序编程接口文档的方法、装置及电子设备 |
CN113157256A (zh) * | 2021-03-25 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 接口代码的生成方法、装置、电子设备、存储介质及产品 |
CN113778897A (zh) * | 2021-09-26 | 2021-12-10 | 网易有道信息技术(江苏)有限公司 | 接口的自动测试方法、装置、设备及存储介质 |
CN114816356A (zh) * | 2022-03-25 | 2022-07-29 | 达而观数据(成都)有限公司 | 基于接口文档生成http请求代码的系统及方法 |
CN115113854A (zh) * | 2021-03-23 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 接口文档生成方法、装置、设备及计算机可读存储介质 |
CN115509514A (zh) * | 2022-11-23 | 2022-12-23 | 济南浪潮数据技术有限公司 | 一种前端数据模拟方法、装置、设备及介质 |
CN116149671A (zh) * | 2023-04-23 | 2023-05-23 | 中国科学院软件研究所 | 用于翻译智能合约语言的方法和装置、电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015147656A2 (en) * | 2014-03-26 | 2015-10-01 | Auckland Uniservices Limited | Automatic process and system for software development kit for application programming interface |
US9465590B2 (en) * | 2014-07-07 | 2016-10-11 | Sap Se | Code generation framework for application program interface for model |
US10545730B2 (en) * | 2018-05-07 | 2020-01-28 | Red Hat, Inc. | Automatically generating code for application programming interfaces |
-
2023
- 2023-06-25 CN CN202310751867.XA patent/CN116501303B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262783A (zh) * | 2019-05-22 | 2019-09-20 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
CN112667274A (zh) * | 2019-10-15 | 2021-04-16 | 北京地平线机器人技术研发有限公司 | 生成应用程序编程接口文档的方法、装置及电子设备 |
CN111338637A (zh) * | 2020-02-26 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种代码生成方法及装置 |
CN111625224A (zh) * | 2020-05-28 | 2020-09-04 | 北京百度网讯科技有限公司 | 代码生成方法、装置、设备及存储介质 |
CN111722873A (zh) * | 2020-07-23 | 2020-09-29 | 腾讯科技(深圳)有限公司 | 代码重构方法、装置、设备及介质 |
CN112231068A (zh) * | 2020-12-18 | 2021-01-15 | 浙江太美医疗科技股份有限公司 | 使用领域专用语言的自定义逻辑方法、系统和可读介质 |
CN115113854A (zh) * | 2021-03-23 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 接口文档生成方法、装置、设备及计算机可读存储介质 |
CN113157256A (zh) * | 2021-03-25 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 接口代码的生成方法、装置、电子设备、存储介质及产品 |
CN113778897A (zh) * | 2021-09-26 | 2021-12-10 | 网易有道信息技术(江苏)有限公司 | 接口的自动测试方法、装置、设备及存储介质 |
CN114816356A (zh) * | 2022-03-25 | 2022-07-29 | 达而观数据(成都)有限公司 | 基于接口文档生成http请求代码的系统及方法 |
CN115509514A (zh) * | 2022-11-23 | 2022-12-23 | 济南浪潮数据技术有限公司 | 一种前端数据模拟方法、装置、设备及介质 |
CN116149671A (zh) * | 2023-04-23 | 2023-05-23 | 中国科学院软件研究所 | 用于翻译智能合约语言的方法和装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116501303A (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196719B (zh) | 一种基于自然语言处理的业务规则生成方法与系统 | |
EP3433732B1 (en) | Converting visual diagrams into code | |
US8286132B2 (en) | Comparing and merging structured documents syntactically and semantically | |
CN111488174B (zh) | 应用程序接口文档的生成方法、装置、计算机设备及介质 | |
CN108595171B (zh) | 对象的模型生成方法、装置、设备及存储介质 | |
CN110688307B (zh) | JavaScript代码检测方法、装置、设备和存储介质 | |
US20060282439A1 (en) | Apparatus, system, and method for processing hierarchical data in disparate data repositories | |
US7958487B2 (en) | Apparatus, system, and method for modifying an integration software template | |
CN111324619B (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN112328226B (zh) | 一种嵌入式系统自动化测试代码生成方法及装置 | |
CN111581920A (zh) | 文档转换方法、装置、设备及计算机存储介质 | |
CN111736840A (zh) | 小程序应用的编译方法、运行方法、存储介质及电子设备 | |
CN112416788B (zh) | 一种分层规范的Web应用UI自动化测试方法 | |
CN111666072A (zh) | 一种软件代码及文档机器人方法 | |
CN113655996A (zh) | 一种基于需求模型的企业级系统生成方法 | |
CN116501303B (zh) | Api代码自动生成方法与装置 | |
CN115202663A (zh) | 一种数据处理方法、装置和存储介质 | |
US20220075796A1 (en) | Architecture for data map converters | |
CN110471646B (zh) | 一种通过人工配置实现复杂程序逻辑的方法 | |
CN114816356A (zh) | 基于接口文档生成http请求代码的系统及方法 | |
CN113703739A (zh) | 基于omiga引擎的跨语言融合计算方法、系统及终端 | |
US10635416B2 (en) | Property filtering | |
Pawade et al. | LITERATURE SURVEY ON AUTOMATIC CODE GENERATION TECHNIQUES. | |
CN113703769B (zh) | 一种cli命令执行方法及相关装置 | |
CN115794119B (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 |