CN105117233A - Api调用方法及装置 - Google Patents
Api调用方法及装置 Download PDFInfo
- Publication number
- CN105117233A CN105117233A CN201510582285.9A CN201510582285A CN105117233A CN 105117233 A CN105117233 A CN 105117233A CN 201510582285 A CN201510582285 A CN 201510582285A CN 105117233 A CN105117233 A CN 105117233A
- Authority
- CN
- China
- Prior art keywords
- api
- invoke code
- called
- descriptor
- code
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种API调用方法及装置。API调用方法包括:获取待调用API的前端调用代码,其中,前端调用代码是预先根据与待调用API具有映射关系的方法函数的描述信息动态生成的;运行前端调用代码,以对待调用API进行调用。本发明可以解决API调用繁琐以及API变更时出现的不一致导致调用不符合预期、出错等问题,提高API调用效率。
Description
【技术领域】
本发明涉及软件技术领域,尤其涉及一种API调用方法及装置。
【背景技术】
传统Web开发模式存在各种问题,出现了前后端分离的需求。在前后端分离开发模式中,后端主要负责业务逻辑并向前端提供数据,前端主要负责展现逻辑和页面渲染。
后端开发应用程序接口(ApplicationProgrammingInterface,API),并基于Postman等工具整理API的功能、参数等信息,由熟悉API功能的程序员或相关技术人员在API的说明文档中记录这些信息;前端根据Postman工具的试用接口对API进行试用,并根据试用情况及API的说明文档中记载的API的功能、参数等信息手动编写用于调用该API所需的调用代码,通过该调用代码调用API。
其中,每当API更新后,前端都需要重新编写对应该API的调用代码,导致API调用繁琐。另外,由于API的说明文档的更新必须人工干预,如果由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档,则可能导致前端没有及时更新调用代码,从而导致无法成功调用API,只有在发现调用错误后,才会更新调用代码进而成功调用API,导致API的调用效率较低。
【发明内容】
本发明的多个方面提供一种API调用方法及装置,用以API调用繁琐以及API变更时出现的不一致导致调用不符合预期、出错等问题,提高API调用效率。
本发明的一方面,提供一种API调用方法,包括:
获取待调用API的前端调用代码,其中,所述前端调用代码是预先根据与所述待调用API具有映射关系的方法函数的描述信息动态生成的;
运行所述前端调用代码,以对所述待调用API进行调用。
作为本发明的进一步改进,所述预先根据与所述待调用API具有映射关系的方法函数的描述信息动态生成所述前端调用代码,包括:
利用反射机制,访问加载所述方法函数所属的类的类加载器;
从所述类加载器中提取所述方法函数的描述信息;
根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述前端调用代码。
作为本发明的进一步改进,所述根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述前端调用代码之后,包括:
根据检测需求,在所述前端调用代码增加符合所述检测需求的功能代码,以形成测试版本的前端调用代码;和/或
对所述前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
作为本发明的进一步改进,所述从所述类加载器中提取所述方法函数的描述信息,包括:
从所述类加载器中提取所述方法函数的注解信息;
根据所述方法函数的注解信息,获取所述方法函数的描述信息。
作为本发明的进一步改进,所述从所述类加载器中提取所述方法函数的描述信息之后,包括:
按照预设的数据格式,对所述方法函数的描述信息进行处理,以生成所述待调用API的说明文档;
输出所述待调用API的说明文档。
作为本发明的进一步改进,所述获取待调用API的前端调用代码,包括:
根据所述待调用API的说明文档,从软件开发工具包SDK中获取与所述待调用API的说明文档相匹配的前端调用代码。
作为本发明的进一步改进,所述方法还包括:
在测试用例的控制下,运行所述前端调用代码以在测试环境下模拟对所述待调用API的调用,并根据调用结果输出测试结果,以实现对所述待调用API的测试。
本发明的另一方面,提供一种调用代码生成方法,包括:
利用反射机制,访问加载与应用程序接口API具有映射关系的方法函数所属的类的类加载器;
从所述类加载器中提取所述方法函数的描述信息;
根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述API的前端调用代码。
本发明的又一方面,提供一种API调用装置,包括:
获取模块,用于获取待调用API的前端调用代码,其中,所述前端调用代码是预先根据与所述待调用API具有映射关系的方法函数的描述信息动态生成的;
运行模块,用于运行所述前端调用代码,以对所述待调用API进行调用。
作为本发明的进一步改进,所述装置还包括:
访问模块,用于利用反射机制,访问加载所述方法函数所属的类的类加载器;
提取模块,用于从所述类加载器中提取所述方法函数的描述信息;
生成模块,用于根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述前端调用代码。
作为本发明的进一步改进,所述生成模块还用于:
根据检测需求,在所述前端调用代码增加符合所述检测需求的功能代码,以形成测试版本的前端调用代码;和/或
对所述前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
作为本发明的进一步改进,所述提取模块具体用于:
从所述类加载器中提取所述方法函数的注解信息;
根据所述方法函数的注解信息,获取所述方法函数的描述信息。
作为本发明的进一步改进,所述装置还包括:
文档处理模块,用于按照预设的数据格式,对所述方法函数的描述信息进行处理,以生成所述待调用API的说明文档;输出所述待调用API的说明文档。
作为本发明的进一步改进,所述获取模块具体用于:
根据所述待调用API的说明文档,从软件开发工具包SDK中获取与所述待调用API的说明文档相匹配的前端调用代码。
作为本发明的进一步改进,所述装置还包括:
测试模块,用于在测试用例的控制下,运行所述前端调用代码以在测试环境下模拟对所述待调用API的调用,并根据调用结果输出测试结果,以实现对所述待调用API的测试。
本发明的又一方面,提供一种调用代码生成装置,包括:
访问模块,用于利用反射机制,访问加载与应用程序接口API具有映射关系的方法函数所属的类的类加载器;
提取模块,用于从所述类加载器中提取所述方法函数的描述信息;
生成模块,用于根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述API的前端调用代码。
在本发明中,基于预先根据与待调用API具有映射关系的方法函数的描述信息动态生成的待调用API的前端调用代码,实现对待调用API的调用。其中,基于与待调用API具有映射关系的方法函数的描述信息,可以实现待调用API的前端调用代码的自动生成,尤其是在待调用API更新时,本发明中的前端调用代码可以自动根据待调用API对应的方法函数进行适应性更新,不需要用户手动编写API的调用代码,并且在该过程中,无需像现有技术那样人工维护API的说明文档,也就不会出现现有技术中由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档进而导致前端没有及时更新调用代码的问题,解决了API调用繁琐以及API变更时出现的不一致导致调用不符合预期、出错等问题,有利于提高API调用效率。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的调用代码生成方法的流程示意图;
图2为本发明一实施例提供的API调用方法的流程示意图;
图3为本发明一实施例提供的API调用装置的结构示意图;
图4为本发明另一实施例提供的API调用装置的结构示意图;
图5为本发明一实施例提供的调用代码生成装置的结构示意图;
图6为本发明另一实施例提供的调用代码生成装置的结构示意图;
图7为本发明一实施例提供的调用代码生成装置部署实施时的架构示意图。
【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在计算机领域,方法函数是由程序人员编写的代码;一般而言,对于面向对象的编程方式,多个方法函数可以属于一个类;编写完成的方法函数被映射为一个唯一的API接口供第三方调用。第三方通过调用该API接口,可以实现与该API接口具有映射关系的方法函数的功能。
在前后端开发模式中,后端负责开发方法函数的API;并由熟悉API功能的程序员或相关技术人员在API的说明文档中记录API的功能、参数等信息;前端根据API的说明文档中记录的信息手动编写调用代码,通过调用代码调用后端开发的API,以实现与该API具有映射关系的方法函数的功能。
如果由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档,则可能导致前端没有及时更新调用代码,从而导致无法成功调用API,只有在发现调用错误后,才会更新调用代码进而成功调用API,存在API调用繁琐或API调用不符合预期、出错等问题,导致API的调用效率较低。
针对现有技术存在的问题,本发明提供一种解决方案,主要原理是:预先根据与API具有映射关系的方法函数的描述信息动态生成该API的前端调用代码,然后基于生成的前端调用代码实现对待调用API的调用。其中,基于与API具有映射关系的方法函数的描述信息动态生成API的前端调用代码的方法,可以实现前端调用代码的自动生成,并且基于与API具有映射关系的方法函数的描述信息动态生成API的前端调用代码,能够使得前端调用代码跟随API的更新适应性的更新,这样就不需要用户手动编写API的调用代码,并且在该过程中,无需像现有技术那样人工维护API的说明文档,也就不会出现现有技术中由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档进而导致前端没有及时更新调用代码的问题,解决了API调用繁琐以及API变更时出现的不一致导致调用不符合预期、出错等问题,有利于提高API调用效率。
其中,本发明提供的API调用方法的实施基于预先根据与API具有映射关系的方法函数的描述信息动态生成的前端调用代码,因此,在本发明以下方法实施例中首先介绍与前端调用代码有关的内容,例如调用代码的生成过程,其次介绍基于前端调用代码的API调用方法。关于各部分的描述具体请参见下述各方法实施例。
图1为本发明一实施例提供的调用代码生成方法的流程示意图。如图1所示,该方法包括:
101、利用反射机制,访问加载与API具有映射关系的方法函数所属的类的类加载器。
102、从上述类加载器中提取上述方法函数的描述信息。
103、根据上述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成上述API的前端调用代码。
本实施例提供一种调用代码生成方法,用以自动生成具有调用API功能的前端调用代码。
本实施例中的API可以是任意API,其可以是一个,也可以是多个。
在现有技术中,之所以人工手动生成并且手动更新API的前端调用代码的主要原因是:无法自动获取生成前端调用代码所需的API的功能、参数等信息。例如,前端负责生成API的前端调用代码的人员只能在熟悉API功能的程序员或相关技术人员在开发出API后将API的功能、参数等信息记录到API的说明文档中以后,才能从API的说明文档中获取所需的信息。
其中,API的功能、参数等信息主要作用是对API进行说明,便于第三方开发人员使用。为便于描述,后续将API的功能、参数等信息称为API的说明信息,相应的,记录API的说明信息的文档称为API的说明文档。举例说明,API的说明信息可以包括但不限于:调用方法、统一资源定位器(UniformResourceLocator,URL)路径、数据输入格式、输出格式等。
为了实现API的前端调用代码的自动生成及更新,本发明发明人从另外的角度进行考虑发现:由于API是与其具有映射关系的方法函数的唯一映射,所以API的说明信息一定程度上也就是该方法函数的描述信息。方法函数的描述信息主要是指描述方法函数的信息,例如方法名称、URL链接、参数要求等。
基于上述,本发明提出一种调用代码生成方法,该方法跳过API的说明信息,直接使用与该API具有映射关系的方法函数的描述信息实现API的前端调用代码的自动生成与更新。为了使用与API具有映射关系的方法函数的描述信息,首要任务是自动获取该方法函数的描述信息。
具体的,利用反射机制,访问加载与API具有映射关系的方法函数所属的类的类加载器;从该类加载器中提取上述方法函数的描述信息;之后,根据所提取的方法函数的描述信息,对预设的调用代码模板进行渲染,以生成API的前端调用代码。
目前,具有反射机制的编程语言主要是Java语言,本发明主要以java为例进行说明。但是本发明不限定编程语言的实现形式,凡是具有反射功能的编程语言所编写的代码均可采用本发明提供的技术方案。
在代码编写实例中,为了保证代码的可读性、具有较佳的可维护性,程序员编写的方法函数(Method)中除了代码信息外,还会包括注解信息;这些注解信息是以注解标识符标识出来的,例如,在Java方法函数中,通常以作为注解标识符,而这些注解信息中往往包括对该方法函数的功能及参数等信息的注解。以Java方法函数为例,一种注解信息的形式如下所示:
RequestMapping(value="/api/xxx/{id}/yyy",name="XXX功能",method=RequestMethod.GET)
在上述注解信息中,包括方法函数对应的API的URL路径模板(如/api/xxx/{id}/yyy)、方法名称(如XXX功能)、访问方法(如GET)等信息。
基于上述,一种从类加载器中提取方法函数的描述信息的实施方式可以如下:
从类加载器中提取方法函数的注解信息;
根据方法函数的注解信息,获取方法函数的描述信息。
可选的,本实施例可以基于Nodejs与Angularjs开发代码平台,在该代码平台中,根据方法函数的描述信息,对预设的调用代码模板进行渲染,以生成前端调用代码。Node.js是一个基于ChromeJavaScript运行时建立的平台,具体可参见现有技术。Angularjs是一款优秀的前端JS框架,具体可参见现有技术。
进一步,考虑到API一般都是在通过测试之后才会发布。基于此,在生成API的前端调用代码后,可以执行以下至少一种操作:
根据检测需求,在前端调用代码增加符合检测需求的功能代码,以形成测试(Debug)版本的前端调用代码。
对前端调用代码进行代码压缩,以形成发布(Release)版本的前端调用代码。
其中,Debug版本的前端调用代码未进行代码压缩,反而添加了一些检测功能,比如判断参数个数是否正确,必填参数是否填写等,并给出相应提示,以方便调试API。Release版本的前端调用代码则没有多余的判断逻辑,并进行了代码压缩,以追求使用性能,降低代码体积。
由此可见,本实施例利用反射机制,访问加载与API具有映射关系的方法函数所属的类的类加载器,从中提取方法函数的描述信息,根据方法函数的描述信息动态生成API的前端调用代码,从而实现API的前端调用代码的自动生成,不需要用户手动编写API的调用代码,达到节约人力成本的目的;另外,在该生成过程中,无需像现有技术那样人工维护API的说明文档,也就不会出现现有技术中由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档进而导致前端没有及时更新调用代码的问题,因此在基于该前端调用代码调用API时,也就不会出现API变更时出现的不一致导致调用不符合预期、出错等问题,有利于提高API调用效率。
进一步,考虑到从类加载器中提取到的方法函数的描述信息没有特定格式,相对比较晦涩,使用和管理起来不太容易。对此,本实施例预先设定一种数据格式,用以对从类加载器中提取出的方法函数的描述信息进行格式封装,以获得含义更加明确和直观的信息。具体的,在从类加载器中提取方法函数的描述信息之后,按照预设的数据格式,对方法函数的描述信息进行处理,以生成待调用API的说明文档;输出待调用API的说明文档。其中,预设的数据格式主要是指现有API的说明文档所支持的数据格式。另外,在生成API的说明文档之后,将其输出实现了API的说明文档的展示。该实施方式通过自动提取与API具有映射关系的方法函数的描述信息,可以自动生成API的说明文档,同时保证后端API和提供的API的说明文档之间的强一致性,一旦后端API有更新,API的说明文档可以同步更新。
更进一步,基于本实施例提供的前端调用代码,还可以实现API的自动测试,提高测试效率。具体的,可以针对API编写测试用例,该测试用例包括对API的前端调用代码的调用;则在测试用例的控制下,运行API的前端调用代码以在测试环境下模拟对待调用API的调用,并根据调用结果输出测试结果,以实现对API的自动化测试。与现有技术中通过Postman工具人工进行测试的方法相比,不需要人工手动输入API的说明信息,且能够直接输出测试结果,无需人工根据调用结果进行判断,测试效率较高。
图2为本发明一实施例提供的API调用方法的流程示意图。如图2所示,该方法包括:
201、获取待调用API的前端调用代码,其中,该前端调用代码是预先根据与待调用API具有映射关系的方法函数的描述信息动态生成的。
202、运行上述前端调用代码,以对待调用API进行调用。
本实施例提供一种API调用方法,可基于上述实施例生成的前端调用代码实现,用以解决现有技术存在的问题,提高API调用效率。
在本实施例中,为便于描述和区分,将需要调用的API称为待调用API。待调用API可以是任意API,可以是一个,也可以是多个。
在调用待调用API之前,预先根据与待调用API具有映射关系的方法函数的描述信息动态生成前端调用代码。
其中,预先根据与待调用API具有映射关系的方法函数的描述信息动态生成前端调用代码的过程包括:
利用反射机制,访问加载与待调用API具有映射关系的方法函数所属的类的类加载器;
从上述类加载器中提取方法函数的描述信息;
根据上述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成待调用API的前端调用代码。
进一步,上述从类加载器中提取方法函数的描述信息的过程可以如下:
从类加载器中提取方法函数的注解信息;
根据方法函数的注解信息,获取方法函数的描述信息。
进一步,在根据方法函数的描述信息,对预设的调用代码模板进行渲染,以生成前端调用代码之后,还可以执行以下至少一种操作:
根据检测需求,在前端调用代码增加符合检测需求的功能代码,以形成测试版本的前端调用代码。
对前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
上述与前端调用代码的生成有关的描述,具体可参见前述实施例,在此不再赘述。
在生成待调用API的前端调用代码之后,当需要调用待调用API时,可以获取待调用API的前端调用代码;之后,运行该前端调用代码,以对待调用API进行调用。
由于本实施例中待调用API的前端调用代码是基于与API具有映射关系的方法函数的描述信息动态生成的,能够使得前端调用代码跟随API的更新适应性的更新,因此不需要用户手动编写API的调用代码,并且在前端调用代码的过程中,无需像现有技术那样人工维护API的说明文档,也就不会出现现有技术中由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档进而导致前端没有及时更新调用代码的问题,解决了API调用繁琐以及API变更时出现的不一致导致调用不符合预期、出错等问题,有利于提高API调用效率。
进一步,在一可选实施方式中,在生成待调用API的前端调用代码的过程中还可以按照预设的数据格式,对方法函数的描述信息进行处理,以生成待调用API的说明文档;输出待调用API的说明文档。关于输出待调用API的说明文档的其它描述可参见前述实施例。
本实施例可以将各API的前端调用代码作为前端软件开发工具包(SDK),将其存储到SDK中。基于此,为便于获取待调用API的前端调用代码,可以采用以下获取方式:
根据待调用API的说明文档,从SDK中获取与待调用API的说明文档相匹配的前端调用代码,以作为待调用API的前端调用代码。
具体的,可以从待调用API的说明文档中提取待调用API的说明信息,例如功能描述、参数说明以及URL映射等,基于这些信息获取相匹配的前端调用代码。
进一步,在生成待调用API的前端调用代码之后,例如可以在调用待调用API的过程中,对待调用API进行自动化测试。
具体的,生成测试用例,该测试用例包括对待调用API的前端调用代码的调用;在测试用例的控制下,运行待调用API的前端调用代码以在测试环境下模拟对待调用API的调用,并根据调用结果输出测试结果,以实现对所待调用API的测试。与现有技术中通过Postman工具人工进行测试的方法相比,不需要人工手动输入API的说明信息,且能够直接输出测试结果,无需人工根据调用结果进行判断,测试效率较高。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图3为本发明一实施例提供的API调用装置的结构示意图。如图3所示,该装置包括:获取模块31和运行模块32。
获取模块31,用于获取待调用API的前端调用代码,其中,前端调用代码是预先根据与待调用API具有映射关系的方法函数的描述信息动态生成的。
运行模块32,用于运行获取模块31获取的前端调用代码,以对待调用API进行调用。
在一可选实施方式中,如图4所示,该装置还包括:访问模块33、提取模块34和生成模块35。访问模块33、提取模块34和生成模块35相互配合,用以预先根据与待调用API具有映射关系的方法函数的描述信息动态生成待调用API的前端调用代码。具体的,
访问模块33,用于利用反射机制,访问加载方法函数所属的类的类加载器。
提取模块34,用于从类加载器中提取方法函数的描述信息。
生成模块35,用于根据方法函数的描述信息,对预设的调用代码模板进行渲染,以生成前端调用代码。
进一步,生成模块35在生成前端调用代码之后,还用于:
根据检测需求,在前端调用代码增加符合检测需求的功能代码,以形成测试版本的前端调用代码;和/或
对前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
进一步,提取模块34具体用于:
从类加载器中提取方法函数的注解信息;
根据方法函数的注解信息,获取方法函数的描述信息。
在一可选实施方式中,如图4所示,该装置还包括:文档处理模块36。
文档处理模块36,用于按照预设的数据格式,对提取模块34提取的方法函数的描述信息进行处理,以生成待调用API的说明文档;输出待调用API的说明文档。
基于上述待调用API的说明文档,获取模块31具体用于:
根据待调用API的说明文档,从软件开发工具包SDK中获取与待调用API的说明文档相匹配的前端调用代码。
在一可选实施方式中,如图4所示,该装置还包括:测试模块37。
测试模块37,用于在测试用例的控制下,运行前端调用代码以在测试环境下模拟对待调用API的调用,并根据调用结果输出测试结果,以实现对待调用API的测试。
值得说明的是,在前后端分离的Web开发模式中,访问模块33、提取模块34可部署于后端实现;而生成模块35、文档处理模块36及测试模块37可部署于前端后端之间;生成模块35生成的前端调用代码以及文档处理模块36输出的API的说明文档可部署于前端,以供前端(例如获取模块31和运行模块32等)使用,即获取模块31和运行模块32也部署于前端实现。本实施例提供的API调用装置的部署实现架构并不限于此,根据应用场景的不同,其部署实施可视具体应用场景而定。
本实施例提供的API调用装置,基于预先根据与待调用API具有映射关系的方法函数的描述信息动态生成的待调用API的前端调用代码,实现对待调用API的调用。其中,基于与待调用API具有映射关系的方法函数的描述信息,可以实现待调用API的前端调用代码的自动生成,尤其是在待调用API更新时,前端调用代码可以自动根据待调用API对应的方法函数进行适应性更新,不需要用户手动编写API的调用代码,并且在该过程中,无需像现有技术那样人工维护API的说明文档,也就不会出现现有技术中由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档进而导致前端没有及时更新调用代码的问题,解决了API调用繁琐以及API变更时出现的不一致导致调用不符合预期、出错等问题,有利于提高API调用效率。
图5为本发明一实施例提供的调用代码生成装置的结构示意图。如图5所示,该装置包括:访问模块51、提取模块52和生成模块53。访问模块51、提取模块52和生成模块53相互配合,用以根据与API具有映射关系的方法函数的描述信息动态生成API的前端调用代码。具体的,
访问模块51,用于利用反射机制,访问加载与API具有映射关系的方法函数所属的类的类加载器。
提取模块52,用于从类加载器中提取方法函数的描述信息。
生成模块53,用于根据方法函数的描述信息,对预设的调用代码模板进行渲染,以生成API的前端调用代码。
进一步,生成模块53在生成前端调用代码之后,还用于:
根据检测需求,在前端调用代码增加符合检测需求的功能代码,以形成测试版本的前端调用代码;和/或
对前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
进一步,提取模块52具体用于:从类加载器中提取方法函数的注解信息;根据方法函数的注解信息,获取方法函数的描述信息。
在一可选实施方式中,如图6所示,该装置还包括:文档处理模块54。
文档处理模块54,用于按照预设的数据格式,对提取模块52提取的方法函数的描述信息进行处理,以生成API的说明文档;输出API的说明文档。
在一可选实施方式中,如图6所示,该装置还包括:测试模块55。
测试模块55,用于在测试用例的控制下,运行前端调用代码以在测试环境下模拟对API的调用,并根据调用结果输出测试结果,以实现对API的测试。
值得说明的是,在前后端分离的Web开发模式中,上述访问模块51和提取模块52可部署于后端实现;而生成模块53、文档处理模块54及测试模块55可部署于前端后端之间,如图7所示的API平台中;生成模块53生成的前端调用代码以及文档处理模块54输出的API的说明文档可部署于前端,供前端使用。本实施例提供的调用代码生成装置的部署实现并不限于图7所示,根据应用场景的不同,其部署实施可视具体应用场景而定。
本实施例提供的调用代码生成装置,利用反射机制,访问加载与API具有映射关系的方法函数所属的类的类加载器,从中提取方法函数的描述信息,根据方法函数的描述信息动态生成API的前端调用代码,从而实现API的前端调用代码的自动生成,不需要用户手动编写API的调用代码,达到节约人力成本的目的;另外,在该生成过程中,无需像现有技术那样人工维护API的说明文档,也就不会出现现有技术中由于人员的疏忽,或其它原因造成在API更新后没有及时更新其说明文档进而导致前端没有及时更新调用代码的问题,因此在基于该前端调用代码调用API时,也就不会出现API变更时出现的不一致导致调用不符合预期、出错等问题,有利于提高API调用效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
1.一种应用程序接口API调用方法,其特征在于,包括:
获取待调用API的前端调用代码,其中,所述前端调用代码是预先根据与所述待调用API具有映射关系的方法函数的描述信息动态生成的;
运行所述前端调用代码,以对所述待调用API进行调用。
2.根据权利要求1所述的方法,其特征在于,所述预先根据与所述待调用API具有映射关系的方法函数的描述信息动态生成所述前端调用代码,包括:
利用反射机制,访问加载所述方法函数所属的类的类加载器;
从所述类加载器中提取所述方法函数的描述信息;
根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述前端调用代码。
3.根据权利要求2所述的方法,其特征在于,所述根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述前端调用代码之后,包括:
根据检测需求,在所述前端调用代码增加符合所述检测需求的功能代码,以形成测试版本的前端调用代码;和/或
对所述前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
4.根据权利要求2所述的方法,其特征在于,所述从所述类加载器中提取所述方法函数的描述信息,包括:
从所述类加载器中提取所述方法函数的注解信息;
根据所述方法函数的注解信息,获取所述方法函数的描述信息。
5.根据权利要求2所述的方法,其特征在于,所述从所述类加载器中提取所述方法函数的描述信息之后,包括:
按照预设的数据格式,对所述方法函数的描述信息进行处理,以生成所述待调用API的说明文档;
输出所述待调用API的说明文档。
6.根据权利要求5所述的方法,其特征在于,所述获取待调用API的前端调用代码,包括:
根据所述待调用API的说明文档,从软件开发工具包SDK中获取与所述待调用API的说明文档相匹配的前端调用代码。
7.根据权利要求1-6任一项所述的方法,其特征在于,还包括:
在测试用例的控制下,运行所述前端调用代码以在测试环境下模拟对所述待调用API的调用,并根据调用结果输出测试结果,以实现对所述待调用API的测试。
8.一种调用代码生成方法,其特征在于,包括:
利用反射机制,访问加载与应用程序接口API具有映射关系的方法函数所属的类的类加载器;
从所述类加载器中提取所述方法函数的描述信息;
根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述API的前端调用代码。
9.一种应用程序接口API调用装置,其特征在于,包括:
获取模块,用于获取待调用API的前端调用代码,其中,所述前端调用代码是预先根据与所述待调用API具有映射关系的方法函数的描述信息动态生成的;
运行模块,用于运行所述前端调用代码,以对所述待调用API进行调用。
10.根据权利要求9所述的装置,其特征在于,还包括:
访问模块,用于利用反射机制,访问加载所述方法函数所属的类的类加载器;
提取模块,用于从所述类加载器中提取所述方法函数的描述信息;
生成模块,用于根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述前端调用代码。
11.根据权利要求10所述的装置,其特征在于,所述生成模块还用于:
根据检测需求,在所述前端调用代码增加符合所述检测需求的功能代码,以形成测试版本的前端调用代码;和/或
对所述前端调用代码进行代码压缩,以形成发布版本的前端调用代码。
12.根据权利要求10所述的装置,其特征在于,所述提取模块具体用于:
从所述类加载器中提取所述方法函数的注解信息;
根据所述方法函数的注解信息,获取所述方法函数的描述信息。
13.根据权利要求10所述的装置,其特征在于,还包括:
文档处理模块,用于按照预设的数据格式,对所述方法函数的描述信息进行处理,以生成所述待调用API的说明文档;输出所述待调用API的说明文档。
14.根据权利要求13所述的装置,其特征在于,所述获取模块具体用于:
根据所述待调用API的说明文档,从软件开发工具包SDK中获取与所述待调用API的说明文档相匹配的前端调用代码。
15.根据权利要求9-14任一项所述的装置,其特征在于,还包括:
测试模块,用于在测试用例的控制下,运行所述前端调用代码以在测试环境下模拟对所述待调用API的调用,并根据调用结果输出测试结果,以实现对所述待调用API的测试。
16.一种调用代码生成装置,其特征在于,包括:
访问模块,用于利用反射机制,访问加载与应用程序接口API具有映射关系的方法函数所属的类的类加载器;
提取模块,用于从所述类加载器中提取所述方法函数的描述信息;
生成模块,用于根据所述方法函数的描述信息,对预设的调用代码模板进行渲染,以生成所述API的前端调用代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510582285.9A CN105117233B (zh) | 2015-09-14 | 2015-09-14 | Api调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510582285.9A CN105117233B (zh) | 2015-09-14 | 2015-09-14 | Api调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117233A true CN105117233A (zh) | 2015-12-02 |
CN105117233B CN105117233B (zh) | 2019-05-28 |
Family
ID=54665235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510582285.9A Active CN105117233B (zh) | 2015-09-14 | 2015-09-14 | Api调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117233B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484421A (zh) * | 2016-10-11 | 2017-03-08 | 武汉斗鱼网络科技有限公司 | 一种快速生成api接口的方法及系统 |
CN106951304A (zh) * | 2017-03-06 | 2017-07-14 | 王铭鑫 | 并发调用方法及装置 |
CN107239271A (zh) * | 2016-03-29 | 2017-10-10 | 滴滴(中国)科技有限公司 | 开发文档生成方法及装置 |
CN107622070A (zh) * | 2016-07-15 | 2018-01-23 | 深圳联友科技有限公司 | 一种数据库管理方法及装置 |
CN107885499A (zh) * | 2017-10-19 | 2018-04-06 | 平安壹钱包电子商务有限公司 | 一种接口文档生成方法及终端设备 |
CN108108162A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 应用程序编程接口生成方法及装置 |
CN108241503A (zh) * | 2016-12-23 | 2018-07-03 | 北京国双科技有限公司 | 注释说明的生成方法及装置 |
CN108804103A (zh) * | 2018-06-20 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种扫描接口并生成可调用api接口文档的方法 |
CN108958727A (zh) * | 2018-04-13 | 2018-12-07 | 北京优帆科技有限公司 | 一种api客户端代码的生成方法及系统 |
CN109144512A (zh) * | 2018-08-22 | 2019-01-04 | 杭州数澜科技有限公司 | 一种生成api的方法和系统 |
CN109189469A (zh) * | 2018-06-22 | 2019-01-11 | 北京大学 | 基于反射的安卓应用微服务化方法及系统 |
CN109725901A (zh) * | 2018-05-31 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 前端代码的开发方法、装置、设备和计算机存储介质 |
CN110058903A (zh) * | 2019-04-16 | 2019-07-26 | 深圳市摩天之星企业管理有限公司 | 一种程序接入方法 |
CN110069248A (zh) * | 2019-03-16 | 2019-07-30 | 平安城市建设科技(深圳)有限公司 | 接口数据的调用方法、装置、设备及计算机可读存储介质 |
CN111198818A (zh) * | 2019-12-30 | 2020-05-26 | 北京中网易企秀科技有限公司 | 一种信息获取方法及装置 |
US10839011B2 (en) | 2018-04-18 | 2020-11-17 | International Business Machines Corporation | Application programing interface document generator |
CN112463261A (zh) * | 2020-11-20 | 2021-03-09 | 北京达佳互联信息技术有限公司 | 接口调用方法及装置 |
CN114168119A (zh) * | 2021-12-07 | 2022-03-11 | 北京百度网讯科技有限公司 | 代码文件编辑方法、装置、电子设备以及存储介质 |
WO2024065445A1 (zh) * | 2022-09-29 | 2024-04-04 | 西门子(中国)有限公司 | 扩展功能块的能力的方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216760A (zh) * | 2007-12-28 | 2008-07-09 | 北京方正国际软件系统有限公司 | 一种动态映射接口调用系统及方法 |
CN101639774A (zh) * | 2009-08-31 | 2010-02-03 | 腾讯科技(深圳)有限公司 | 一种浏览器控件的封装方法及装置 |
CN102036121A (zh) * | 2010-11-11 | 2011-04-27 | 深圳市佳创视讯技术股份有限公司 | 基于数字电视浏览器的马赛克视频导航方法 |
CN103399734A (zh) * | 2013-07-10 | 2013-11-20 | 北京慧点科技股份有限公司 | 生成rest服务和rest实现的方法及对应的设备 |
CN104426983A (zh) * | 2013-09-05 | 2015-03-18 | 携程计算机技术(上海)有限公司 | 网站建设系统及方法 |
-
2015
- 2015-09-14 CN CN201510582285.9A patent/CN105117233B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216760A (zh) * | 2007-12-28 | 2008-07-09 | 北京方正国际软件系统有限公司 | 一种动态映射接口调用系统及方法 |
CN101639774A (zh) * | 2009-08-31 | 2010-02-03 | 腾讯科技(深圳)有限公司 | 一种浏览器控件的封装方法及装置 |
CN102036121A (zh) * | 2010-11-11 | 2011-04-27 | 深圳市佳创视讯技术股份有限公司 | 基于数字电视浏览器的马赛克视频导航方法 |
CN103399734A (zh) * | 2013-07-10 | 2013-11-20 | 北京慧点科技股份有限公司 | 生成rest服务和rest实现的方法及对应的设备 |
CN104426983A (zh) * | 2013-09-05 | 2015-03-18 | 携程计算机技术(上海)有限公司 | 网站建设系统及方法 |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239271A (zh) * | 2016-03-29 | 2017-10-10 | 滴滴(中国)科技有限公司 | 开发文档生成方法及装置 |
CN107622070B (zh) * | 2016-07-15 | 2021-05-14 | 深圳联友科技有限公司 | 一种数据库管理方法及装置 |
CN107622070A (zh) * | 2016-07-15 | 2018-01-23 | 深圳联友科技有限公司 | 一种数据库管理方法及装置 |
CN106484421A (zh) * | 2016-10-11 | 2017-03-08 | 武汉斗鱼网络科技有限公司 | 一种快速生成api接口的方法及系统 |
CN108108162B (zh) * | 2016-11-24 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 应用程序编程接口生成方法及装置 |
CN108108162A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 应用程序编程接口生成方法及装置 |
CN108241503A (zh) * | 2016-12-23 | 2018-07-03 | 北京国双科技有限公司 | 注释说明的生成方法及装置 |
CN106951304A (zh) * | 2017-03-06 | 2017-07-14 | 王铭鑫 | 并发调用方法及装置 |
CN106951304B (zh) * | 2017-03-06 | 2020-11-27 | 王铭鑫 | 并发调用方法及装置 |
CN107885499A (zh) * | 2017-10-19 | 2018-04-06 | 平安壹钱包电子商务有限公司 | 一种接口文档生成方法及终端设备 |
CN108958727A (zh) * | 2018-04-13 | 2018-12-07 | 北京优帆科技有限公司 | 一种api客户端代码的生成方法及系统 |
US10839011B2 (en) | 2018-04-18 | 2020-11-17 | International Business Machines Corporation | Application programing interface document generator |
CN109725901B (zh) * | 2018-05-31 | 2024-03-29 | 中国平安人寿保险股份有限公司 | 前端代码的开发方法、装置、设备和计算机存储介质 |
CN109725901A (zh) * | 2018-05-31 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 前端代码的开发方法、装置、设备和计算机存储介质 |
CN108804103A (zh) * | 2018-06-20 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种扫描接口并生成可调用api接口文档的方法 |
CN109189469A (zh) * | 2018-06-22 | 2019-01-11 | 北京大学 | 基于反射的安卓应用微服务化方法及系统 |
CN109189469B (zh) * | 2018-06-22 | 2020-08-28 | 北京大学 | 基于反射的安卓应用微服务化方法及系统 |
CN109144512A (zh) * | 2018-08-22 | 2019-01-04 | 杭州数澜科技有限公司 | 一种生成api的方法和系统 |
CN109144512B (zh) * | 2018-08-22 | 2022-05-03 | 杭州数澜科技有限公司 | 一种生成api的方法和系统 |
CN110069248A (zh) * | 2019-03-16 | 2019-07-30 | 平安城市建设科技(深圳)有限公司 | 接口数据的调用方法、装置、设备及计算机可读存储介质 |
CN110058903A (zh) * | 2019-04-16 | 2019-07-26 | 深圳市摩天之星企业管理有限公司 | 一种程序接入方法 |
CN111198818B (zh) * | 2019-12-30 | 2023-02-24 | 北京中网易企秀科技有限公司 | 一种信息获取方法及装置 |
CN111198818A (zh) * | 2019-12-30 | 2020-05-26 | 北京中网易企秀科技有限公司 | 一种信息获取方法及装置 |
CN112463261A (zh) * | 2020-11-20 | 2021-03-09 | 北京达佳互联信息技术有限公司 | 接口调用方法及装置 |
CN112463261B (zh) * | 2020-11-20 | 2024-06-11 | 北京达佳互联信息技术有限公司 | 接口调用方法、装置、电子设备、介质及产品 |
CN114168119A (zh) * | 2021-12-07 | 2022-03-11 | 北京百度网讯科技有限公司 | 代码文件编辑方法、装置、电子设备以及存储介质 |
CN114168119B (zh) * | 2021-12-07 | 2024-04-05 | 北京百度网讯科技有限公司 | 代码文件编辑方法、装置、电子设备以及存储介质 |
WO2024065445A1 (zh) * | 2022-09-29 | 2024-04-04 | 西门子(中国)有限公司 | 扩展功能块的能力的方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105117233B (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105117233A (zh) | Api调用方法及装置 | |
KR101314949B1 (ko) | 통합 환경 생성기 | |
US7707553B2 (en) | Computer method and system for automatically creating tests for checking software | |
US11531529B2 (en) | Method and electronic device for deploying operator in deep learning framework | |
CN108287694A (zh) | 应用程序构建方法、系统、计算机设备和存储介质 | |
CN112270149B (zh) | 验证平台自动化集成方法、系统及电子设备和存储介质 | |
US20060156287A1 (en) | Auto conversion of tests between different functional testing tools | |
CN106775744B (zh) | 一种生成静态库的方法和装置 | |
CN104407980A (zh) | 移动应用自动化测试装置和方法 | |
CN107832059A (zh) | 一种基于Makefile的代码静态分析方法和装置 | |
CN108958992A (zh) | 测试方法和装置 | |
JP6479184B2 (ja) | コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置 | |
CN102541731B (zh) | 平台不可知诊断数据收集与显示 | |
CN104572238A (zh) | 一种高效的生成可执行软件包的方法及系统 | |
CN102859489A (zh) | 可恢复的方法 | |
CN109522010B (zh) | 初始化代码添加方法及装置、存储介质、电子设备 | |
CN115757014A (zh) | 一种功耗测试方法及装置 | |
CN117931666B (zh) | 一种软件无线电通信设备核心框架测试系统及方法 | |
CN113126991A (zh) | 业务数据处理方法及装置 | |
CN111176912A (zh) | 一种继电保护装置硬件配置信息管理系统和方法 | |
US20180314497A1 (en) | Translation of assembler language code using intermediary technical rules language (trl) | |
CN112256554B (zh) | 一种基于场景测试用例进行测试的方法及设备 | |
CN110851516B (zh) | 主机运控系统及方法 | |
CN107563025B (zh) | 一种验证平台管理方法及装置 | |
US20240168757A1 (en) | Software code consolidation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |