基于元数据的OpenAPI实现方法及OpenAPI实现装置与流程

文档序号:12270949阅读:256来源:国知局
基于元数据的OpenAPI实现方法及OpenAPI实现装置与流程

本发明涉及互联网技术领域,具体而言,涉及一种基于元数据的OpenAPI实现方法和一种基于元数据的OpenAPI实现装置。



背景技术:

ERP(Enterprise Resource Planning,企业资源计划)产品在互联网化转型的过程中,需要将原有的功能作为OpenAPI开放出来,以向外部系统提供API(Application Programming Interface,应用编程接口)服务。

目前的普遍做法是,将ERP产品中的每个业务模块的原有功能重新开发为OpenAPI,由于ERP产品业务复杂、模块繁多,因此将每个业务模块都重新开发为OpenAPI的实现难度非常大且十分耗时,无法满足企业对OpenAPI的需求。



技术实现要素:

本发明正是基于上述技术问题至少之一,提出了一种新的基于元数据的OpenAPI实现方案,极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

有鉴于此,根据本发明的第一方面,提出了一种基于元数据的OpenAPI实现方法,包括:基于对业务数据进行统一描述的元数据生成公共API;接收调用方发送的针对业务数据的API调用请求;根据所述公共API和所述API调用请求查询相应的业务数据,并响应所述调用请求。

在该技术方案中,由于业务数据通常都是采用类似的元数据形式,有着类似的数据结构,因此通过基于对业务数据进行统一描述的元数据生成公共API,使得能够从元数据的角度来实现公共API,进而根据公共API和调用方发送的API调用请求来查询得到相应的业务数据,由于无需针对每个业务数据重新开发OpenAPI,因此极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

在本发明的一个实施例中,在所述API调用请求中包含有需要访问的业务数据的类名和查询条件的情况下,根据所述公共API和所述API调用请求查询相应的业务数据的步骤,具体包括:

根据所述业务数据的类名和所述公共API确定所述需要访问的业务数据的类和相应的资源路径;

根据所述需要访问的业务数据的类和相应的资源路径,以及所述查询条件,查询得到相应的业务数据。

在该实施例中,由于ERP系统中所有的业务数据都是按照元数据描述的规则存储的,因此在知晓业务数据的类名之后,可以根据公共API来获取与之相关的类和资源路径,进而可以根据API调用请求中包含的查询条件,以及需要访问的业务数据的类和相应的资源路径来查询得到相应的业务数据。

在本发明的另一个实施例中,根据所述公共API和所述API调用请求查询相应的业务数据的步骤,具体包括:

根据所述公共API,以及每种业务数据对应的类名和资源路径生成对应于所述每种业务数据的查询API;

在所述API调用请求是针对指定业务数据的API调用请求的情况下,根据所述API调用请求中包含的针对所述指定业务数据的查询条件,以及所述指定业务数据对应的查询API,查询得到相应的业务数据。

在该实施例中,由于公共API是通用的API,因此通过根据公共API,以及每种业务数据对应的类名和资源路径生成与每种业务数据对应的查询API,使得能够基于公共API来快速的生成并发布每种业务数据对应的OpenAPI,降低了OpenAPI的开发工作量。同时,由于是基于公共API来生成针对每种业务数据的查询API,因此API调用请求中仅需要包含针对指定业务数据的查询条件即可,进而可以根据指定业务数据对应的查询API来查询得到相应的业务数据。

进一步地,根据所述API调用请求中包含的针对所述指定业务数据的查询条件,以及所述指定业务数据对应的查询API,查询得到相应的业务数据的步骤,具体包括:

根据所述指定业务数据对应的查询API,确定所述指定业务数据的类和相应的资源路径;根据所述指定业务数据的类和相应的资源路径,以及针对所述指定业务数据的查询条件,查询得到相应的业务数据。

在该技术方案中,由于指定业务数据对应的查询API是根据公共API,以及该业务数据对应的类名和资源路径生成的,因此可以根据指定业务数据对应的查询API来确定该业务数据的类和相应的资源路径,进而可以基于确定的业务数据的类和相应的资源路径,以及API调用请求中包含的查询条件来查询得到相应的业务数据。

在上述任一技术方案中,优选地,所述的基于元数据的OpenAPI实现方法还包括:

配置用于对业务数据的类进行访问控制的黑名单和/或白名单,所述白名单包含有允许基于所述公共API访问的业务数据的类名,所述黑名单包含有不允许基于所述公共API访问的业务数据的类名;

根据所述黑名单和/或白名单,以及所述公共API和所述API调用请求查询相应的业务数据。

在该技术方案中,通过配置对业务数据的类进行访问控制的黑名单和/或白名单,以根据配置的黑名单和/或白名单,以及公共API和API调用请求查询相应的业务数据,使得能够根据需求灵活设置禁止访问的类名和允许访问的类名,以提高数据的安全性。

根据本发明的第二方面,还提出了一种基于元数据的OpenAPI实现装置,包括:第一生成单元,用于基于对业务数据进行统一描述的元数据生成公共API;接收单元,用于接收调用方发送的针对业务数据的API调用请求;处理单元,用于根据所述公共API和所述API调用请求查询相应的业务数据,并响应所述调用请求。

在该技术方案中,由于业务数据通常都是采用类似的元数据形式,有着类似的数据结构,因此通过基于对业务数据进行统一描述的元数据生成公共API,使得能够从元数据的角度来实现公共API,进而根据公共API和调用方发送的API调用请求来查询得到相应的业务数据,由于无需针对每个业务数据重新开发OpenAPI,因此极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

在本发明的一个实施例中,在所述API调用请求中包含有需要访问的业务数据的类名和查询条件的情况下,所述处理单元包括:确定单元,用于根据所述业务数据的类名和所述公共API确定所述需要访问的业务数据的类和相应的资源路径;第一查询单元,用于根据所述需要访问的业务数据的类和相应的资源路径,以及所述查询条件,查询得到相应的业务数据。

在该实施例中,由于ERP系统中所有的业务数据都是按照元数据描述的规则存储的,因此在知晓业务数据的类名之后,可以根据公共API来获取与之相关的类和资源路径,进而可以根据API调用请求中包含的查询条件,以及需要访问的业务数据的类和相应的资源路径来查询得到相应的业务数据。

在本发明的另一个实施例中,所述处理单元包括:第二生成单元,用于根据所述公共API,以及每种业务数据对应的类名和资源路径生成对应于所述每种业务数据的查询API;第二查询单元,用于在所述API调用请求是针对指定业务数据的API调用请求的情况下,根据所述API调用请求中包含的针对所述指定业务数据的查询条件,以及所述指定业务数据对应的查询API,查询得到相应的业务数据。

在该实施例中,由于公共API是通用的API,因此通过根据公共API,以及每种业务数据对应的类名和资源路径生成与每种业务数据对应的查询API,使得能够基于公共API来快速的生成并发布每种业务数据对应的OpenAPI,降低了OpenAPI的开发工作量。同时,由于是基于公共API来生成针对每种业务数据的查询API,因此API调用请求中仅需要包含针对指定业务数据的查询条件即可,进而可以根据指定业务数据对应的查询API来查询得到相应的业务数据。

进一步地,所述第二查询单元具体用于:根据所述指定业务数据对应的查询API,确定所述指定业务数据的类和相应的资源路径;根据所述指定业务数据的类和相应的资源路径,以及针对所述指定业务数据的查询条件,查询得到相应的业务数据。

在该技术方案中,由于指定业务数据对应的查询API是根据公共API,以及该业务数据对应的类名和资源路径生成的,因此可以根据指定业务数据对应的查询API来确定该业务数据的类和相应的资源路径,进而可以基于确定的业务数据的类和相应的资源路径,以及API调用请求中包含的查询条件来查询得到相应的业务数据。

在上述任一技术方案中,优选地,所述的基于元数据的OpenAPI实现装置还包括:配置单元,配置用于对业务数据的类进行访问控制的黑名单和/或白名单,所述白名单包含有允许基于所述公共API访问的业务数据的类名,所述黑名单包含有不允许基于所述公共API访问的业务数据的类名;所述处理单元还用于,根据所述黑名单和/或白名单,以及所述公共API和所述API调用请求查询相应的业务数据。

在该技术方案中,通过配置对业务数据的类进行访问控制的黑名单和/或白名单,以根据配置的黑名单和/或白名单,以及公共API和API调用请求查询相应的业务数据,使得能够根据需求灵活设置禁止访问的类名和允许访问的类名,以提高数据的安全性。

通过以上技术方案,可以根据公共API和调用方发送的API调用请求来查询得到相应的业务数据,无需针对每个业务数据重新开发OpenAPI,极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

附图说明

图1示出了根据本发明的实施例的基于元数据的OpenAPI实现方法的流程示意图;

图2示出了根据本发明的第一个实施例的基于元数据的OpenAPI实现装置的结构示意图;

图3示出了根据本发明的实施例的处理单元的第一种内部结构示意图;

图4示出了根据本发明的实施例的处理单元的第二种内部结构示意图;

图5示出了根据本发明的第二个实施例的基于元数据的OpenAPI实现装置的结构示意图;

图6示出了根据本发明的实施例的基于元数据的OpenAPI的整体实现原理示意图;

图7示出了根据本发明的实施例的网关适配器和ACC组件的处理流程示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明的实施例的基于元数据的OpenAPI实现方法的流程示意图。

如图1所示,根据本发明的实施例的基于元数据的OpenAPI实现方法,包括:

步骤S10,基于对业务数据进行统一描述的元数据生成公共API。

步骤S12,接收调用方发送的针对业务数据的API调用请求。

步骤S14,根据所述公共API和所述API调用请求查询相应的业务数据,并响应所述调用请求。

在图1所示的技术方案中,由于业务数据通常都是采用类似的元数据形式,有着类似的数据结构,因此通过基于对业务数据进行统一描述的元数据生成公共API,使得能够从元数据的角度来实现公共API,进而根据公共API和调用方发送的API调用请求来查询得到相应的业务数据,由于无需针对每个业务数据重新开发OpenAPI,因此极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

针对上述步骤S14,本发明具体提出了如下两种实现方式:

方式一:

在API调用请求中包含有需要访问的业务数据的类名和查询条件的情况下,步骤S14具体包括:

根据所述业务数据的类名和所述公共API确定所述需要访问的业务数据的类和相应的资源路径;

根据所述需要访问的业务数据的类和相应的资源路径,以及所述查询条件,查询得到相应的业务数据。

具体来说,由于ERP系统中所有的业务数据都是按照元数据描述的规则存储的,因此在知晓业务数据的类名之后,可以根据公共API来获取与之相关的类和资源路径,进而可以根据API调用请求中包含的查询条件,以及需要访问的业务数据的类和相应的资源路径来查询得到相应的业务数据。

方式二:

步骤S14具体包括:

根据所述公共API,以及每种业务数据对应的类名和资源路径生成对应于所述每种业务数据的查询API;

在所述API调用请求是针对指定业务数据的API调用请求的情况下,根据所述API调用请求中包含的针对所述指定业务数据的查询条件,以及所述指定业务数据对应的查询API,查询得到相应的业务数据。

具体来说,由于公共API是通用的API,因此通过根据公共API,以及每种业务数据对应的类名和资源路径生成与每种业务数据对应的查询API,使得能够基于公共API来快速的生成并发布每种业务数据对应的OpenAPI,降低了OpenAPI的开发工作量。同时,由于是基于公共API来生成针对每种业务数据的查询API,因此API调用请求中仅需要包含针对指定业务数据的查询条件即可,进而可以根据指定业务数据对应的查询API来查询得到相应的业务数据。

在方式二中,进一步地,根据所述API调用请求中包含的针对所述指定业务数据的查询条件,以及所述指定业务数据对应的查询API,查询得到相应的业务数据的步骤,具体包括:

根据所述指定业务数据对应的查询API,确定所述指定业务数据的类和相应的资源路径;根据所述指定业务数据的类和相应的资源路径,以及针对所述指定业务数据的查询条件,查询得到相应的业务数据。

在该技术方案中,由于指定业务数据对应的查询API是根据公共API,以及该业务数据对应的类名和资源路径生成的,因此可以根据指定业务数据对应的查询API来确定该业务数据的类和相应的资源路径,进而可以基于确定的业务数据的类和相应的资源路径,以及API调用请求中包含的查询条件来查询得到相应的业务数据。

在上述任一技术方案中,优选地,所述的基于元数据的OpenAPI实现方法还包括:

配置用于对业务数据的类进行访问控制的黑名单和/或白名单,所述白名单包含有允许基于所述公共API访问的业务数据的类名,所述黑名单包含有不允许基于所述公共API访问的业务数据的类名;

根据所述黑名单和/或白名单,以及所述公共API和所述API调用请求查询相应的业务数据。

在该技术方案中,通过配置对业务数据的类进行访问控制的黑名单和/或白名单,以根据配置的黑名单和/或白名单,以及公共API和API调用请求查询相应的业务数据,使得能够根据需求灵活设置禁止访问的类名和允许访问的类名,以提高数据的安全性。

图2示出了根据本发明的第一个实施例的基于元数据的OpenAPI实现装置的结构示意图。

如图2所示,根据本发明的第一个实施例的基于元数据的OpenAPI实现装置200,包括:第一生成单元202、接收单元204和处理单元206。

其中,第一生成单元202用于基于对业务数据进行统一描述的元数据生成公共API;接收单元204用于接收调用方发送的针对业务数据的API调用请求;处理单元206用于根据所述公共API和所述API调用请求查询相应的业务数据,并响应所述调用请求。

在该技术方案中,由于业务数据通常都是采用类似的元数据形式,有着类似的数据结构,因此通过基于对业务数据进行统一描述的元数据生成公共API,使得能够从元数据的角度来实现公共API,进而根据公共API和调用方发送的API调用请求来查询得到相应的业务数据,由于无需针对每个业务数据重新开发OpenAPI,因此极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

其中,处理单元206具体有如下两种内部结构:

实施例一:

在API调用请求中包含有需要访问的业务数据的类名和查询条件的情况下,如图3所示,所述处理单元206包括:确定单元2062和第一查询单元2064。

其中,确定单元2062用于根据所述业务数据的类名和所述公共API确定所述需要访问的业务数据的类和相应的资源路径;第一查询单元2064用于根据所述需要访问的业务数据的类和相应的资源路径,以及所述查询条件,查询得到相应的业务数据。

在该实施例中,由于ERP系统中所有的业务数据都是按照元数据描述的规则存储的,因此在知晓业务数据的类名之后,可以根据公共API来获取与之相关的类和资源路径,进而可以根据API调用请求中包含的查询条件,以及需要访问的业务数据的类和相应的资源路径来查询得到相应的业务数据。

实施例二:

如图4所示,处理单元206包括:第二生成单元2066和第二查询单元2068。

其中,第二生成单元2066用于根据所述公共API,以及每种业务数据对应的类名和资源路径生成对应于所述每种业务数据的查询API;第二查询单元2068用于在所述API调用请求是针对指定业务数据的API调用请求的情况下,根据所述API调用请求中包含的针对所述指定业务数据的查询条件,以及所述指定业务数据对应的查询API,查询得到相应的业务数据。

在该实施例中,由于公共API是通用的API,因此通过根据公共API,以及每种业务数据对应的类名和资源路径生成与每种业务数据对应的查询API,使得能够基于公共API来快速的生成并发布每种业务数据对应的OpenAPI,降低了OpenAPI的开发工作量。同时,由于是基于公共API来生成针对每种业务数据的查询API,因此API调用请求中仅需要包含针对指定业务数据的查询条件即可,进而可以根据指定业务数据对应的查询API来查询得到相应的业务数据。

进一步地,所述第二查询单元2068具体用于:根据所述指定业务数据对应的查询API,确定所述指定业务数据的类和相应的资源路径;根据所述指定业务数据的类和相应的资源路径,以及针对所述指定业务数据的查询条件,查询得到相应的业务数据。

在该技术方案中,由于指定业务数据对应的查询API是根据公共API,以及该业务数据对应的类名和资源路径生成的,因此可以根据指定业务数据对应的查询API来确定该业务数据的类和相应的资源路径,进而可以基于确定的业务数据的类和相应的资源路径,以及API调用请求中包含的查询条件来查询得到相应的业务数据。

在本发明的一个实施例中,如图5所示,根据本发明的第二个实施例的基于元数据的OpenAPI实现装置500在具有上述的第一生成单元202、接收单元204和处理单元206的基础上,还包括:配置单元208,配置用于对业务数据的类进行访问控制的黑名单和/或白名单,所述白名单包含有允许基于所述公共API访问的业务数据的类名,所述黑名单包含有不允许基于所述公共API访问的业务数据的类名;所述处理单元206还用于,根据所述黑名单和/或白名单,以及所述公共API和所述API调用请求查询相应的业务数据。

在该技术方案中,通过配置对业务数据的类进行访问控制的黑名单和/或白名单,以根据配置的黑名单和/或白名单,以及公共API和API调用请求查询相应的业务数据,使得能够根据需求灵活设置禁止访问的类名和允许访问的类名,以提高数据的安全性。

综上所述,本发明主要是提出了一种基于元数据的OpenAPI实现方法,由于各个业务模块都有一些类似的功能,因此可以抛开业务逻辑,从元数据的角度来实现公共API,进而基于公共API以较少的开发成本实现大批量OpenAPI的快速发布。

具体地,本发明基于ERP产品中对于业务数据进行统一描述的元数据,按照元数据的规则对各种业务数据进行统一的访问,封装通用的操作作为公共API,将公共API作为ACC(Adapter Common Component,适配器公共)组件,以补丁的形式发布在ERP产品中,对外提供REST(Representational State Transfer,表述性状态转移)资源,和原来每个业务模块自己实现的OpenAPI是并列关系。部署在ERP产品所在私有云中的网关(即私有云网关)负责OpenAPI调用的转发、过滤、统计等功能,其中的适配器对公共API做统一的处理,如结果集限制、公式执行等。整体的实现原理图如图6所示,其中,ACC组件实现了基于元数据所开发的公共API,基于公共API的查询方式需要输入的参数包括:业务数据的类名和查询条件,这些都是API的调用者输入的,API的实现者不需要对各种业务数据的了解,只需要了解元数据即可。

在ERP系统中所有的业务数据都是按照元数据描述的规则储存的,所以在知道该业务数据的类名后,就可以通过元数据信息获取到与其相关的类,以及它们所对应的数据库表(即资源路径)。而查询条件中以元数据全路径的方式确定属性,从而查询出满足条件的业务数据。换句话说,根据公共API和调用请求中包含的业务数据的类名,确定业务数据的类和资源路径,进而依据查询条件进行查询。

为了保护ERP产品中部分数据的安全,ACC组件中实现白名单和黑名单功能,在白名单文件中配置可以通过公共API访问的类名,在黑名单文件中配置不允许通过公共API访问的类名。这样在公共API被调用时就可以根据类名来判断是否允许访问对应的数据。

图6中所示的业务组件可以根据每个业务模块自己实现的OpenAPI来实现数据的访问,即在图6所示的原理图中,可以兼容目前的OpenAPI的实现方案。

其中的私有云网关部署在ERP服务所在的私有云中,该网关负责对外部的API调用进行过滤转发,对于公共API的调用,网关中的适配器会进行相关的处理。具体如图7所示,在接收到查询请求时,网关适配器对查询条件进行封装,以转换为ACC组件支持的格式,进而传递给ACC组件,ACC组件构建查询条件并执行查询操作,然后由网关适配器对查询结果进行处理。

由于基于元数据开发的公共API只是通用的API,因此可以按照不同的业务将其封装成不同业务下的简单查询API,在配置文件中配置对应的资源路径和类名映射即可,这样每个业务模块下都有了几个简单的查询API,由于ERP产品中业务模块是非常多的,所以一个公共API其实是实现了很多个API,这些API在经过网关时会经过适配器的处理,最终调用的还是那个公共API。换句话说,可以根据公共API和每种业务数据(也即业务模块)对应的资源路径和类名映射来生成针对每种业务数据的API,这样基于公共API的查询方式仅需要输入针对某种业务数据的查询条件即可。

此外,通过将一些处理放到网关的适配器中,如查询结果的处理(包括公式执行、字段过滤、精度处理等),降低了对ERP产品的侵入性,如果有新的处理功能,只需要在网关的适配器中进行就可以了,无需修改ERP服务器。

本发明上述实施例的技术方案极大地降低了OpenAPI的开发工作量,可以无需了解详细业务逻辑,只需通过配置文件就能够快速发布大量的OpenAPI。同时,私有云网关及其适配器可以确保ERP产品对OpenAPI进行更好的监控和管理,也能更方便地提供一些公共处理(如结果集限制、公式执行等)。

以上结合附图详细说明了本发明的技术方案,本发明提出了一种新的基于元数据的OpenAPI实现方案,可以根据公共API和调用方发送的API调用请求来查询得到相应的业务数据,无需针对每个业务数据重新开发OpenAPI,极大地降低了OpenAPI的开发工作量和实现难度,有利于满足企业对OpenAPI的需求。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1