CN108108162A - 应用程序编程接口生成方法及装置 - Google Patents
应用程序编程接口生成方法及装置 Download PDFInfo
- Publication number
- CN108108162A CN108108162A CN201611050070.3A CN201611050070A CN108108162A CN 108108162 A CN108108162 A CN 108108162A CN 201611050070 A CN201611050070 A CN 201611050070A CN 108108162 A CN108108162 A CN 108108162A
- Authority
- CN
- China
- Prior art keywords
- parameter
- function
- api
- protocol
- document
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明是关于一种应用程序编程接口生成方法,属于软件开发技术领域。所述方法包括:获取应用程序编程接口API的协议文档;获取该协议文档中包含的参数信息,并确定API的函数模版;根据该参数信息以及函数模版生成该API。该方法预先设置API的函数模版,在开发API时,开发人员只需要输入API的协议文档,软件开发工具即可以自动根据协议文档获取API的参数信息,并结合参数信息以及API的函数模版自动生成API,不需要开发人员人工编写API的代码,极大的降低了API开发的人工成本,缩短开发时间,从而提高软件开发效率。
Description
技术领域
本发明涉及软件开发技术领域,特别涉及一种应用程序编程接口生成方法及装置。
背景技术
API(Application Programming Interface,应用程序编程接口)是后台***中预先定义的函数集合,其可以提供应用程序与开发人员基于某软件或硬件来访问一组例程的能力。
在后台***的开发过程当中,API的开发是其中极为重要的一部分。在现有技术中,API的开发主要通过开发人员的人工编写来完成。比如,开发人员对照预先设置或者编写好的API的协议文档来编写相应的API中各部分函数的代码。
目前的API都由开发人员人工编写,而编写API的代码需要消耗大量的人力成本,且需要耗费一定的开发时间,导致软件的开发效率较低。
发明内容
为了解决现有技术中人工编写API的代码需要消耗大量的人力成本和开发时间,影响软件开发效率的问题,本发明实施例提供了一种应用程序编程接口生成方法及装置,技术方案如下:
第一方面,提供了一种应用程序编程接口生成方法,所述方法包括:
获取应用程序编程接口API的协议文档;
获取所述协议文档中包含的参数信息,并确定所述API的函数模版,所述参数信息包括至少一个参数以及所述至少一个参数的类型,或者,所述参数信息包括所述至少一个参数、所述至少一个参数的类型以及所述至少一个参数之间的嵌套关系;
根据所述参数信息以及所述函数模版生成所述API。
第二方面,提供了一种应用程序编程接口生成装置,所述装置包括:
第一获取模块,用于获取应用程序编程接口API的协议文档;
第二获取模块,用于获取所述协议文档中包含的参数信息,所述参数信息包括至少一个参数以及所述至少一个参数的类型,或者,所述参数信息包括所述至少一个参数、所述至少一个参数的类型以及所述至少一个参数之间的嵌套关系;
模版确定模块,用于确定所述API的函数模版;
生成模块,用于根据所述参数信息以及所述函数模版生成所述API。
本发明实施例提供的技术方案可以包括以下有益效果:
预先设置API的函数模版,在开发API时,开发人员只需要输入API的协议文档,软件开发工具即可以自动根据协议文档获取API的参数信息,并结合参数信息以及API的函数模版自动生成API,不需要开发人员人工编写API的代码,极大的降低了API开发的人工成本,缩短开发时间,从而提高软件开发效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本发明所示方案的实现流程示意图;
图2是根据一示例性实施例示出的一种应用程序编程接口生成方法的流程图;
图3是图2所示实施例涉及的一种API生成过程的示意图;
图4是根据一示例性实施例示出的一种应用程序编程接口生成方法的流程图;
图5是图4所示实施例涉及的一种参数选择界面的示意图;
图6是根据一示例性实施例示出的一种应用程序编程接口生成装置的框图;
图7是根据一示例性实施例提供的电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明实施例所示的方案可以应用于各类软件开发平台设备中。比如,本方案可以应用于基于个人电脑或者工作站等运行有软件开发工具的电子设备中。
在本发明实施例所示的方案中,在开发API时,软件开发工具只需要获取待开发的API的协议文档,自动获取该协议文档中包含的参数信息,该参数信息包括至少一个参数以及该至少一个参数的类型,或者,该参数信息包括该至少一个参数、该至少一个参数的类型以及该至少一个参数之间的嵌套关系;根据该参数信息以及预设的函数模版生成该API。
其中,API的协议文档是一个用于描述API的输入参数以及该API的实现逻辑的文档,该协议文档中的内容按照指定的协议格式进行组织,本发明实施例中的软件开发工具可以根据协议文档的内容自动提取协议文档中包含的,自动生成API所需的参数信息。其中,该参数信息中的至少一个参数指的是调用API时需要输入的参数。
请参考图1,其示出了本发明所示方案的实现流程示意图。如图1所示,开发人员在开发API时,通过软件开发工具选择打开API的协议文档,软件开发工具将该协议文档读入内存,并分析获得协议文档中包含的,该API对应的参数信息,由于在API中,除了与参数相关的部分函数之外,其它的部分的函数代码大多是相同或类似的,因此,在本发明实施例中,可以预先设置API的函数模版,软件开发工具在获取到参数信息之后,即可以基于参数信息以及预设的函数模版进行API中各个部分的函数代码生成,并对生成的各个部分的函数代码进行组合,最后获得API。在此过程中,开发人员只需要提供API的协议文档即可,极大的简化了开发人员人工编写代码的工作量,缩短API的开发时间,提高开发效率。
通常情况下,一个API可以由调用函数和被调用函数两部分组成,其中,调用函数用于实现API的调用逻辑,比如调用指定功能,或者对调用结果进行解析等,被调用函数用于在调用函数的调用下实现对参数的字节序互转、序列化以及反序列化等功能。在本发明实施例中,API中的调用函数可以通过API的参数信息套用预设的函数模版来生成,而被调用函数可以根据API的参数信息中的参数以及参数类型直接生成,或者,通过协议文档对应的编译工具直接生成。具体的API生成方法可以如下面的图2所示。
图2是根据一示例性实施例示出的一种应用程序编程接口生成方法的流程图,该方法可以用于运行有软件开发工具的电子设备中。如图2所示,该应用程序编程接口生成方法可以包括如下几个步骤:
步骤201,获取应用程序编程接口API的协议文档。
开发人员可以向运行有软件开发工具的电子设备中输入或者存储协议文档,并通过软件开发工具打开协议文档,此时,软件开发工具将协议文档读入内存中。
具体的,在本发明实施例中,API的协议文档的协议格式可以分为定长协议格式和不定长协议格式,其中定长协议格式具体可以是结构体(struct)格式,不定长协议格式具体可以是PB(protocol buffers,协议缓存)格式、TLV(Type-length-value,类型-长度-值)格式或者PDU(Protocol Data Unit,协议数据单元)格式等。
比如,当协议格式是结构体格式时,该协议文档可以如下:
或者,当协议格式是PB格式时,该协议文档可以如下:
步骤202,识别该协议文档的协议格式,确定开发语言类型,并确定API的调用函数的函数名。
在识别协议格式时,软件开发工具可以通过分析协议文档的协议头来识别协议格式。比如,若软件开发工具解析出协议头中的“struct”字段,则可以确定该协议文件的协议格式为结构体格式。
本发明实施例所示的方案还支持按照不同的开发语言类型(比如C++、Java以及Python等)来生成相应的API。具体的,在确定生成的API的开发语言类型时,软件开发工具可以展示一个开发语言选择界面,该开发语言选择界面中包含软件开发工具支持的各种开发语言的类型,开发人员可以在该开发语言选择界面中选择一种或者多种开发语言,软件开发工具根据开发人员对开发语言选择界面中的开发语言类型的选择操作确定后续生成API所对应的开发语言类型。
或者,在另一种可能的实现方式中,软件开发工具也可以将默认的开发语言类型确定为后续生成API所对应的开发语言类型。
另外,不同的API,即便对应的参数相同,其所实现的功能也可能不同,而API的功能通常可以由API中的调用函数的函数名来体现,因此,在本发明实施例中,软件开发工具还需要确定待生成的API的调用函数的函数名。
其中,该API的调用函数的函数名可以由开发人员进行设置,比如,软件开发工具可以向开发人员展示一个函数名设置界面,由软件开发人员在该函数名设置界面中设置或者填写待生成的API的调用函数的函数名。
具体的,软件开发工具在确定出上述协议格式和开发语言类型后,查询该协议格式和开发语言类型所对应的API的调用函数的各种函数名,并将查询到的各种函数名展示在函数名设置界面中,开发人员在选择函数名时,通过在函数名设置界面中的选择(比如勾选或者下拉菜单点击选择)来设置函数名,软件开发工具根据开发人员在函数名设置界面中的选择操作确定待生成的API的调用函数的函数名。
步骤203,根据该开发语言类型以及该函数名确定函数模版。
在本发明实施例中,软件开发工具可以预先设置若干的函数模版,不同的开发语言以及调用函数的函数名,所对应的函数模版也不相同,软件开发工具在确定出API所对应的开发语言类型以及调用函数的函数名时,可以根据该开发语言类型以及函数名查询确定对应的函数模版。
步骤204,根据该协议文档的协议格式获取该协议文档中包含的参数信息。
其中,该参数信息包括至少一个参数以及该至少一个参数的类型,或者,该参数信息包括该至少一个参数、该至少一个参数的类型以及该至少一个参数之间的嵌套关系。
在本发明实施例中,协议文档中包含待生成的API对应的各种参数以及参数的类型,在生成API时,软件开发工具可以获取协议文档中的至少一个参数以及该至少一个参数的类型。
可选的,若软件开发工具获取的至少一种参数之间还存在嵌套关系,则在生成API时,软件开发工具还需要进一步获取该至少一种参数之间的嵌套关系。
可选的,对于不同的协议格式的协议文档,软件开发工具获取协议文档中的参数信息的方法也不相同。
当该协议文档的协议格式为定长协议格式(比如结构体格式)时,软件开发工具可以对该协议文档进行语法分析,获得该参数信息。
比如,对于协议体格式的协议文档,软件开发工具可以逐字扫描协议文档中的各个字段,通过对字段进行语法分析来获取协议文档中的至少一个参数、该至少一个参数的类型以及可能存在的该至少一个参数之间的嵌套关系。
当该协议文档的协议格式为不定长协议格式(比如PB格式)时,软件开发工具可以通过该不定长协议格式对应的编译工具对该协议文档进行编译,获得该协议文档的编译文件;从该编译文件中提取该参数信息。
比如,对于PB格式的协议文档,软件开发工具可以先调用PB格式对应的编译工具对协议文档进行编译,根据编译结果来获取参数信息。具体的,PB格式的协议文档可以是一个Proto文件,对于该Proto文件,软件开发工具可以调用Proto文件对应的编译工具,对该Proto文件生成编译后的文件,即.pb.h文件和.pb.cc文件。其中,上述.pb.h文件是协议文档对应的API相关的类的头文件,而.pb.cc文件则是.pb.h文件中定义的类的实现文件,软件开发工具可以从.pb.h文件和.pb.cc文件中提取出该协议文档中至少一个参数、该至少一个参数的类型以及可能存在的该至少一个参数之间的嵌套关系。
步骤205,根据该参数信息以及函数模版生成该API。
在本发明实施例中,在生成该API时,软件开发工具可以生成与该至少一个参数以及该至少一个参数的类型相对应的被调用函数,并根据该参数信息,基于该API的函数模版生成该API的调用函数,最后将被调用函数和调用函数组合生成API。
对于API的调用函数,除了与参数相关的部分函数代码之外,其它部分的代码大多是相同或类似的,本发明实施例所示的方案,可以预先设置好与调用函数相对应的函数模版,在生成API时,若上述参数信息中的至少一个参数之间不存在嵌套关系,则根据该至少一个参数、该至少一个参数的类型以及上述函数模版组合生成API的调用函数,若上述参数信息中的至少一个参数之间存在嵌套关系,则根据该至少一个参数、该至少一个参数的类型、该至少一个参数之间的嵌套关系以及上述函数模版组合生成API的调用函数。
具体,上述的函数模版可以用于指示与上述参数信息相关的参数声明语句和参数赋值语句,以及与参数信息无关的固定语句,并且,该函数模版还用于指示参数声明语句、参数赋值语句、固定语句以及函数调用语句之间的位置关系;其中,函数调用语句是用于对被调用函数进行调用的语句。在根据对应的参数信息以及模版组合生成API的调用函数时,软件开发工具可以根据上述参数信息(即上述至少一个参数,至少一个参数的类型,可选的,还可能包括至少一个参数之间的嵌套关系)补齐参数声明语句以及参数赋值语句,并按照协议文档的协议格式生成相应的函数调用语句,并按照参数声明语句、参数赋值语句、固定语句以及函数调用语句之间的位置关系组合生成API的调用函数。
在本发明实施例中,软件开发工具可以生成与至少一个参数以及该至少一个参数的类型相对应的被调用函数。而对于不同协议格式的协议文档,其对应的API的被调用函数以及被调用函数的生成方法也不相同。当协议文档的协议格式为定长协议格式时,软件开发工具可以根据至少一个参数以及该至少一个参数的类型,按照该协议格式对应的被调用函数格式生成该被调用函数;当该协议文档的协议格式为不定长协议格式时,软件开发工具可以通过编译工具对该协议文档进行编译,获得该协议文档的编译文件,从该编译文件中提取该被调用函数。
具体的,对于定长协议格式(比如结构体格式)的协议文档,其对应的API的被调用函数为字节序互转函数。由于字节序互转函数的格式(即上述被调用函数格式)通常都是固定的,比如,下面提供了一种字节序互转函数的示例:
在上述字节序互转函数的示例中,usLength和ulUin是参数,ntohs和ntohl与取决于对应的参数类型,其余部分代码都是固定的格式,因此,在本发明实施例中,软件开发工具只需要获取到API的协议文档中包含的至少一个参数以及至少一个参数的类型,即可以根据该至少一个参数以及至少一个参数的类型,按照固定的格式生成该字节序互转函数,并将该字节序互转函数作为API的被调用函数。
而对于不定长格式(比如PB格式)的协议文档,其对应的API的被调用函数为序列化和反序列化函数,且该序列化和反序列函数可以通过编译工具对该协议文档进行编译来直接获得。比如,以该协议文档的格式为PB格式为例,软件开发工具可以调用Proto文件(即协议文档)对应的编译工具,对该Proto文件进行编译以生成编译后的文件,即.pb.h文件和.pb.cc文件,并从生成的.pb.h文件和.pb.cc文件直接提取SerializeToArray()函数和ParseFromArray()函数(即序列化和反序列化函数)。
具体的,请参考图3,其示出了本发明实施例涉及的一种API生成过程的示意图,其中,开发人员向运行有软件开发工具的电子设备中录入或者存储入API的协议文档,并通过软件开发工具打开协议文档,此时,软件开发工具将协议文档的内容读取入内存。软件开发工具分析协议文档的协议格式,并按照开发人员指示或者按照默认设置确定开发语言类型和函数名,一方面,软件开发工具根据分析确定的协议格式、开发语言类型和API的调用函数的函数名确定出API的函数模版,另一方面,软件开发工具按照协议格式,获取协议文档中的参数信息(至少包括参数和参数类型,可选包括参数之间的嵌套关系),结合参数信息中的参数以及参数类型,根据固定格式或者编译工具生成API的被调用函数,并结合参数信息中的参数、参数类型(可选包括参数之间的嵌套关系)以及API的调用函数模版生成API的调用函数,最后将API的被调用函数和调用函数进行组合,生成API。
可选的,由于不定长协议格式的协议本身的特殊性,其包含的参数的长度并不是固定的,而在API的调用函数中,为了便于实现对参数进行序列化和反序列化,长度固定的参数的对应的代码语句可以部署在长度不固定的参数的对应的代码语句之前,因此,当上述协议文档同时包含定长协议格式的协议文档和不定长协议格式的协议文档时,软件开发工具可以先基于定长协议格式(比如结构体格式)的协议文档生成对应在该API的调用函数中的函数代码,后基于不定长协议格式(比如PB格式)的协议文档生成对应在该API的调用函数中的函数代码,最后综合计算得到包的总长度,并按照该总长度以及定长协议格式字段的长度进行序列化。
比如,以协议文档的格式包括结构体格式和PB格式为例,软件开发工具将多个协议文档读入内存后,确定各个协议文档的协议类型;若各个协议文档的协议类型都是结构体格式,则按照结构体格式对应的函数生成方式生成各个协议文档各自对应在该API的调用函数中的函数代码;若各个协议文档的协议类型都是PB格式,则按照PB格式对应的函数生成方式生成各个协议文档各自对应在该API的调用函数中的函数代码;若各个协议文档中部分文档为协议格式为结构体格式,部分文档为协议格式为PB格式,则首先生成结构体格式对应的协议文档在该API的调用函数中的函数代码,并在各个结构体格式对应的协议文档在该API的调用函数中的函数代码生成完成之后,再生成PB格式对应的协议文档在该API的调用函数中的函数代码。
综上所述,本发明实施例所示的方法,通过预先设置与API的协议格式、开发语言以及调用函数的函数名相对应的调用函数模版,在开发API时,开发人员只需要输入API的协议文档,软件开发工具即可以自动根据协议文档获取API的参数信息,并结合参数信息以及对应的函数模版自动生成API中的调用函数和被调用函数,不需要开发人员人工编写函数代码,极大的降低了API开发的人工成本,缩短开发时间,从而提高软件开发效率。
另外,本发明实施例所示的方法,当协议文档同时包含定长协议格式的协议文档和不定长协议格式的协议文档时,先基于定长协议格式的协议文档生成对应在API的调用函数中的函数代码,再基于不定长协议格式的协议文档生成对应在该API的调用函数中的函数代码,从而能够实现按照不同的协议格式的协议文档来生成同一个API。
图4是根据一示例性实施例示出的一种应用程序编程接口生成方法的流程图,该方法可以用于运行有软件开发工具的电子设备中。如图4所示,该应用程序编程接口生成方法可以包括如下几个步骤:
步骤401,获取应用程序编程接口API的协议文档。
步骤402,识别该协议文档的协议格式,确定开发语言类型,并确定API的调用函数的函数名。
步骤403,根据该开发语言类型以及该函数名确定函数模版。
上述步骤401至步骤403的实现过程可以参考图2对应实施例中的步骤201至步骤203,此处不再赘述。
步骤404,展示参数选择界面,该参数选择界面中包含该协议文档中包含的各个参数。
步骤405,根据对该参数选择界面中的该至少一个参数的选择操作获取该协议文档中包含的参数信息。
其中,该参数信息包括至少一个参数以及该至少一个参数的类型,或者,该参数信息包括该至少一个参数、该至少一个参数的类型以及该至少一个参数之间的嵌套关系。
一个API的协议文档中通常包含很多个参数,在实际应用中,开发人员基于一个API的协议文档来开发API时,可能只需要按照其中的部分参数进行API的开发。对此,本发明实施例所示的方案,可以支持开发人员选择部分参数,并按照选择的部分参数自动生成API。比如,软件开发工具根据协议格式确定协议文档中的各个参数后,可以弹出一个参数选择界面,该参数选择界面中包含上述各个参数,开发人员可以从中选择部分参数作为生成API的至少一个参数,可选的,上述参数选择界面还可以对应包含各个参数的类型,可选的,若上述各个参数之间存在嵌套关系,该参数选择界面还可以对应各个参数之间的嵌套关系来展示各个参数。
具体比如,请参考图5,其示出了本发明实施例涉及的一种参数选择界面的示意图,如图5所示,参数选择界面501中包含若干个参数502,图5中显示为参数A、参数B、参数C、参数D以及参数E,其中,参数A嵌套参数B和参数C,参数D和参数E为相互独立的参数,每个参数对应一个勾选项503,其中,各个勾选项503默认全部勾选,开发人员可以选择取消其中部分参数对应的勾选项的勾选,比如,在图5中,开发人员选择取消参数E的勾选,在开发人员选择取消部分或不取消勾选后,参数选择界面中勾选项处于勾选状态的参数即为开发人员选择的至少一个参数(即图5中的参数A至参数D)。该参数选择界面501中还包含一个确定按钮504,开发人员点击该确定按钮504后,软件开发工具将参数A至参数D确定为上述至少一个参数,并获取参数A至参数D的类型以及相互之间的嵌套关系。
步骤406,根据该参数信息以及该函数模版生成该API。
该步骤406的实现过程可以参考上述图2所示实施例中的步骤205下的描述,此处不再赘述。
综上所述,本发明实施例所示的方法,通过预先设置与API的协议格式、开发语言以及调用函数的函数名相对应的函数模版,在开发API时,开发人员只需要输入API的协议文档,软件开发工具即可以自动根据协议文档获取API的参数信息,并结合参数信息以及函数模版自动生成API中的调用函数和被调用函数,不需要开发人员人工编写函数代码,极大的降低了API开发的人工成本,缩短开发时间,从而提高软件开发效率。
另外,本发明实施例所示的方法,还可以支持由开发人员选择协议文档中的部分参数来生成对应的API,提高了API自动生成的灵活性。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图6,其示出了一示例性实施例示出的一种应用程序编程接口生成装置的框图。该应用程序编程接口生成装置可以通过硬件或者软硬结合的方式实现为电子设备的全部或者部分。该应用程序编程接口生成装置可以包括:
第一获取模块601,用于获取应用程序编程接口API的协议文档;
第二获取模块602,用于获取所述协议文档中包含的参数信息,所述参数信息包括至少一个参数以及所述至少一个参数的类型,或者,所述参数信息包括所述至少一个参数、所述至少一个参数的类型以及所述至少一个参数之间的嵌套关系;
模版确定模块603,用于确定所述API的函数模版;
生成模块604,用于根据所述参数信息以及所述函数模版生成所述API。
可选的,所述生成模块,包括:
第一生成单元,用于根据所述参数信息,基于所述函数模版生成所述API的调用函数,所述调用函数用于实现所述API的调用逻辑;
第二生成单元,用于生成与所述至少一个参数以及所述至少一个参数的类型相对应的被调用函数,所述被调用函数用于被所述调用函数调用以实现对参数的字节序互转、序列化以及反序列化中的至少一种;
组合单元,用于将所述调用函数和所述被调用函数组合生成所述API。
可选的,所述模版确定模块,包括:
格式识别单元,用于识别所述协议文档的协议格式,所述协议格式为定长协议格式或不定长协议格式;
类型确定单元,用于确定开发语言类型;
函数名确定单元,用于确定所述API的调用函数的函数名;
模版确定单元,用于根据所述协议格式、所述开发语言类型以及所述函数名确定所述函数模版。
可选的,所述函数名确定单元,包括:
界面展示子单元,用于展示函数名设置界面;
确定子单元,用于根据在所述函数名设置界面中执行的设置操作确定所述函数名。
可选的,所述第二获取模块,包括:
语法分析单元,用于当所述协议文档的协议格式为结构体格式时,对所述协议文档进行语法分析,获得所述参数信息;
编译单元,用于当所述协议文档的协议格式为PB格式时,调用编译工具对所述协议文档进行编译,获得所述协议文档的编译文件;
提取单元,用于从所述编译单元获得的所述编译文件中提取所述参数信息。
可选的,所述第二获取模块,包括:
界面展示单元,用于展示参数选择界面,所述参数选择界面中包含所述协议文档中包含的各个参数;
获取单元,用于根据对所述参数选择界面中的所述至少一个参数的选择操作,获取所述参数信息。
可选的,所述第二生成单元,包括:
第一生成子单元,用于当所述协议文档的协议格式为定长协议格式时,根据所述至少一个参数以及所述至少一个参数的类型,按照所述协议格式对应的被调用函数格式生成所述被调用函数;
编译子单元,用于当所述协议文档的协议格式为不定长协议格式时,通过编译工具对所述协议文档进行编译,获得所述协议文档的编译文件,从所述编译文件中提取所述被调用函数。
综上所述,本发明实施例所示的装置,通过预先设置与API的参数信息(包括参数和参数的类型,可选包括参数之间的嵌套关系)相对应的函数模版,在开发API时,开发人员只需要输入API的协议文档,软件开发工具即可以自动根据协议文档获取API的参数信息,并结合参数信息对应的函数模版自动生成API,不需要开发人员人工编写函数代码,极大的降低了API开发的人工成本,缩短开发时间,从而提高软件开发效率。
另外,本发明实施例所示的装置,还支持由开发人员选择协议文档中的部分参数来生成对应的API,提高了API自动生成的灵活性。
本发明实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由数据库管理设备的处理器执行以完成本发明各个实施例所示的应用程序编程接口生成方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7是根据一示例性实施例示出的一种电子设备的结构示意图。该电子设备可以实现为本发明上述方案中运行有软件开发工具的设备。所述电子设备700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的***存储器704,以及连接***存储器704和中央处理单元701的***总线705。所述电子设备700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出***(I/O***)706,和用于存储操作***713、应用程序714和其他程序模块715的大容量存储设备707。
所述基本输入/输出***706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到***总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出***706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备707通过连接到***总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为电子设备700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的***存储器704和大容量存储设备707可以统称为存储器。
根据本发明的各种实施例,所述电子设备700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即电子设备700可以通过连接在所述***总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机***(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器701通过执行该一个或一个以上程序来实现图2或图4所示的应用程序编程接口生成方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (14)
1.一种应用程序编程接口生成方法,其特征在于,所述方法包括:
获取应用程序编程接口API的协议文档;
获取所述协议文档中包含的参数信息,并确定所述API的函数模版,所述参数信息包括至少一个参数以及所述至少一个参数的类型,或者,所述参数信息包括所述至少一个参数、所述至少一个参数的类型以及所述至少一个参数之间的嵌套关系;
根据所述参数信息以及所述函数模版生成所述API。
2.根据权利要求1所述的方法,其特征在于,所述根据所述参数信息以及所述函数模版生成所述API,包括:
根据所述参数信息,基于所述函数模版生成所述API的调用函数,所述调用函数用于实现所述API的调用逻辑;
生成与所述至少一个参数以及所述至少一个参数的类型相对应的被调用函数,所述被调用函数用于在所述调用函数的调用下实现对参数的字节序互转、序列化以及反序列化中的至少一种功能;
将所述调用函数和所述被调用函数组合生成所述API。
3.根据权利要求1所述的方法,其特征在于,所述确定所述API的函数模版,包括:
确定开发语言类型,并确定所述API的调用函数的函数名;
根据所述开发语言类型以及所述函数名确定所述函数模版。
4.根据权利要求3所述的方法,其特征在于,所述确定所述API的调用函数的函数名,包括:
展示函数名设置界面;
根据在所述函数名设置界面中执行的设置操作确定所述函数名。
5.根据权利要求1至4任一所述的方法,其特征在于,所述获取所述参数信息,包括:
当所述协议文档的协议格式为定长协议格式时,对所述协议文档进行语法分析,获得所述参数信息;
当所述协议文档的协议格式为不定长协议格式时,通过编译工具对所述协议文档进行编译,获得所述协议文档的编译文件,从所述编译文件中提取所述参数信息。
6.根据权利要求1至4任一所述的方法,其特征在于,所述获取所述参数信息,包括:
展示参数选择界面,所述参数选择界面中包含所述协议文档中包含的各个参数;
根据对所述参数选择界面中的所述至少一个参数的选择操作,获取所述参数信息。
7.根据权利要求2所述的方法,其特征在于,所述生成与所述至少一个参数以及所述至少一个参数的类型相对应的被调用函数,包括:
当所述协议文档的协议格式为定长协议格式时,根据所述至少一个参数以及所述至少一个参数的类型,按照所述协议格式对应的被调用函数格式生成所述被调用函数;
当所述协议文档的协议格式为不定长协议格式时,通过编译工具对所述协议文档进行编译,获得所述协议文档的编译文件,从所述编译文件中提取所述被调用函数。
8.一种应用程序编程接口生成装置,其特征在于,所述装置包括:
第一获取模块,用于获取应用程序编程接口API的协议文档;
第二获取模块,用于获取所述协议文档中包含的参数信息,所述参数信息包括至少一个参数以及所述至少一个参数的类型,或者,所述参数信息包括所述至少一个参数、所述至少一个参数的类型以及所述至少一个参数之间的嵌套关系;
模版确定模块,用于确定所述API的函数模版;
生成模块,用于根据所述参数信息以及所述函数模版生成所述API。
9.根据权利要求8所述的装置,其特征在于,所述生成模块,包括:
第一生成单元,用于根据所述参数信息,基于所述函数模版生成所述API的调用函数,所述调用函数用于实现所述API的调用逻辑;
第二生成单元,用于生成与所述至少一个参数以及所述至少一个参数的类型相对应的被调用函数,所述被调用函数用于被所述调用函数调用以实现对参数的字节序互转、序列化以及反序列化中的至少一种;
组合单元,用于将所述调用函数和所述被调用函数组合生成所述API。
10.根据权利要求8所述的装置,其特征在于,所述模版确定模块,包括:
类型确定单元,用于确定开发语言类型;
函数名确定单元,用于确定所述API的调用函数的函数名;
模版确定单元,用于根据所述开发语言类型以及所述函数名确定所述函数模版。
11.根据权利要求10所述的装置,其特征在于,所述函数名确定单元,包括:
界面展示子单元,用于展示函数名设置界面;
确定子单元,用于根据在所述函数名设置界面中执行的设置操作确定所述函数名。
12.根据权利要求8至11任一所述的装置,其特征在于,所述第二获取模块,包括:
语法分析单元,用于当所述协议文档的协议格式为结构体格式时,对所述协议文档进行语法分析,获得所述参数信息;
编译单元,用于当所述协议文档的协议格式为PB格式时,调用编译工具对所述协议文档进行编译,获得所述协议文档的编译文件;
提取单元,用于从所述编译单元获得的所述编译文件中提取所述参数信息。
13.根据权利要求8至11任一所述的装置,其特征在于,所述第二获取模块,包括:
界面展示单元,用于展示参数选择界面,所述参数选择界面中包含所述协议文档中包含的各个参数;
获取单元,用于根据对所述参数选择界面中的所述至少一个参数的选择操作,获取所述参数信息。
14.根据权利要求9所述的装置,其特征在于,所述第二生成单元,包括:
第一生成子单元,用于当所述协议文档的协议格式为定长协议格式时,根据所述至少一个参数以及所述至少一个参数的类型,按照所述协议格式对应的被调用函数格式生成所述被调用函数;
编译子单元,用于当所述协议文档的协议格式为不定长协议格式时,通过编译工具对所述协议文档进行编译,获得所述协议文档的编译文件,从所述编译文件中提取所述被调用函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611050070.3A CN108108162B (zh) | 2016-11-24 | 2016-11-24 | 应用程序编程接口生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611050070.3A CN108108162B (zh) | 2016-11-24 | 2016-11-24 | 应用程序编程接口生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108108162A true CN108108162A (zh) | 2018-06-01 |
CN108108162B CN108108162B (zh) | 2020-05-12 |
Family
ID=62204916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611050070.3A Active CN108108162B (zh) | 2016-11-24 | 2016-11-24 | 应用程序编程接口生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108108162B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920135A (zh) * | 2018-06-27 | 2018-11-30 | 杭州贝店科技有限公司 | 一种自定义业务生成方法、装置、计算机设备及存储介质 |
CN109062564A (zh) * | 2018-06-23 | 2018-12-21 | 上海泽阳智能科技有限公司 | 一种同时面向硬件和数据的编程处理器 |
CN109270846A (zh) * | 2018-10-22 | 2019-01-25 | 赵永存 | 基于流程图的自动化设备软件快速开发*** |
CN109976746A (zh) * | 2018-11-28 | 2019-07-05 | 四川商通实业有限公司 | 一种可视化配置应用接口方法 |
CN110083384A (zh) * | 2019-03-21 | 2019-08-02 | 平安国际智慧城市科技股份有限公司 | 应用程序编程接口创建方法以及装置 |
CN110262783A (zh) * | 2019-05-22 | 2019-09-20 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
CN110286897A (zh) * | 2019-05-22 | 2019-09-27 | 深圳壹账通智能科技有限公司 | Api可视化动态配置方法、装置、设备以及存储介质 |
CN110471654A (zh) * | 2019-07-17 | 2019-11-19 | 深圳文理子科技有限公司 | 通信协议的云端开发***及计算机软件程序产品 |
CN110688099A (zh) * | 2019-09-12 | 2020-01-14 | 成都西达瑞电子科技有限公司 | 远距离无线电集成可编程片上***的微处理器开发方法 |
CN110781082A (zh) * | 2019-10-14 | 2020-02-11 | 腾讯科技(深圳)有限公司 | 接口的测试用例的生成方法及装置、介质和设备 |
CN110795147A (zh) * | 2018-08-01 | 2020-02-14 | 北京京东尚科信息技术有限公司 | 一种接口协议文件管理方法和装置 |
CN111142877A (zh) * | 2019-12-19 | 2020-05-12 | 无锡中感微电子股份有限公司 | Rom芯片补丁的接口函数及参数类型自动化提取方法、***及存储介质 |
CN111338637A (zh) * | 2020-02-26 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种代码生成方法及装置 |
CN111399819A (zh) * | 2020-03-18 | 2020-07-10 | 北京达佳互联信息技术有限公司 | 数据生成方法、装置、电子设备及存储介质 |
CN111638875A (zh) * | 2020-06-05 | 2020-09-08 | 中国银行股份有限公司 | 一种对端生成方法及*** |
CN112286510A (zh) * | 2019-07-24 | 2021-01-29 | 深圳市应该科技有限公司 | 一种基于api接口实现自动编程的方法及装置 |
CN112463261A (zh) * | 2020-11-20 | 2021-03-09 | 北京达佳互联信息技术有限公司 | 接口调用方法及装置 |
CN113703880A (zh) * | 2021-10-22 | 2021-11-26 | 北京百度网讯科技有限公司 | 应用程序的启动方法、装置、电子设备及可读存储介质 |
CN113766030A (zh) * | 2021-09-13 | 2021-12-07 | 城云科技(中国)有限公司 | 接口常量参数自动入参方法及装置 |
WO2022134915A1 (zh) * | 2020-12-25 | 2022-06-30 | 中兴通讯股份有限公司 | 一种接口测试方法、计算机设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049271A (zh) * | 2012-12-27 | 2013-04-17 | 微梦创科网络科技(中国)有限公司 | 自动生成api接口的描述文档的方法和装置 |
CN104298534A (zh) * | 2014-10-23 | 2015-01-21 | 广州华多网络科技有限公司 | 基于Lua语言的编程方法和装置 |
CN105117233A (zh) * | 2015-09-14 | 2015-12-02 | 百度在线网络技术(北京)有限公司 | Api调用方法及装置 |
-
2016
- 2016-11-24 CN CN201611050070.3A patent/CN108108162B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049271A (zh) * | 2012-12-27 | 2013-04-17 | 微梦创科网络科技(中国)有限公司 | 自动生成api接口的描述文档的方法和装置 |
CN104298534A (zh) * | 2014-10-23 | 2015-01-21 | 广州华多网络科技有限公司 | 基于Lua语言的编程方法和装置 |
CN105117233A (zh) * | 2015-09-14 | 2015-12-02 | 百度在线网络技术(北京)有限公司 | Api调用方法及装置 |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062564A (zh) * | 2018-06-23 | 2018-12-21 | 上海泽阳智能科技有限公司 | 一种同时面向硬件和数据的编程处理器 |
CN108920135B (zh) * | 2018-06-27 | 2021-09-10 | 杭州贝店科技有限公司 | 一种自定义业务生成方法、装置、计算机设备及存储介质 |
CN108920135A (zh) * | 2018-06-27 | 2018-11-30 | 杭州贝店科技有限公司 | 一种自定义业务生成方法、装置、计算机设备及存储介质 |
CN110795147A (zh) * | 2018-08-01 | 2020-02-14 | 北京京东尚科信息技术有限公司 | 一种接口协议文件管理方法和装置 |
CN109270846A (zh) * | 2018-10-22 | 2019-01-25 | 赵永存 | 基于流程图的自动化设备软件快速开发*** |
CN109976746A (zh) * | 2018-11-28 | 2019-07-05 | 四川商通实业有限公司 | 一种可视化配置应用接口方法 |
CN110083384A (zh) * | 2019-03-21 | 2019-08-02 | 平安国际智慧城市科技股份有限公司 | 应用程序编程接口创建方法以及装置 |
CN110286897A (zh) * | 2019-05-22 | 2019-09-27 | 深圳壹账通智能科技有限公司 | Api可视化动态配置方法、装置、设备以及存储介质 |
CN110262783B (zh) * | 2019-05-22 | 2023-08-08 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
CN110262783A (zh) * | 2019-05-22 | 2019-09-20 | 深圳华科云动力科技有限公司 | 一种接口生成方法、装置及终端设备 |
CN110471654A (zh) * | 2019-07-17 | 2019-11-19 | 深圳文理子科技有限公司 | 通信协议的云端开发***及计算机软件程序产品 |
CN112286510A (zh) * | 2019-07-24 | 2021-01-29 | 深圳市应该科技有限公司 | 一种基于api接口实现自动编程的方法及装置 |
CN110688099A (zh) * | 2019-09-12 | 2020-01-14 | 成都西达瑞电子科技有限公司 | 远距离无线电集成可编程片上***的微处理器开发方法 |
CN110688099B (zh) * | 2019-09-12 | 2022-10-14 | 成都西达瑞电子科技有限公司 | 远距离无线电集成可编程片上***的微处理器开发方法 |
CN110781082B (zh) * | 2019-10-14 | 2022-05-20 | 腾讯科技(深圳)有限公司 | 接口的测试用例的生成方法及装置、介质和设备 |
CN110781082A (zh) * | 2019-10-14 | 2020-02-11 | 腾讯科技(深圳)有限公司 | 接口的测试用例的生成方法及装置、介质和设备 |
CN111142877A (zh) * | 2019-12-19 | 2020-05-12 | 无锡中感微电子股份有限公司 | Rom芯片补丁的接口函数及参数类型自动化提取方法、***及存储介质 |
CN111142877B (zh) * | 2019-12-19 | 2023-10-27 | 无锡中感微电子股份有限公司 | Rom芯片补丁的接口函数及参数类型自动化提取方法、***及存储介质 |
CN111338637A (zh) * | 2020-02-26 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种代码生成方法及装置 |
CN111399819A (zh) * | 2020-03-18 | 2020-07-10 | 北京达佳互联信息技术有限公司 | 数据生成方法、装置、电子设备及存储介质 |
CN111399819B (zh) * | 2020-03-18 | 2024-04-30 | 北京达佳互联信息技术有限公司 | 数据生成方法、装置、电子设备及存储介质 |
CN111638875A (zh) * | 2020-06-05 | 2020-09-08 | 中国银行股份有限公司 | 一种对端生成方法及*** |
CN111638875B (zh) * | 2020-06-05 | 2023-09-22 | 中国银行股份有限公司 | 一种对端生成方法及*** |
CN112463261A (zh) * | 2020-11-20 | 2021-03-09 | 北京达佳互联信息技术有限公司 | 接口调用方法及装置 |
CN112463261B (zh) * | 2020-11-20 | 2024-06-11 | 北京达佳互联信息技术有限公司 | 接口调用方法、装置、电子设备、介质及产品 |
WO2022134915A1 (zh) * | 2020-12-25 | 2022-06-30 | 中兴通讯股份有限公司 | 一种接口测试方法、计算机设备及计算机可读存储介质 |
CN113766030A (zh) * | 2021-09-13 | 2021-12-07 | 城云科技(中国)有限公司 | 接口常量参数自动入参方法及装置 |
CN113703880B (zh) * | 2021-10-22 | 2022-02-22 | 北京百度网讯科技有限公司 | 应用程序的启动方法、装置、电子设备及可读存储介质 |
CN113703880A (zh) * | 2021-10-22 | 2021-11-26 | 北京百度网讯科技有限公司 | 应用程序的启动方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108108162B (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108162A (zh) | 应用程序编程接口生成方法及装置 | |
KR101099196B1 (ko) | 적응형 기계 번역 | |
KR101314949B1 (ko) | 통합 환경 생성기 | |
US11561772B2 (en) | Low-code development platform | |
US7721252B2 (en) | Apparatus and method for product-line architecture description and verification | |
US7886284B2 (en) | Using a backend simulator to test and develop xforms templates before linking the xforms templates to backend data processing systems | |
US20060190804A1 (en) | Writing and reading aid system | |
US20130254139A1 (en) | Systems and methods for building a universal intelligent assistant with learning capabilities | |
CN106598869A (zh) | 实现软件自动测试的方法、装置及电子设备 | |
US20130097583A1 (en) | Systems and Methods For Automating the Application of a Software Methodology | |
JP2007094753A (ja) | ロジック抽出支援装置 | |
US20190303115A1 (en) | Automated source code sample adaptation | |
JP2009545077A (ja) | 利用可能なソースデータ及びローカライゼーションの再利用 | |
US20030140332A1 (en) | Method and apparatus for generating a software development tool | |
US20090187892A1 (en) | Apparatus and program for test case generation | |
CN106484389B (zh) | 动作流分段管理 | |
CN109960721A (zh) | 基于源内容的多重压缩构造内容 | |
US20220198153A1 (en) | Model training | |
US20130007697A1 (en) | Program creation support apparatus, program, and information system | |
US8595697B2 (en) | Serializing a templated markup language representation of test artifacts | |
CN117094302A (zh) | 基于ChatGPT的自动化处理方法、装置及存储介质 | |
CN112667202B (zh) | Mda与bpmn相结合的软件设计方法和装置 | |
CN106570002B (zh) | 自然语言处理方法和装置 | |
Hokamp | Deep interactive text prediction and quality estimation in translation interfaces | |
US8346560B2 (en) | Dialog design apparatus and method |
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 |