CN109739573B - 实现api接口调用的处理方法及装置、实现api接口的系统 - Google Patents
实现api接口调用的处理方法及装置、实现api接口的系统 Download PDFInfo
- Publication number
- CN109739573B CN109739573B CN201811610997.7A CN201811610997A CN109739573B CN 109739573 B CN109739573 B CN 109739573B CN 201811610997 A CN201811610997 A CN 201811610997A CN 109739573 B CN109739573 B CN 109739573B
- Authority
- CN
- China
- Prior art keywords
- interface
- api
- parameter
- module
- metadata
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 128
- 238000012795 verification Methods 0.000 claims abstract description 117
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000005538 encapsulation Methods 0.000 claims abstract description 9
- 238000004806 packaging method and process Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 16
- 238000012423 maintenance Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及一种实现API接口调用的处理方法及装置、以及一种实现API接口的系统。该方法包括:对所部署任意API接口的调用,通过统一接入点接收相应的接口调用请求;根据加载的接口元数据,进行接口调用请求中接口参数的动态校验;在接口参数的动态校验成功后,为接口参数加载对应的业务逻辑处理对象;向业务逻辑处理对象传入接口参数,使业务逻辑处理对象响应接口调用请求。该系统包括:API接口数据模块,用于存储接口元数据;外部对象封装模块,用于封装业务逻辑处理对象和参数验证对象;API接口调用处理模块,用于采用统一逻辑对接收的全部接口调用请求进行处理,所采用的统一逻辑用于实现上述方法。本申请能够对API接口进行灵活扩展。
Description
技术领域
本申请涉及互联网应用技术领域,尤其涉及实现API接口调用的处理方法及装置,以及实现API接口的系统、电子设备、计算机可读存储介质。
背景技术
API(Application Programming Interface,应用程序编程接口)接口技术广泛应用于不同系统之间的功能实现和数据交互操作,进而实现系统之间的可互操作和数据共享。
在现有实现中,对于一系统而言,其每个功能的实现以及此功能所对应数据需求指定,都将在系统的程序代码中定义一个对应的API接口。如图1所示,单个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是本申请背景技术所涉及的一种实现API接口调用过程的示意图;
图2是根据本申请所涉及的一种实施环境的示意图;
图3是根据一示例性实施例示出的一种实现API接口的系统的示意图;
图4是根据一示例性实施例示出的一种实现API接口调用的处理方法的流程图;
图5是图4对应实施例中步骤420在一个实施例的流程图;
图6是根据一示例性实施例示出的一种有向无环图的结构示意图;
图7是根据一示例性实施例示出的一种实现API接口调用的处理装置的框图;
图8是根据一示例性实施例示出的一种电子设备的硬件框图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图2是本申请涉及的实施环境的示意图。如图2所示,该实施环境为一网络服务系统,该网络服务系统包括客户端100和接入服务器200、业务系统服务器300和运维客户端400。
其中,该网络服务系统中的各个组成部分之间,分别通过自身所配置的通信模块建立无线或者有线的网络连接,进而通过所建立的网络连接实现各组成部分之间的通信。
客户端100作为API服务消费方,客户端100将通过接入服务器200向业务系统服务器300发起具体API接口的接口调用请求,以从业务系统服务器300中获取相应的网络服务。客户端100具体可以是智能手机、平板电脑、笔记本电脑、计算机中的其中一种,本处不进行限制。
另外,客户端100的数量可以是多个(图2中示出2个),并且每一客户端100可以根据具体的业务需求,向业务系统服务器300发起多个API接口的调用,本处均不进行限制。
业务系统服务器300作为API服务提供方,在接收到客户端100发起的接口调用请求后,通过响应接口调用请求,使用具体的业务处理逻辑对接口调用请求所包含接口参数进行处理,并将处理结果通过接入服务器200返回至客户端100,由此实现客户端100对业务系统服务器300进行的API接口调用。业务系统服务器300具体可以是一单独的服务器,也可以是由若干服务器构成的服务器集群,本处不进行限制。
运维客户端400则用于对业务系统服务器300中所设置的API接口进行相应维护,例如在业务系统服务器300中新增API接口,或者变更业务系统服务器300中的API接口等。运维客户端400具体可以是笔记本电脑或者计算机中的至少一种。
在本实施环境中,对API接口所对应接口调用请求的处理是在业务系统服务器300中进行的,本申请实施例所提出的实现API接口调用的处理方法,以及实现API接口的系统均可应用于业务系统服务器300。
应当说明的是,本实施例所提供的网络服务系统只是为了便于理解本申请的思想而提出的一种示例性实施环境,不能认为是提供了对本申请的使用范围的任何限制。
图3是根据一示例性实施例示出的一种实现API接口的系统,该系统可以被配置于任意的API服务提供方,以实现API服务提供方对API服务消费方所发起API接口调用的处理。
首先需要说明的是,本实施例所描述的API服务提供方和API服务消费方是分别对应不同功能的系统,其中,将发起API接口调用的系统称为API服务消费方,将接收并处理相应接口调用请求的系统称为API服务提供方。
另外,还需要说明的是,本实施例所描述的实现API接口的系统应当理解为,将能够完成一种或几种软件功能的软件程序按照一定逻辑所构成的应用系统。
如图3所示,该系统可以包括API接口数据模块310、外部对象封装模块320和API接口调用处理模块330。
API接口数据模块310用于存储若干API接口的接口元数据。其中,若干API接口是指API服务提供方所能提供调用的所有API接口,接口元数据则是指分别构成每一API接口的接口规范信息,例如每一API接口的名称、每一API接口所包含的接口参数等。
在一示例性的实施方式中,接口元数据包括API接口定义信息、API参数定义信息和数据类型定义信息。其中,API接口定义信息定义了每个API接口的名称、版本、可用性等基本信息。API参数定义信息定义了每个API接口可以包含一个或者多个接口参数,并且每个接口参数可以包含:参数名称、数据类型、取值规则、参数依赖、外部验证对象等信息。数据类型定义信息定义了具体的接口参数可以被指定为哪些数据类型,例如,所指定的数据类型可以是整数、字符串、日期/时间、枚举等基本类型;也可以是身份证、邮件地址、URL、邮政编码等对象类型;或者还可以是json结构、文件等复合类型。
也即是说,API接口数据模块310规范了每一API接口包含哪些接口要素,每种接口要素包含哪些接口属性。API接口数据模块310中存储的接口元数据,也应当分别包含与每一API接口相对应的接口元数据。对API服务提供方来说,其所提供调用的每一API接口则是依据API接口数据模块310所描述的接口规范信息进行创建的。
示例性的,API接口数据模块310可以是数据库,也可以是文件或者其它可以保存信息的存储介质,以对API接口的接口元数据进行持久化保存,本处不进行限制。
外部对象封装模块320用于封装API接口对应的业务逻辑处理对象和参数验证对象。其中,业务逻辑处理对象是指,与每一API接口相对应的业务逻辑处理程序;参数验证对象则是根据API接口所对应接口元数据中所定义的、且用于对API服务消费方所发起接口调用请求中接口参数进行特定校验的程序。
其中,对接口参数的特定校验可理解为,采用自定义的验证程序对接口参数进行校验,能够对接口参数的校验环节进行扩展,并实现接口参数验证可定制的需求。
API接口调用处理模块330用于采用统一逻辑对所接收的全部接口调用请求进行处理,并且,所采用的统一逻辑实现如下实施例所描述的实现API接口调用的处理方法,本处不作赘述。
在API接口调用处理模块330中,无需关注每个API接口的具体业务逻辑处理细节,只需动态加载指定的业务逻辑处理对象来处理具体API接口的业务逻辑,并获取相应的业务逻辑处理结果,返回给相应的API服务消费方即可。
由此,在本实施例所提供系统中,通过设置API接口数据模块和外部对象封装模块,使得API服务提供方所提供API接口的接口参数与业务处理逻辑分离,并通过设置API接口调用处理模块,使得API服务提供方能够采用统一逻辑对所接收的全部接口调用请求进行处理,从而实现对不同API接口以一致性的方式进行处理。
当需要对API服务提供方所提供的API接口进行增加时,只需对在API接口数据模块中新增API接口对应的接口元数据,并在外部对象封装模块中新增对应的业务逻辑处理对象和/或参数校验对象即可,无需修改API接口调用处理模块中的统一逻辑代码。
同理,当需要对API服务提供方所提供的API接口进行变更时,只需对API接口数据模块中与API接口相应的接口元数据进行变更,且对外部对象封装模块中与API接口相应的业务逻辑处理对象和/或参数校验对象进行变更即可,仍无需修改API接口调用处理模块中的统一逻辑代码。
需要说明的是,当上述实现API接口的系统配置于图2所示实施环境时,作为一种具体的实施方式,可将该系统配置于业务系统服务器300中,这时,接入服务器200仅作为客户端100所发起接口调用请求的传送载体,将接口调用请求传送至业务系统服务器300中。
而在另一示例性的实施方式中,可将该系统配置为接入服务器200以及业务系统服务器300中,由接入服务器200和业务系统服务器300构成API服务提供方。其中,接入服务器200接收客户端100所发送的接口调用请求后,由接入服务器200执行接口调用请求中接口参数的校验,并由业务系统服务器300执行对应的业务逻辑处理。与现有技术相比,在本实施例所提供实现API接口的系统中,可以根据具体需求对API服务提供方所提供的API接口进行灵活扩展,极大地提高了API接口的扩展性及灵活性。
此外,即使频繁地对系统中API接口进行新增和修改,也不会对API接口调用处理模块中的统一逻辑代码产生影响,不会影响整个API服务提供方所对应系统的稳定性。图4是根据一示例性实施例所示出一种实现API接口调用的处理方法的流程图,如前所述,该方法可通过图3所示系统中的接口调用处理模块执行实现。如图4所示,该方法至少包括以下步骤:
步骤410,对所部署任意API接口的调用,通过统一接入口接收相应的接口调用请求。
其中,所部署的任意API接口是指,API服务提供方所提供调用的任意API接口。这些API接口的接口元数据均存储于API接口数据模块中,并且,对应的业务逻辑处理对象也封装于外部对象封装模块中。
与所部署任意API接口相应的接口调用请求,是由API服务消费方根据具体的业务需求发起的,如图3所示,不同API服务消费方分别向API服务提供方发送接口调用请求,API服务提供方根据API接口调用处理模块中设置的统一接入点进行所有接口调用请求的接收。
便于理解的,上述统一接入点可理解为一处代码,该代码在运行时是可多实例、多线程并行运行的。因此,在图3所示系统中,不同API服务消费方可以在同一时间发起API接口的调用,也可以在不同时间发起API接口的调用;并且,不同API服务消费方所请求调用的API接口可以相同,也可以不同。
步骤420,根据所加载的接口元数据,进行接口调用请求中接口参数的动态校验。
其中,所加载的接口元数据是指,API服务提供方所提供全部API接口的接口元数据集合,具体是从API接口数据模块中获取并加载的。在图3所示系统中,API接口调用处理模块从API接口数据模块中获取所存储的接口元数据,并将获取的接口元数据加载至接口元数据缓存中。接口元数据缓存具体可采用哈希表缓存技术实现。
对接口调用请求中的接口参数进行动态校验是指,根据接口元数据中所定义API接口的规范信息,动态进行接口调用请求中接口参数的合法性校验以及特定校验。其中,合法性校验是指根据接口元数据所包括的API接口定义信息、API参数定义以及数据类型定义信息对接口参数的合法性进行验证;特定验证是指,从外部对象封装模块中加载接口元数据中所定义的参数验证对象,以使用该参数验证对象对接口参数进行特定校验。
一般来说,对接口调用请求中的接口参数进行合法性校验,是对该接口参数进行验证的必要流程;而对接口参数进行特定验证的流程,则是根据接口元数据所定义的具体信息决定的。只有当接口元数据中定义了对接口参数进行特定校验的参数验证对象,才能使用参数验证对象对接口参数进行特定校验。
如果对接口调用请求中接口参数的合法性校验失败,则终止对该接口调用请求的处理,也不会对接口参数进行特定校验。
对接口参数的合法性校验失败至少可以包括以下情况:如果根据接口元数据中的API定义信息对接口调用请求中接口参数校验失败,可表示API服务提供方中不存在API服务消费方所请求调用的API接口;或者,如果根据接口元数据中的API参数定义信息对接口参数校验失败,则可表示接口调用请求中包含了违反接口元数据定义规则的内容。前述任何一种失败情形一旦发生,接口调用请求的处理就会终止,并按照接口调用请求传送的原路径向API服务消费方返回相应的错误信息。
因此,对于不同API接口的调用,不同接口调用请求中接口参数的校验过程是动态进行的。
并且,只有在对接口调用请求中的接口参数成功进行了动态校验的条件下,API服务提供方才能够对API服务消费方所发起的接口调用请求进行业务逻辑处理。
步骤430,在接口参数的动态校验成功后,为接口参数加载对应的业务逻辑处理对象。
其中,不同API接口的业务逻辑处理对象封装于外部对象封装模块中,在接口调用请求中的接口参数动态校验成功后,则从外部对象封装模块中获取相应的业务逻辑处理对象,并将获取的业务逻辑处理对象加载至指定进程。
需要说明的是,不同的编程语言对业务逻辑处理对象的加载,所采用的加载方式也不同。例如,java语言和c#语言可通过反射机制实现对业务逻辑处理对象的加载,c/c++语言可通过操作系统提供的动态链接库加载机制,来实现对业务逻辑处理对象的加载。
下面以java语言的实现方式进行举例说明:首先需要对外部对象封装模块中所封装的每一业务逻辑处理对象预先设置class路径,以在接口参数的动态校验成功后,能够获取与接口参数相对应业务逻辑处理对象的class路径;然后通过java语言的反射机制,根据所获取的class路径加载相应业务逻辑处理对象,并在相应进程中生成业务逻辑处理对象实例。
上述生成业务逻辑处理对象实例是指,获得业务逻辑处理对象按照约定规范实现的业务处理入口。例如,在java语言中,业务处理入口通过interface(一种面向对象编程语言中接口操作的关键字)实现。
也即是说,外部对象封装模块中所封装的每一业务逻辑处理对象预先按照约定好的接口实现了业务处理逻辑。由此,在加载业务逻辑处理对象的同时,能够相应获得业务逻辑处理对象的业务处理入口。
步骤440,向业务逻辑处理对象传入接口参数,使业务逻辑处理对象响应接口调用请求。
其中,向业务逻辑处理对象中传入接口参数是通过业务逻辑处理对象的业务处理入口实现的。通过将接口调用请求中的接口参数传入业务处理入口,业务逻辑处理对象即可按照自身的业务处理逻辑对所传入的接口参数进行业务逻辑处理,从而实现对接口调用请求的响应。
业务逻辑处理对象对接口参数进行业务逻辑处理后,还需要将处理结果返回至统一接入点,并按照相应接口调用请求的原路径返回给API服务消费方。
在本实施例所提供方法中,由于对所有接口调用请求的接收都是通过统一接入点执行,而具体业务或者功能的实现,则会在接口调用请求中接口参数动态校验成功之后,通过对应业务逻辑处理对象响应接口调用请求,实现API接口调用,进而达成所请求的业务或者功能。
因此,API接口调用处理模块通过执行本实施例所揭示的方法,能够实现对API服务请求方所发起API接口调用的处理。
在一示例性实施例中,如图5所示,上述实施例中步骤420具体可以包括以下步骤:
步骤421,从接口调用请求中获取所请求调用API接口的接口参数。
其中,在API服务消费方所发起的接口调用请求中,至少应当包含所请求调用API接口的名称、接口参数等基本信息,因此可以从接收的接口调用请求中获取所请求调用API接口的接口参数。
应当说明的是,接口调用请求中所包含接口参数的数量可以是至少一个,或者,接口调用请求中也可以不含有接口参数(即无参),本处不进行限制。
步骤422,根据所加载接口元数据中与接口参数相对应的目标接口元数据,对接口参数进行合法性校验。
其中,与接口参数相对应的目标接口元数据是指,在API服务提供方所加载接口元数据中,与API服务消费方所请求调用API接口的名称或者其他外加信息(如API接口的版本号)相对应的接口元数据。由此,所加载接口元数据中与接口参数相对应的目标接口元数据,可以根据接口调用请求中所包含API接口的名称或其他外加信息获取。
例如,假设一API接口消费方请求调用API接口1,则相应接口调用请求中所包含API接口的名称为“API接口1”,且包含有API接口1对应的接口参数。由此,则可以从所加载的接口元数据中获得API接口1对应的接口元数据为目标接口元数据。相反地,如果所加载的接口元数据中不存在“API接口1”的元数据,则表示API服务提供方不支持此API接口的服务。
当获得目标接口元数据后,针对接口调用请求包含的每个接口参数,分别基于该接口参数的名称、数据类型、取值规则等已定义的规范信息,进行每个接口参数的合法性检查,主要检查项目可以包括:必要的接口参数是否已提供,数据类型是否与定义一致,参数取值是否符合取值规则等。
当API接口消费方所请求调用的API接口中各接口参数存在依赖关系时,在对各接口参数进行上述校验后,还需要对各接口参数的依赖关系进行检查。如果一个接口参数需要依赖多个接口参数,那么被依赖的接口参数合法性检查必须都通过,视为该接口参数合法性检查成功的必要条件之一。
在一示例性的实施方式中,对一API接口的多个接口参数,各接口参数之间的参数依赖关系可以采用有向无环图(DAG,Directed acyclic graph)来表达参数依赖的结构。
举例来说,若假设一接口调用请求中包含接口参数A~F,当采用有向无环图的结构实现接口参数间的参数依赖关系如图6所示时,通过对该有向无环图的遍历,获得实现各接口参数的验证顺序则依次为:ACBEBDF。
步骤423,如果目标接口元数据中定义了对接口参数进行特定校验的参数验证对象,则动态加载该参数验证对象。
其中,对参数验证对象进行动态加载是指,如果目标接口元数据的API参数定义信息中定义了对接口参数进行特定校验的参数验证对象,则从外部对象封装模块中获取相应的参数验证对象,并将该参数验证对象加载至指定进程。
当接口调用请求中包含多个接口参数,并且目标接口元数据相应定义了多个验证对象时,则通过分别加载参数验证对象,对相应的接口参数进行特定校验。
与上述实施例同理,不同的编程语言对参数验证对象的动态加载,所采用的加载方式也不同。例如,java语言和c#语言可通过反射机制实现对参数验证对象的动态加载,c/c++语言可通过操作系统提供的动态链接库加载机制,来实现对参数验证对象的动态加载。
仍以java语言的实现方式进行举例说明:首先需要对外部对象封装模块中所封装的每一参数验证对象设置class路径,通过java语言的反射机制,则可根据所设置的class路径加载相应参数验证对象,并在指定进程中生成参数验证对象实例。
上述生成参数验证对象实例是指,获得参数验证对象按照约定规范实现的参数验证入口。例如,在java语言中,参数验证入口仍可通过interface(一种面向对象编程语言中接口操作的关键字)实现。
由此,外部对象封装模块中所封装的每一参数验证对象已经按照约定好的接口实现了参数验证逻辑,在动态加载参数验证对象的同时,能够获得参数验证对象的参数验证入口。
步骤424,向参数验证对象中传入接口参数,由该参数验证对象对接口参数进行特定验证。
其中,向参数验证对象中传入接口参数是通过参数验证对象的参数验证入口实现的。通过将接口参数传入参数验证入口,参数验证对象即可按照自身的参数验证逻辑对所传入的接口参数进行验证。
因此,在本实施例中,通过对接口调用请求中的接口参数进行动态校验,能够对API服务消费方所发起的接口调用请求的安全性进行验证,从而确保进行API接口调用的安全性。
在另一示例性实施例中,上述实现API接口调用的处理方法还包括以下步骤:
对指定存储介质中存储的接口元数据进行动态加载,以在指定存储介质中存储的接口元数据进行更新后,重新加载所更新的接口元数据。
如前所述,指定存储介质具体为图3所示的系统中的API接口数据模块,对指定存储介质中存储的接口元数据进行动态加载则是由API接口调用处理模块相应执行的。
在一示例性的实施方式中,通过设置API接口数据模块中存储的接口元数据存在更新时,由API接口数据模块主动向API接口调用处理模块发起通知信息。
API接口调用处理模块接收该通知信息后,从API接口数据模块中重新获取其所存储的接口元数据,并将获取的接口元数据加载至接口元数据缓存中,从而使得API接口调用处理模块在进行接口参数的动态校验时,根据所重新加载的接口元数据对接口参数进行动态校验。
其中,API接口数据模块向API接口调用处理模块发送通知信息,具体可以是通过中间件缓存技术或者程序间通信技术实现的。
在另一示例性的实施方式中,API接口调用处理模块可通过预设的标志字段,对API接口数据模块中存储的接口元数据进行监控。
具体地,API接口调用处理模块定时地查询API接口数据模块中相应标志字段的变化,如果监控到标志字段的值进行了更新,则从API接口数据模块中重新获取其所存储的接口元数据,并将获取的接口元数据加载于接口元数据缓存中。
其中,上述对API接口数据模块中相应标志字段的监控过程,具体可以通过轮询标志状态变化的监控技术实现。
由此,通过本实施例提供的方法,使得API接口调用处理模块能够及时获取API接口数据模块中接口元数据的更新,从而保证API接口调用处理模块对新增或者变更API接口的调用进行有效处理。
图7是根据一示例性实施例所示出的一种实现API接口调用的处理装置,该装置可应用于任意的API服务提供方。如图7所示,该装置包括接口调用请求接收模块510、接口参数动态校验模块520、接口参数动态校验模块530和接口调用请求响应模块540。
其中,接口调用请求接收模块510用于对所部署任意API接口的调用,通过统一接入点接收相应的接口调用请求。
接口参数动态校验模块520用于根据加载的接口元数据进行接口调用请求中接口参数的动态校验。
业务逻辑对象加载模块530用于在接口参数的动态校验成功后,为接口参数加载对应的业务逻辑处理对象。
接口调用请求响应模块540用于向业务逻辑处理对象传入接口参数,使业务逻辑处理对象响应接口调用请求。
在另一示例性实施例中,接口参数动态校验模块520包括接口参数获取单元和合法性校验单元。
接口参数获取单元用于从接口调用请求中获取所请求调用API接口的接口参数。
合法性校验单元用于根据所加载接口元数据中与接口参数相对应的目标接口元数据,对接口参数进行合法性校验。
在另一示例性实施例中,接口参数动态校验模块520还包括参数验证对象加载单元和特定校验单元。
参数验证对象加载单元用于在目标接口元数据中定义了对接口参数进行特定校验的参数验证对象的情况下,动态加载该参数验证对象。
特定校验单元用于向参数验证对象传入接口参数,由参数验证对象对接口参数进行特定校验。
在另一示例性实施例中,业务逻辑对象加载模块530包括路径获取单元和路径加载单元。
路径获取单元用于获取接口参数所对应业务逻辑处理对象的路径。
路径加载单元用于根据所获取业务逻辑处理对象的路径,进行业务逻辑处理对象的加载。
在另一示例性实施例中,该装置还包括接口元数据动态加载模块。
其中,接口元数据动态加载模块用于对指定存储介质中存储的接口元数据进行动态加载,以在指定存储介质中存储的接口元数据进行更新后,重新加载所更新的接口元数据。
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
在一示例性实施例中,一种电子设备,包括:
处理器;及
存储器,其中,存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时实现上述各实施例中的实现API接口调用的处理方法。
图8是根据一示例性实施例所示出的一种电子设备的框图。该电子设备可以被具体实现为图2所示实施环境中的业务系统服务器300。
需要说明的是,该电子设备只是一个适配于本申请的示例,不能认为是提供了对本申请的使用范围的任何限制。该电子设备也不能解释为需要依赖于或者必须具有图8中示出的示例性的电子设备中的一个或者多个组件。
该电子设备的硬件结构可因配置或者性能的不同而产生较大的差异,如图8所示,电子设备包括:电源610、接口630、至少一存储器650、以及至少一中央处理器(CPU,CentralProcessing Units)670。
其中,电源610用于为电子设备上的各硬件设备提供工作电压。
接口630包括至少一有线或无线网络接口631、至少一串并转换接口633、至少一输入输出接口635以及至少一USB接口637等,用于与外部设备通信。
存储器650作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统651、应用程序653或者数据655等,存储方式可以是短暂存储或者永久存储。其中,操作系统651用于管理与控制电子设备上的各硬件设备以及应用程序653,以实现中央处理器670对海量数据655的计算与处理,其可以是WindowsServerTM、Mac OSXTM、UnixTM、LinuxTM等。应用程序653是基于操作系统651之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图8中未示出),每个模块都可以分别包含有对电子设备的一系列计算机可读指令。数据655可以是存储于磁盘中的接口元数据等。
中央处理器670可以包括一个或多个以上的处理器,并设置为通过总线与存储器650通信,用于运算与处理存储器650中的海量数据655。
如上面所详细描述的,适用本申请的电子设备将通过中央处理器670读取存储器650中存储的一系列计算机可读指令的形式来完成实现API接口调用的处理方法。
此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本申请,因此,实现本申请并不限于任何特定硬件电路、软件以及两者的组合。
在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的实现API接口调用的处理方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。
Claims (7)
1.一种实现API接口调用的处理方法,其特征在于,应用于业务系统服务器中统一逻辑的API接口调用处理模块,所述业务系统服务器还包括存储有不同API接口的接口元数据的API接口数据模块以及封装有不同API接口的业务逻辑处理对象和参数验证对象的外部对象封装模块,所述外部对象封装模块中的业务逻辑处理对象和所述API接口数据模块中的接口元数据通过运维客户端控制可同步进行动态更新;所述方法包括:
对所部署任意API接口的调用,通过所述API接口调用处理模块中的统一接入点接收相应的接口调用请求;
根据从所述API接口数据模块中所加载的接口元数据,进行所述接口调用请求中接口参数的动态校验;
在所述接口参数的动态校验成功后,在所述外部对象封装模块中为所述接口参数加载对应的业务逻辑处理对象;
向所述业务逻辑处理对象传入所述接口参数,使所述业务逻辑处理对象响应所述接口调用请求;其中,所述根据从所述API接口数据模块中所加载的接口元数据,进行所述接口调用请求中接口参数的动态校验包括:
从所述接口调用请求中获取所请求调用API接口的接口参数;
根据所加载接口元数据中与所述接口参数相对应的目标接口元数据,对所述接口参数进行合法性校验;
如果合法性校验成功,且所述目标接口元数据中定义了对所述接口参数进行特定校验的参数验证对象,则从所述外部对象封装模块中动态加载所述参数验证对象;
向所述参数验证对象传入所述接口参数,由所述参数验证对象对所述接口参数进行所述特定校验。
2.根据权利要求1所述的方法,其特征在于,所述在所述接口参数的动态校验成功后,在外部对象封装模块中为所述接口参数加载对应的业务逻辑处理对象,包括:
获取所述接口参数所对应业务逻辑处理对象的路径;
根据所获取业务逻辑处理对象的路径,进行所述业务逻辑处理对象的加载。
3.根据权利要求1至2任一项所述的方法,其特征在于,在接收任意业务的执行中,所发起API接口调用的接口调用请求之前,所述方法还包括:
对指定存储介质中存储的接口元数据进行动态加载,以在所述指定存储介质中存储的接口元数据进行更新后,重新加载所更新的接口元数据。
4.一种实现API接口调用的处理装置,其特征在于,应用于业务系统服务器中统一逻辑的API接口调用处理模块,所述业务系统服务器还包括存储有不同API接口的接口元数据的API接口数据模块以及封装有不同API接口的业务逻辑处理对象和参数验证对象的外部对象封装模块,所述外部对象封装模块中的业务逻辑处理对象和所述API接口数据模块中的接口元数据通过运维客户端控制可同步进行动态更新;所述装置包括:
接口调用请求接收模块,用于对所部署任意API接口的调用,通过所述API接口调用处理模块中的统一接入点接收相应的接口调用请求;
接口参数动态校验模块,用于根据从所述API接口数据模块中所加载的接口元数据进行所述接口调用请求中接口参数的动态校验;
业务逻辑对象加载模块,用于在所述接口参数的动态校验成功后,在所述外部对象封装模块中为所述接口参数加载对应的业务逻辑处理对象;
接口调用请求响应模块,用于向所述业务逻辑处理对象传入所述接口参数,使所述业务逻辑处理对象响应所述接口调用请求;其中,所述接口参数动态校验模块包括:
合法性校验单元,用于根据所加载的接口元数据中与所述接口参数相对应的目标接口元数据,对所述接口调用请求中的接口参数进行合法性校验;
特定校验单元,用于当合法性校验成功,且所述目标接口元数据中定义了对所述接口参数进行特定校验的参数验证对象时,通过从所述外部对象封装模块中加载与所述接口参数对应的参数验证对象,使所加载的参数验证对象对所述接口参数进行特定校验。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
接口元数据动态加载模块,用于对指定存储介质中存储的接口元数据进行动态加载,以在所述指定存储介质中存储的接口元数据进行更新后,重新加载所更新的接口元数据。
6.一种实现API接口的系统,其特征在于,所述系统包括:
API接口数据模块,用于存储若干API接口的接口元数据;
外部对象封装模块,用于封装所述API接口对应的业务逻辑处理对象和参数验证对象;
API接口调用处理模块,用于采用统一逻辑对所接收的全部接口调用请求进行处理,其中,所采用的统一逻辑实现权利要求1至3任一项所述的方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811610997.7A CN109739573B (zh) | 2018-12-27 | 2018-12-27 | 实现api接口调用的处理方法及装置、实现api接口的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811610997.7A CN109739573B (zh) | 2018-12-27 | 2018-12-27 | 实现api接口调用的处理方法及装置、实现api接口的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739573A CN109739573A (zh) | 2019-05-10 |
CN109739573B true CN109739573B (zh) | 2023-07-18 |
Family
ID=66361419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811610997.7A Active CN109739573B (zh) | 2018-12-27 | 2018-12-27 | 实现api接口调用的处理方法及装置、实现api接口的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739573B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188038B (zh) * | 2019-05-13 | 2023-07-21 | 青岛海尔科技有限公司 | 一种参数校验方法及装置、校验架构 |
CN110309048A (zh) * | 2019-05-21 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于模拟端口改进软件集成系统的方法及相关设备 |
CN110210876A (zh) * | 2019-05-28 | 2019-09-06 | 数贸科技(北京)有限公司 | 一种用于b2b平台的商品信息处理方法及装置 |
CN110381135B (zh) * | 2019-07-18 | 2021-09-28 | 北京奇艺世纪科技有限公司 | 接口创建方法、服务请求方法、装置、计算机设备和介质 |
CN110673892B (zh) * | 2019-09-17 | 2023-01-03 | 中电万维信息技术有限责任公司 | 一种基于组件配置的接口统一调用方法 |
CN111078736A (zh) * | 2019-11-06 | 2020-04-28 | 用友网络科技股份有限公司 | 一种数据聚合处理方法、装置、终端及存储介质 |
CN112988409B (zh) * | 2019-12-18 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 一种接口调用方法、装置、计算机设备及存储介质 |
CN111158792B (zh) * | 2020-01-02 | 2023-05-16 | 普元信息技术股份有限公司 | 分布式架构下实现动态可配置的服务参数校验处理系统及其方法 |
CN111708523B (zh) * | 2020-05-20 | 2023-10-13 | 广州太平洋电脑信息咨询有限公司 | 一种基于NodeJs的开发方法、系统及存储介质 |
CN111984713A (zh) * | 2020-06-29 | 2020-11-24 | 五八到家有限公司 | 一种数据处理方法、装置、设备和存储介质 |
TWI747371B (zh) * | 2020-07-10 | 2021-11-21 | 財金資訊股份有限公司 | 多端點與跨業跨機構之統一規格樣式應用程式介面平台及其操作方法、電腦可讀取之記錄媒體及電腦程式產品 |
CN112667539A (zh) * | 2021-01-05 | 2021-04-16 | 北京中电普华信息技术有限公司 | 一种数据传输接口、数据处理方法及装置 |
EP4040296A1 (en) * | 2021-02-09 | 2022-08-10 | Nokia Solutions and Networks Oy | Apparatus and method to provide data to a network function consumer |
CN113094233A (zh) * | 2021-04-14 | 2021-07-09 | 广州九尾信息科技有限公司 | 一种服务资源识别与处理的方法 |
CN113238813A (zh) * | 2021-05-11 | 2021-08-10 | 浪潮软件股份有限公司 | 一种业务应用枚举灵活配置生成的方法 |
CN113703739B (zh) * | 2021-09-03 | 2023-05-09 | 上海森亿医疗科技有限公司 | 基于omiga引擎的跨语言融合计算方法、系统及终端 |
CN114020319B (zh) * | 2021-09-28 | 2024-09-17 | 深圳市潮流网络技术有限公司 | 接口调用的方法、装置、服务器及计算机可读存储介质 |
CN114157709B (zh) * | 2021-11-05 | 2024-03-15 | 广州九尾信息科技有限公司 | 一种分布式服务数据加密、脱敏的方法 |
CN114706583A (zh) * | 2022-04-07 | 2022-07-05 | 中国电信股份有限公司 | Web应用生成方法及装置、电子设备及存储介质 |
CN114816569A (zh) * | 2022-04-14 | 2022-07-29 | 工银科技有限公司 | 动态加载方法及装置 |
CN116737113B (zh) * | 2023-04-23 | 2024-01-02 | 中国科学院高能物理研究所 | 面向海量科学数据的元数据目录管理系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637188A (zh) * | 2010-12-15 | 2012-08-15 | 微软公司 | 用于web应用的可扩展模板管道 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620536B (zh) * | 2009-08-17 | 2012-11-14 | 用友软件股份有限公司 | 一种调用功能函数的方法和装置 |
CN103123593B (zh) * | 2011-11-18 | 2016-08-31 | 腾讯科技(深圳)有限公司 | Java应用服务器及处理Web业务的方法 |
CN102799424B (zh) * | 2012-06-12 | 2016-03-02 | 上海雷腾软件股份有限公司 | 一种敏捷式高效分层服务器端接口架构的实现方法 |
CN103049271B (zh) * | 2012-12-27 | 2016-01-27 | 微梦创科网络科技(中国)有限公司 | 自动生成api接口的描述文档的方法和装置 |
US20140304683A1 (en) * | 2013-04-08 | 2014-10-09 | Obigo Inc. | Method, server and computer-readable recording media for managing metastore |
CN104283919B (zh) * | 2013-07-05 | 2019-11-05 | 中兴通讯股份有限公司 | 一种接口调用系统及方法 |
CN105677326B (zh) * | 2015-12-28 | 2019-03-22 | 国云科技股份有限公司 | 一种软件接口参数验证方法 |
CN106445562B (zh) * | 2016-11-14 | 2019-11-15 | 用友网络科技股份有限公司 | 基于元数据的OpenAPI实现方法及OpenAPI实现装置 |
CN106991023B (zh) * | 2017-03-22 | 2020-10-09 | 深圳市彬讯科技有限公司 | 一种接口参数校验方法及组件 |
-
2018
- 2018-12-27 CN CN201811610997.7A patent/CN109739573B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637188A (zh) * | 2010-12-15 | 2012-08-15 | 微软公司 | 用于web应用的可扩展模板管道 |
Also Published As
Publication number | Publication date |
---|---|
CN109739573A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739573B (zh) | 实现api接口调用的处理方法及装置、实现api接口的系统 | |
US20210263714A1 (en) | System and method for autowiring of a microservice architecture | |
CN108920222B (zh) | 一种基于规则引擎的业务处理方法和装置 | |
CN107590072B (zh) | 一种应用开发和测试的方法和装置 | |
US8739147B2 (en) | Class isolation to minimize memory usage in a device | |
CN110908738B (zh) | 用于运行小程序的方法和装置 | |
US20030200350A1 (en) | Class dependency graph-based class loading and reloading | |
US10069940B2 (en) | Deployment meta-data based applicability targetting | |
CN109614167B (zh) | 一种管理插件的方法和系统 | |
CN110531984B (zh) | 代码编译方法、装置、系统、计算机设备和存储介质 | |
CN112199164A (zh) | 一种保证容器镜像一致性的方法 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN114531477A (zh) | 功能组件的配置方法、装置、计算机设备和存储介质 | |
CN112256989A (zh) | 基于离线包的页面加载方法、装置、终端设备及存储介质 | |
CN113938527B (zh) | Api网关的扩展处理方法、计算设备及存储介质 | |
CN113608800A (zh) | 项目启动方法、装置、电子设备及存储介质 | |
CN111831402B (zh) | 用于管理软件功能的方法、设备和计算机程序产品 | |
CN109375946B (zh) | 一种管理节点包管理器的组件包的方法及系统 | |
CN110955415A (zh) | 一种投影多平台服务适配的方法 | |
CN116954810A (zh) | 容器应用实例的创建方法、系统、存储介质及程序产品 | |
US9720710B2 (en) | Dynamically provisioning, managing, and executing tasks | |
US11017032B1 (en) | Document recovery utilizing serialized data | |
CN117827381B (zh) | 一种基于Kubernets低代码应用运行态部署及扩容方法 | |
CN112650509B (zh) | 应用安装包生成方法、装置、计算机设备和存储介质 | |
KR102336698B1 (ko) | 펌웨어의 유효성을 검증하는 펌웨어 관리 장치 및 방법, 그리고 펌웨어를 업데이트하는 사물인터넷 장치 및 이를 포함하는 시스템 |
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 |