CN109510846A - Api调用系统、方法、装置、电子设备及存储介质 - Google Patents

Api调用系统、方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN109510846A
CN109510846A CN201710825481.3A CN201710825481A CN109510846A CN 109510846 A CN109510846 A CN 109510846A CN 201710825481 A CN201710825481 A CN 201710825481A CN 109510846 A CN109510846 A CN 109510846A
Authority
CN
China
Prior art keywords
api
target
server
call request
call
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
Application number
CN201710825481.3A
Other languages
English (en)
Other versions
CN109510846B (zh
Inventor
黄鑫
徐梓耀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201710825481.3A priority Critical patent/CN109510846B/zh
Priority to PCT/CN2018/105648 priority patent/WO2019052526A1/zh
Publication of CN109510846A publication Critical patent/CN109510846A/zh
Application granted granted Critical
Publication of CN109510846B publication Critical patent/CN109510846B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Abstract

本发明实施例提供了一种API调用系统、装置、方法、电子设备及存储介质。该API调用系统中,目标API调用设备,用于向网关服务器发送调用请求;接收网关服务器反馈的调用结果;网关服务器,用于判断该调用请求是否满足调用目标API的预设条件;如果是,将该调用请求转发给目标API所在的目标业务服务器;接收调用结果,并将该调用结果反馈给目标API调用设备;目标业务服务器,用于接收网关服务器转发的该调用请求;处理该调用请求,获得调用结果;将调用结果发送给网关服务器。本方案可以避免每个业务服务器均需要为执行判断调用请求是否满足调用条件的任务而提供额外的资源所造成的资源浪费问题。

Description

API调用系统、方法、装置、电子设备及存储介质
技术领域
本发明涉及互联网技术领域,特别是涉及API调用系统、方法、装置、电子设备及存储介质。
背景技术
对于网络运营商而言,其通常运营着多项业务,例如云主机业务、数据库业务等,每一项业务都由对应的业务服务器中的应用程序来实现,并且每个业务服务器中都设置有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调用设备,其中,该调用结果为目标业务服务器处理上述调用请求所获得的;
目标业务服务器,用于接收网关服务器转发的上述调用请求;处理该调用请求,获得调用结果;将该调用结果发送给网关服务器。
可选的,网关服务器判断该调用请求是否满足调用目标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的调用请求;
判断该调用请求是否满足调用目标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所在的目标业务服务器;
反馈模块,用于接收目标业务服务器发送的调用结果,并将调用结果反馈给目标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的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本发明实施例提供的方案中针对业务服务器中API的维护和开发成本低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的API调用系统的结构示意图;
图2为本发明另一实施例提供的API调用系统的结构示意图;
图3为本发明再一实施例提供的API调用系统的结构示意图;
图4为本发明实施例中涉及的网关服务器的内部组织结构示意图;
图5为本发明又一实施例提供的API调用系统的结构示意图;
图6为本发明实施例中涉及的管理指令下发过程的信令图;
图7为本发明又一实施例提供的API调用系统的结构示意图;
图8为本发明实施例中涉及的API调用过程的信令图;
图9为本发明一实施例提供的API调用方法的流程示意图;
图10为本发明另一实施例提供的API调用方法的流程示意图;
图11为本发明再一实施例提供的API调用方法的流程示意图;
图12为本发明又一实施例提供的API调用方法的流程示意图;
图13为本发明一实施例提供的API调用装置的结构示意图;
图14为本发明另一实施例提供的API调用装置的结构示意图;
图15为本发明再一实施例提供的API调用装置的结构示意图;
图16为本发明又一实施例提供的API调用装置的结构示意图;
图17为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面首先对本发明中涉及到的技术术语进行简单介绍。
API是预先定义的函数,其目的是为开发人员提供能够基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
API调用设备,在本申请文件中,其是指调用API的设备,例如用户终端设备、运营商的管理设备以及控制设备等,本申请文件中并不限定API调用设备的具体类型,只要是可以调用API的设备即可。
下面再通过具体实施例来对本发明进行详细介绍。
本发明实施例提供的一种API调用系统,包括:网关服务器、API调用设备以及设置有API的业务服务器。如图1所示的本发明一实施例提供的一种API调用系统的结构示意图,API调用系统包括网关服务器、目标API调用设备、API调用设备1~m、目标业务服务器以及业务服务器1~n。其中,m以及n均大于或等于1,即API调用系统中,API调用设备以及业务服务器的数量均大于或等于2。
在本发明实施例的API调用系统中,API调用设备的数量以及业务服务器的数量均可以为多个。API调用设备可以是用户终端设备、运营商的管理设备或运营商的控制设备等;而多个业务服务器通常是同一运营商所拥有的,例如,同一公司A拥有的提供云主机服务的业务服务器1以及提供数据库服务的业务服务器2。另外,业务服务器中所设置的API的种类可以是openAPI(开放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调用设备得到针对目标API的调用请求的具体实现方式可以采用现有技术实现,本发明实施例在此不再详细介绍。
上述网关服务器,用于接收目标API调用设备发送的上述调用请求;判断该调用请求是否满足调用目标API的预设条件;如果该调用请求满足调用目标API的预设条件,将该调用请求转发给目标API所在的目标业务服务器;接收目标业务服务器发送的调用结果,并将调用结果反馈给目标API调用设备;其中,此处所述的调用结果为目标业务服务器处理上述调用请求所获得的。
可以理解,本发明实施例中的网关服务器在接收到关于目标API的调用请求时,先要判断该调用请求是否满足调用目标API的预设条件,只有在满足预设条件的情况下,网关服务器才会将调用请求转发给目标API对应的目标业务服务器;否则,网关服务器不会将该调用请求转发出去,例如,调用请求不满足调用目标API的预设条件,网关服务器可以直接将该调用请求丢弃,并向目标API调用设备发送拒绝调用的信息。
如前背景技术所述,API调用设备调用某API时,API调用设备会向该API所在的业务服务器发送调用请求,该API所在的业务服务器首先需要判断该调用请求是否满足调用条件;而在本发明实施例中,目标API调用设备首先会向网关服务器发送调用请求,然后由网关服务器判断该调用请求是否满足调用目标API的预设条件。可以理解,本发明实施例中的预设条件可以与现有技术中的调用条件完全相同,只是执行此处判断操作的主体不相同。
例如,现有技术中,API调用设备向某API所在的业务服务器发送调用请求后,该业务服务器判断该调用请求是否满足条件x,如果满足,则开始处理该调用请求。则相对应的,如果采用本发明实施例提供的方案,API调用设备向网关服务器发送针对某API的调用请求后,该网关服务器同样判断该调用请求是否满足条件x,如果满足,则将该调用请求转发给该API所在的业务服务器。
作为本发明实施例的一种可选实现方式,上述网关服务器判断所接收到的调用请求是否满足调用目标API的预设条件,可以具体为:
获得目标API的内部服务信息,该内部服务信息包括目标API的地址信息、调用目标API的操作类型和所需资源类型;
基于调用目标API的操作类型和所需资源类型,对该调用请求进行合法性和安全性的验证;判断合法性和安全性的验证是否通过,如果通过,判定该调用请求满足调用目标API的预设条件,否则,判定该调用请求不满足调用目标API的预设条件;
相应的,上述网关服务器将该调用请求转发给目标API所在的目标业务服务器,可以具体为:按照所获得的地址信息,将该调用请求转发给目标API所在的目标业务服务器。
上述目标API的地址信息可以包括目标API所在业务服务器(即目标业务服务器)的IP地址(Internet Protocol Address,互联网协议地址/网际协议地址)和/或MAC(MediaAccess Control,媒体访问控制)地址,以及目标API在目标业务服务器中的接口地址。上述调用目标API的操作类型可以是指常见的POST操作和GET操作等;调用目标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的内部服务信息都存储在网关服务器本地,内部服务信息将会占用网关服务器的存储空间,并且,网关服务器还需要在本地查找内部服务信息,查找操作势必会消耗网关服务器的CPU(Central Processing Unit,中央处理器)资源。
为了减少对网关服务器存储空间的占用以及CPU的消耗,另一种情况下,如图2所示,上述API调用系统还可以包括用于存储API的内部服务信息的数据库服务器,
上述网关服务器获得目标API的内部服务信息,可以具体为:
向数据库服务器发送针对目标API的内部服务信息的获取请求;接收数据库服务器基于该获取请求回复的目标API的内部服务信息;
上述数据库服务器,可以用于接收网关服务器发送的获取请求;按照该获取请求,从本地获得目标API的内部服务信息,并将目标API的内部服务信息发送给网关服务器。
在本实现方式中,API的内部服务信息被存储在API调用系统中额外配置的数据库服务器中,当网关服务器接收到针对目标API的调用请求时,网关服务器首先生成一个针对目标API的内部服务信息的获取请求,然后将该获取请求发送给数据库服务器,数据库服务器接收到该获取请求之后,在其本地查找目标API的内部服务信息,并将所查找的目标API的内部服务信息发送给网关服务器。
示例性的,数据库服务器内存储有API的标识信息与内部服务信息的对应关系表;网关服务器接收到携带有目标API的标识信息的调用请求时,生成一携带有该标识信息的获取请求,再将该获取请求发送给数据库服务器,数据库服务器接收到该获取请求之后,根据本地存储的关系表,在其本地查找该标识信息对应的内部服务信息,查找到后,将所查找到的服务信息发送给网关服务器,则网关服务器获得目标API的内部服务信息。
本发明实施例并不限定该数据库服务器的种类,例如其可以是常见的redis(一种数据库)数据库服务器。另外,为了保证数据的高可用,API调用系统中可以部署有多个数据库服务器,各个数据库以主从模式存在,即:其中一个处于主状态的数据库服务器处于工作状态,其可以与网关服务器进行交互;其余的处于从状态的数据库服务器中则存储着与处于主状态的数据库服务器相同的数据,在处于主状态的数据库服务器发生故障时,其中一个处于从状态的数据库服务器切换为新的处于主状态的数据库服务器,并同网关服务器进行交互。当然,上述多个数据库服务器在主从模式下的具体工作方式可以参照现有技术,本发明实施例在此不再赘述。
作为本发明实施例的另一种可选的实现方式,上述网关服务器判断所接收到的调用请求是否满足调用目标API的预设条件,也可以具体为:
基于所接收到的调用请求中携带的签名,对该调用请求进行签名和权限的验证;判断签名和权限的验证是否通过,如果通过,判定该调用请求满足调用目标API的预设条件,否则,判定该调用请求不满足调用目标API的预设条件。
本领域技术人员公知的是,API调用设备发送调用请求前,可以首先获得一个签名,该签名可以通过预设的签名计算方法获得,并且所发送的调用请求中,携带有上述计算获得的签名。当然,API调用设备获得签名的具体实现方法属于现有技术,本发明实施例在此不再详细介绍。
另外,关于对该调用请求进行签名和权限的验证,即对该调用请求进行AK(AccessKey ID)/SK(Secret Access Key),对于本领域技术人员而言,同样属于现有技术,本发明实施例在此不再详细介绍。
需要说明的是,网关服务器基于所接收到的调用请求中携带的签名,对该调用请求进行签名和权限的验证,一种情况下,可以是网关服务器自身利用所接收到的调用请求中携带的签名,直接对该调用请求进行签名和权限的验证,即关于该调用请求进行签名和权限的验证全部由网关服务器完成。此情况下,网关服务器可以快速获得签名和权限的验证结果。
但是,上述情况下,网关服务器需要执行签名和权限的验证,势必会消耗网关服务器的CPU等资源;同样为了减少对网关服务器CPU的消耗,另一种情况下,在图1或者图2所示系统实施例的基础上,如图3所示,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调用设备发送的上述调用请求;判断该调用请求是否满足调用目标API的预设条件;如果是,将该调用请求转发给目标API所在的目标业务服务器;接收目标业务服务器发送的调用结果,并将调用结果反馈给目标API调用设备。
此外,本发明实施例中,为了保证网关服务器具有高性能,网关服务器可以是一种基于openresty实现的插件式网关。本领域技术人员公知的是,openresty是一种基于Nginx(高性能的HTTP(HyperText Transfer Protocol,超文本传输协议)和反向代理服务器)与Lua(一种轻量小巧的脚本语言)的高性能Web(World Wide Web,万维网)平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项,以方便搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。openresty通过汇聚各种设计精良的Nginx模块,从而将其有效地变成一个强大的通用Web应用平台。
其中,lua是一种弱类型语言,其开发效率相较于java和golang等强类型语言有更高的开发效率,且以保证网关服务器的开发和维护成本低。
openresty的目标是让Web服务直接跑在Nginx服务内部,充分利用Nginx的非阻塞I/O(input/output)模型,不仅仅对HTTP客户端请求,甚至于对远程后端诸如MySQL(一种数据库管理系统)、PostgreSQL(一种数据库管理系统)、Memcached(一种高性能的分布式内存对象缓存系统)以及Redis(一种数据库)等都进行一致的高性能响应。
因而,在本发明实施例中,Web开发人员和系统工程师可以使用Lua脚本语言调动Nginx支持的各种C(一种通用计算机编程语言)以及Lua模块,快速构造出足以胜任10K乃至1000K以上单机并发连接的高性能的网关服务器。
本发明实施例中,基于openresty实现的网关服务器具有非常高的性能,其组织结构图4所示。网关服务器中的Nginx基于epoll(字符设备驱动中的一种函数)实现,使得面对大的并发量的时候,网关服务器仍然维持着较小的资源占用量。网关服务器处理任意请求时,充分利用了I/O复用的实现技巧,使得其内进程数目大大的降低,另外,其中的Nginx的worker进程和lua-vm(一种虚拟机)融合在一起,共享一个进程资源,当请求达到worker进程后,通过lua的coroutine(协程)能够快速的创建对应该请求的独立的‘栈’资源,保证数据的安全和有效。并且corotine的创建和销毁代价大大低于普通的线程和进程的创建和销毁。
在本发明实施例中,lua-vm内存以及nginx-woker的共享内存(shm)中都可以缓存API的内部服务信息,例如,在网关服务器获得目标API的内部服务信息时,lua-vm内存以及nginx-woker的共享内存将所获得的内部服务信息缓存1分钟,以使得此后的1钟内,网关服再次接收到针对于目标API的调用请求时,可以直接从本地的lua-vm内存以及nginx-woker的共享内存中获得目标API的内部服务信息,所以本发明实施例对于目标API的内部服务信息的获取效率非常高。
当然,在本发明实施例中,可以设置网关服务器获取目标API的内部服务信息的优先级为:lua-vm内存、nginx-woker的共享内存、数据库服务器。即,网关服务器首先从lua-vm内存获取目标API的内部服务信息,如果获取不到,再从nginx-woker的共享内存中获取目标API的内部服务信息,如果获取不到,再从数据库服务器中获取获取目标API的内部服务信息。
具体的,参照图4,在上述网关服务器的内部,任意一个待处理的请求,如上述调用请求或验证请求等,首先被nginx-master获得,nginx-master针对上述待处理的请求进行处理TCP(Transmission Control Protocol,传输控制协议)通用接收逻辑的处理后,首先将socket(套接字)句柄发送给由nginx-master启动常驻存在的nginx-worker,然后利用该socket句柄将上述请求发送给nginx-worker。
nginx-worker接收到上述请求后,将该请求转发给在其后启动的与其一一对应的lua-vm。lua-vm接收到nginx-worker发送的上述请求(request)后,首先创建一个协程(lua-coroutine),由该协程处理上述请求,例如向验证服务器发送签名和权限验证请求、将调用请求转发给目标业务服务器等。
本发明实施例中,在上述API调用系统中包含有数据库服务器情况下,在图2所示系统实施例的基础上,上述API调用系统还可以包括业务开发设备以及管理服务器。如图5所示,API调用系统中包括:网关服务器、目标API调用设备、API调用设备1~m、目标业务服务器、业务服务器1~n、数据库服务器、管理服务器、目标业务开发设备以及业务开发设备1~x。
此情况下,对应于目标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的内部服务信息,所以上述管理服务器在验证所接收的管理指令合法的情况下,如果管理指令是上线指令、下线指令、修改指令中的任意一种,管理服务器可以按照管理指令,更新本地存储的API的内部服务信息,具体的更新方式可以参照数据库服务器更新本地存储的API的内部服务信息所采用的实现方式,本发明实施例在此不再详细介绍。
需要说明的是,当该管理指令是删除指令时,管理服务器不需要删除其本地记录的关于目标API的内部服务信息,即仅需要数据库服务器按照管理指令,删除数据库服务器本地记录的目标API的内部服务信息。另外,在管理服务器中存储有API调用系统中各个API的内部服务信息的情况下,该管理指令还可以是针对于目标API的注册指令,当数据库服务器判断该注册指令合法时,仅需要将注册指令中所所携带的目标API的内部服务信息新增到其本地,不需要将该注册指令发送给数据库服务器。
示例性的,参照图6,当上述管理指令为上线指令、下线指令、修改指令中的任意一种时,目标业务开发设备下发管理指令的方式入下:目标业务开发设备获得针对目标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的内部服务信息的优先级为:lua-vm内存、nginx-woker的共享内存、数据库服务器以及管理服务器中所记录的各个API的内部服务信息时。
另外,本发明实施例中,该管理服务器还可以为各个业务开发设备提供注册服务、修改服务、启动服务、停止服务以及注销服务的功能。在API调用系统中,服务是由各个业务服务器所提供的,例如云主机服务;在本发明实施例中,注册服务可以理解为将服务所对应的业务服务器的地址信息存储在管理服务器中;修改服务可以理解为修改存储在管理服务器以及数据库服务器中的服务所对应业务服务器的地址信息;启动服务可以理解为设置服务所对应业务服务器的状态为可访问状态;停止服务可以理解为设置服务所对应业务服务器的状态为不可访问状态,但不删除服务所对应业务服务器的地址信息;注销服务删除服务所对应业务服务器的地址信息。
综上,本发明实施例中,API调用系统中新接入即上线一个API时,开发人员针对新接入的API,不需要在该API所在的业务服务器上开发判断调用请求是否满足调用条件的功能,可以直接基于网关服务器实现此功能,大大降低API调用系统中API的接入成本,同时由于减少了开发上述功能的过程,所以本发明实施例的方案还可以保证API的快速接入。
另外,本发明实施例的方案可以通过管理服务器实现目标API的上线、下线、修改、注册和删除的功能,还能够实现注册服务、修改服务、启动服务、停止服务以及注销服务的功能。这些功能由管理服务器集成实现,可以便于在API调用系统中设置严格的系统状态方程,保证系统在实现上述功能的过程中,不会因为异常的操作出现数据的异常。
需要说明的是,本发明实施例中的管理服务器是基于silm(一种PHP(HypertextPreprocessor,超文本预处理器)微框架)+notorm(一种轻量级orm(Object RelationalMapping,对象关系映射)框架)实现的。上述silm+notorm是一套经典的组件,在保证高效的执行效率的同时,大大降低了开发的成本,一定程度上保证了开发的有效性。相较于现有技术中上述功能由各业务服务器分别实现的方案,本发明实施例中将上述功能集中在管理服务器中实现的方案具有更高的稳定性,在环境部署上也更加统一。而且,对于开发人员来说,其可以通过管理服务器方便的控制和管理自身的服务和API。
本发明实施例中,在上述任一系统实施例的基础上,上述API调用系统还可以包括日志服务器;以图7为例,如图7所示,在图1所示方法实施例的基础上,上述API调用系统还可以包括日志服务器。
相应的,上述网关服务器,还可以用于在接收目标业务服务器发送的调用结果之后,针对目标API的调用过程,生成目标日志;将所生成的目标日志发送给日志服务器。
上述日志服务器,可以用于接收网关服务器发送的目标日志,并将目标日志记录在本地。
网关服务器生成目标日志的方式可以参照现有技术,本发明实施例对此不做详细介绍。可以理解的是,对于API调用系统而言,其所有的API调用过程都由网关服务器对应生成日志,网关服务器针对各个调用过程生成统一的日志,大大降低了API调用系统中针对各个API调用过程所生成的日志的异构率,这对于通过日志进行的数据挖掘有重要的意义;例如,在API调用系统中还包括有管理服务器和业务开发设备的情况下,业务开发设备可以通过管理服务器调取日志服务器中所存储的日志信息,以供开发人员查看。
具体的,进一步的,本发明实施例中还可以基于logstash(一种接收,处理,转发日志的工具)+日志服务器+elasticsearch(一种搜索程序)+rabbitmq(一种消息队列)的模式实现日志的收集和处理;该模式能准实时的收集Kop系统产生的数据,并且通过elasticsearch能快速、自由的提供简单分析能力。
其中,logstash可以部署在网关服务器中,并且API调用系统中的rabbitmq可以部署在不同的多个机器上,rabbitmq下对应设置有多个exchange(一种消息转发模块),exchange采用了replicat(一种进程)的部署方式,exchange采用多台机器部署。另外,elasticsearch可以布置在多个机器上,同样elasticsearch采用replicat+sharding(分片)的部署方式,以保证数据的可用性。
logstash离线地结构化网关服务器所产生的目标日志,将目标日志转化成json(JavaScript Object Notation,JS对象标记)格式;然后logstash利用durable模式(一种为了防止宕机等异常而导致消息无法及时接收设计的模式)从rabbitmq的各个exchange中选择一个exchange,将json格式下的目标日志传递到所选择的exchange下。
所选择的exchange针对elasticsearch和日志服务器分别建立两个queue(队列);queue同样使用durable的模式,以确保未消费的数据的可用性。可以理解,针对同一条日志信息,exchange将该日志信息同时放置在两个queue中,elasticsearch可以消费其中一个queue中的该日志信息,而日志服务器可以消费另一个queue中的该日志信息。
本发明实施例中,elasticsearch可以消费其中一个queue中的日志信息,进而准实时的获取日志信息。同时,elasticsearch可以存储近一段时间内所获取的日志信息,并每间隔一定时间为新获取的日志信息构建一个索引,例如,elasticsearch可以存储近30天内所获取的日志信息,并每间隔1天为新获取的日志信息构建一个索引。
日志服务器可以消费另一个queue中的日志信息,进而将所获取的日志信息进行永久的保存。
下面,参照图8,通过一个具体实例来对本发明进行简单介绍。
如图8所示,API调用系统中的目标API调用设备针对目标API的调用过程如下:
目标API调用设备首先按照预设的签名计算方法计算签名,然后生成携带有该签名的、针对于目标API的调用请求,并将所生成的调用请求发送给网关服务器。
网关服务器接收到目标API调用设备发送的针对于目标API的调用请求后,首先生成针对目标API内部服务信息的获取请求,该获取请求中携带有目标API的标识信息;然后将该获取请求发送给数据库服务器。
数据库服务器中存储有API调用系统中各个API的内部服务信息,即记录有每个API的标识信息与其内部服务信息的对应关系表。当数据库服务器接收到上述获取请求时,利用该获取请求中携带的目标API的标识信息,从本地记录的对应关系表中获得目标API的内部服务信息;并将目标API的内部服务信息发送给网关服务器;其中,该目标API的内部服务信息包括目标API的地址信息,调用目标API的操作类型以及所需资源类型。
网关服务器接收到数据库服务器发送的目标API的内部服务信息后,基于调用目标API的操作类型以及所需资源类型,对上述调用请求进行合法性验证,在合法性验证通过的情况下,再对上述调用请求进行安全性验证,在安全性验证通过的情况下,生成针对该调用请求的签名和权限认证请求,并将所生成的签名和权限认证请求发送给验证服务器。
验证服务器接收到该签名和权限认证请求后,对上述调用请求进行签名和权限的认证,得到验证通过的验证结果,并将此验证结果发送给网关服务器。
网关服务器接收到该验证结果后,按照目标API的地址信息,将上述调用请求转发给目标业务服务器。目标业务服务器接收到网关服务器转发的调用请求后,直接处理该调用请求,获得调用结果,并将该调用结果发送给网关服务器。
网关服务器接收到上述调用结果后,一方面,针对上述目标API的调用过程,生成目标日志,并可将该目标日志发送给日志服务器(图8中未示出),日志服务器接收到该目标日志后,将目标日志存贮在其本地。另外,网关服务器,还将所接收到的调用结果反馈给目标API调用设备,完成目标API的调用。
相应于图1所示系统实施例,本发明实施例提供了一种API调用方法,应用于API调用系统中的网关服务器,该API调用系统还包括API调用设备和设置有API的业务服务器。
如图9所示,本发明实施例提供的API调用方法包括:
S101:接收目标API调用设备发送的针对于目标API的调用请求。
S102:判断所接收到的调用请求是否满足调用该目标API的预设条件。
在步骤S102的判断结果为是的情况下,执行步骤S103:将该调用请求转发给目标API所在的目标业务服务器。
S104:接收目标业务服务器发送的调用结果,并将该调用结果反馈给目标API调用设备,其中,该调用结果为目标业务服务器处理该调用请求所获得的。
具体的,作为本发明实施例的一种实现方式,如图10所示,上述判断所接收到的调用请求是否满足调用该目标API的预设条件(S102)的步骤,可以包括:
S1021:获得目标API的内部服务信息,其中,所获得的内部服务信息包括目标API的地址信息、调用目标API的操作类型和所需资源类型;
S1022:基于调用目标API的操作类型和所需资源类型,对调用请求进行合法性和安全性的验证;
S1023:判断合法性和安全性的验证是否通过,如果通过,判定所接收到的调用请求满足调用目标API的预设条件,否则,判定所接收到的调用请求不满足调用目标API的预设条件;
相应的,上述将将该调用请求转发给目标API所在的目标业务服务器(S103)的步骤,可以包括:
按照所获得的地址信息,将该调用请求转发给目标API所在的目标业务服务器。
相应于图2所示系统实施例,上述API调用系统还可以包括用于存储API的内部服务信息的数据库服务器,
上述获得目标API的内部服务信息(S1021)的步骤,可以包括下述步骤a和步骤b:
步骤a:向数据库服务器发送针对目标API的内部服务信息的获取请求;
步骤b:接收数据库服务器基于该获取请求回复的目标API的内部服务信息。
具体的,作为本发明实施例的另一种实现方式,如图11所示,上述判断所接收到的调用请求是否满足调用该目标API的预设条件(S102)的步骤,可以包括:
S1024:基于所接收到的调用请求中携带的签名,对该调用请求进行签名和权限的验证;
S1025:判断签名和权限的验证是否通过,如果通过,判定该调用请求满足调用目标API的预设条件,否则,判定该调用请求不满足调用目标API的预设条件。
具体的,相应于图3所示系统实施例,上述API调用系统还可以包括用于验证签名和权限的验证服务器,
上述基于所接收到的调用请求中携带的签名,对该调用请求进行签名和权限的验证(S1024)的步骤,可以包括下述步骤A和B:
步骤A:向验证服务器发送携带有该调用请求所携带签名的签名和权限验证请求;
步骤B:接收验证服务器针对该签名和权限验证请求反馈的验证结果。
相应于图7所示系统实施例,上述API调用系统还可以包括日志服务器;
如图12所示,在上述接收目标业务服务器发送的调用结果的步骤之后,上述方法还可以包括:
S105:针对目标API的调用过程,生成目标日志;
S106:将所生成的目标日志发送给日志服务器,以使得日志服务器将该目标日志记录在本地。
由以上可知,与现有技术相比,本实施例提供的方案中,API调用系统中每一个业务服务器都不需要执行判断调用请求是否满足调用条件的任务,避免每个业务服务器均需要为执行该任务而提供额外的资源所造成的资源浪费问题。另外,本实施例提供的方案中,判断调用请求是否满足调用条件的任务全部由网关服务器完成,可以避免工作人员在开发API的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本实施例提供的方案中针对业务服务器中API的维护和开发成本低。
相应于图1所示系统实施例,如图13所示,本发明实施例还提供了一种API调用装置,应用于API调用系统中的网关服务器,该API调用系统还包括API调用设备和设置有API的业务服务器,上述装置包括:
接收模块110,用于接收目标API调用设备发送的针对于目标API的调用请求;
判断模块120,用于判断该调用请求是否满足调用目标API的预设条件;
转发模块130,用于在判断模块120的判断结果为是的情况下,将上述调用请求转发给目标API所在的目标业务服务器;
反馈模块140,用于接收目标业务服务器发送的调用结果,并将该调用结果反馈给目标API调用设备,其中,该调用结果为目标业务服务器处理上述调用请求所获得的。
作为本发明实施例的一种可选的实现方式,如图14所示,上述判断模块120,可以包括:
获得单元1201,用于获得目标API的内部服务信息,该内部服务信息包括目标API的地址信息、调用目标API的操作类型和所需资源类型;
第一验证单元1202,用于基于调用目标API的操作类型和所需资源类型,对上述调用请求进行合法性和安全性的验证;
第一判断单元1203,用于判断合法性和安全性的验证是否通过,如果通过,判定该调用请求满足调用目标API的预设条件,否则,判定该调用请求不满足调用目标API的预设条件;
相应的,上述转发模块130,可以具体用于:在判断单元1203的判断结果为是的情况下,按照上述地址信息,将调用请求转发给目标API所在的目标业务服务器。
相应于图2所示系统实施例,上述API调用系统还可以包括用于存储API的内部服务信息的数据库服务器,
相应的,上述获得单元1201,可以包括:
第一发送子单元,用于向数据库服务器发送针对目标API的内部服务信息的获取请求;
第一接收子单元,用于接收数据库服务器基于上述获取请求回复的目标API的内部服务信息。
作为本发明实施例的另一种可选的实现方式,如图15所示,上述判断模块120,可以包括:
第二验证单元1204,用于基于上述调用请求中携带的签名,对该调用请求进行签名和权限的验证;
第二判断单元1205,用于判断签名和权限的验证是否通过,如果通过,判定上述调用请求满足调用目标API的预设条件,否则,判定上述调用请求不满足调用目标API的预设条件。
相应于图3所示系统实施例,可选的,上述API调用系统还包括用于验证签名和权限的验证服务器,
上述第二验证单元1204,可以包括:
第二发送子单元,用于向验证服务器发送携带有上述调用请求所携带签名的签名和权限验证请求;
第二接收子单元,用于接收验证服务器针对该签名和权限验证请求反馈的验证结果。
相应于图7所示系统实施例,上述API调用系统还可以包括日志服务器;
相应的,如图16所示,上述装置还可以包括:
生成模块150,用于在接收到目标业务服务器发送的调用结果后,针对目标API的调用过程,生成目标日志;
发送模块160,将所生成的目标日志发送给日志服务器,以使得日志服务器将目标日志记录在本地。
由以上可知,与现有技术相比,本实施例提供的方案中,API调用系统中每一个业务服务器都不需要执行判断调用请求是否满足调用条件的任务,避免每个业务服务器均需要为执行该任务而提供额外的资源所造成的资源浪费问题。另外,本实施例提供的方案中,判断调用请求是否满足调用条件的任务全部由网关服务器完成,可以避免工作人员在开发API的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本实施例提供的方案中针对业务服务器中API的维护和开发成本低。
本发明实施例还提供了一种电子设备,如图17所示,包括处理器210和存储器220,其中,
存储器220,用于存放计算机程序;
处理器210,用于执行存储器220上所存放的程序时,实现如下步骤:
接收目标API调用设备发送的针对于目标API的调用请求;
判断所接收到的调用请求是否满足调用该目标API的预设条件;
如果是,将该调用请求转发给目标API所在的目标业务服务器;
接收目标业务服务器发送的调用结果,并将该调用结果反馈给目标API调用设备,其中,该调用结果为目标业务服务器处理该调用请求所获得的。
关于该方法各个步骤的具体实现以及相关解释内容可以参见上述图1、2、3、5和7所示的系统实施例,在此不做赘述。
上述电子设备可以具备有实现上述电子设备与其他设备之间通信的通信接口。
上述的处理器210,通信接口,存储器220通过通信总线完成相互间的通信,此处所提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器220可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器210可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由以上可知,与现有技术相比,本实施例提供的方案中,API调用系统中每一个业务服务器都不需要执行判断调用请求是否满足调用条件的任务,避免每个业务服务器均需要为执行该任务而提供额外的资源所造成的资源浪费问题。另外,本实施例提供的方案中,判断调用请求是否满足调用条件的任务全部由网关服务器完成,可以避免工作人员在开发API的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本实施例提供的方案中针对业务服务器中API的维护和开发成本低。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的API调用方法。
由以上可知,与现有技术相比,本实施例提供的方案中,API调用系统中每一个业务服务器都不需要执行判断调用请求是否满足调用条件的任务,避免每个业务服务器均需要为执行该任务而提供额外的资源所造成的资源浪费问题。另外,本实施例提供的方案中,判断调用请求是否满足调用条件的任务全部由网关服务器完成,可以避免工作人员在开发API的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本实施例提供的方案中针对业务服务器中API的维护和开发成本低。
在本发明提供的再一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一API调用方法所述的方法步骤。
由以上可知,与现有技术相比,本实施例提供的方案中,API调用系统中每一个业务服务器都不需要执行判断调用请求是否满足调用条件的任务,避免每个业务服务器均需要为执行该任务而提供额外的资源所造成的资源浪费问题。另外,本实施例提供的方案中,判断调用请求是否满足调用条件的任务全部由网关服务器完成,可以避免工作人员在开发API的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本实施例提供的方案中针对业务服务器中API的维护和开发成本低。
在本发明提供的再一实施例中,还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述任一API调用方法所述的方法步骤。
由以上可知,与现有技术相比,本实施例提供的方案中,API调用系统中每一个业务服务器都不需要执行判断调用请求是否满足调用条件的任务,避免每个业务服务器均需要为执行该任务而提供额外的资源所造成的资源浪费问题。另外,本实施例提供的方案中,判断调用请求是否满足调用条件的任务全部由网关服务器完成,可以避免工作人员在开发API的过程中,在业务服务器中进行关于上述任务所对应判断能力的开发工作,即,判断调用请求是否满足调用条件的任务从业务服务器中被剥离出来,便于工作人员对业务服务器中API的开发,所以本实施例提供的方案中针对业务服务器中API的维护和开发成本低。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法、装置、电子设备以及计算机可读存储介质实施例而言,由于其基本相似于系统实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (21)

1.一种API调用系统,其特征在于,包括:网关服务器、API调用设备以及设置有API的业务服务器,其中,
所述API调用设备中的目标API调用设备,用于向所述网关服务器发送针对于目标API的调用请求;接收所述网关服务器反馈的针对所述调用请求的调用结果;
所述网关服务器,用于接收所述目标API调用设备发送的所述调用请求;判断所述调用请求是否满足调用所述目标API的预设条件;如果所述调用请求满足调用所述目标API的预设条件,将所述调用请求转发给所述目标API所在的目标业务服务器;接收所述目标业务服务器发送的调用结果,并将所述调用结果反馈给所述目标API调用设备,其中,所述调用结果为所述目标业务服务器处理所述调用请求所获得的;
所述目标业务服务器,用于接收所述网关服务器转发的所述调用请求;处理所述调用请求,获得调用结果;将所述调用结果发送给所述网关服务器。
2.根据权利要求1所述的系统,其特征在于,所述网关服务器判断所述调用请求是否满足调用所述目标API的预设条件,具体为:
获得所述目标API的内部服务信息,所述内部服务信息包括所述目标API的地址信息、调用所述目标API的操作类型和所需资源类型;
基于调用所述目标API的操作类型和所需资源类型,对所述调用请求进行合法性和安全性的验证;
判断合法性和安全性的验证是否通过,如果通过,判定所述调用请求满足调用所述目标API的预设条件,否则,判定所述调用请求不满足调用所述目标API的预设条件;
相应的,所述网关服务器将所述调用请求转发给所述目标API所在的目标业务服务器,具体为:
按照所述地址信息,将所述调用请求转发给所述目标API所在的目标业务服务器。
3.根据权利要求2所述的系统,其特征在于,所述API调用系统还包括用于存储API的内部服务信息的数据库服务器,
所述网关服务器获得所述目标API的内部服务信息,具体为:
向所述数据库服务器发送针对目标API的内部服务信息的获取请求;接收所述数据库服务器基于所述获取请求回复的所述目标API的内部服务信息;
所述数据库服务器,用于接收所述网关服务器发送的所述获取请求;按照所述获取请求,从本地获得所述目标API的内部服务信息,并将所述目标API的内部服务信息发送给所述网关服务器。
4.根据权利要求3所述的系统,其特征在于,所述API调用系统还包括业务开发设备以及管理服务器;
对应于所述目标API的目标业务开发设备,用于向所述管理服务器发送针对所述目标API的管理指令;
所述管理服务器,用于接收所述目标业务开发设备发送的所述管理指令;验证所述管理指令是否合法,如果合法,将所述管理指令转发送给所述数据库服务器;
所述数据库服务器,还用于接收所述管理指令,并按照所述管理指令,更新本地存储的API的内部服务信息。
5.根据权利要求1所述的系统,其特征在于,所述网关服务器判断所述调用请求是否满足调用所述目标API的预设条件,具体为:
基于所述调用请求中携带的签名,对所述调用请求进行签名和权限的验证;判断签名和权限的验证是否通过,如果通过,判定所述调用请求满足调用所述目标API的预设条件,否则,判定所述调用请求不满足调用所述目标API的预设条件。
6.根据权利要求5所述的系统,其特征在于,所述API调用系统还包括用于验证签名和权限的验证服务器,
所述网关服务器基于所述调用请求中携带的签名,对所述调用请求进行签名和权限的验证,具体为:
向所述验证服务器发送携带有所述调用请求所携带签名的签名和权限验证请求;接收所述验证服务器针对所述签名和权限验证请求反馈的验证结果;
所述验证服务器,用于接收所述网关服务器发送的所述签名和权限验证请求;根据所述签名和权限验证请求中携带的签名,对所述调用请求进行签名和权限的验证,得到验证结果;将所述验证结果发送给所述网关服务器。
7.根据权利要求1~6任一项所述的系统,其特征在于,所述API调用系统还包括日志服务器;
所述网关服务器,还用于在接收所述目标业务服务器发送的调用结果之后,针对所述目标API的调用过程,生成目标日志;将所生成的目标日志发送给所述日志服务器;
所述日志服务器,用于接收所述网关服务器发送的所述目标日志,并将所述目标日志记录在本地。
8.一种API调用方法,其特征在于,应用于API调用系统中的网关服务器,所述API调用系统还包括API调用设备和设置有API的业务服务器,所述方法包括:
接收目标API调用设备发送的针对于目标API的调用请求;
判断所述调用请求是否满足调用所述目标API的预设条件;
如果所述调用请求满足调用所述目标API的预设条件,将所述调用请求转发给所述目标API所在的目标业务服务器;
接收所述目标业务服务器发送的调用结果,并将所述调用结果反馈给所述目标API调用设备,其中,所述调用结果为所述目标业务服务器处理所述调用请求所获得的。
9.根据权利要求8所述的方法,其特征在于,所述判断所述调用请求是否满足调用所述目标API的预设条件的步骤,包括:
获得所述目标API的内部服务信息,所述内部服务信息包括所述目标API的地址信息、调用所述目标API的操作类型和所需资源类型;
基于调用所述目标API的操作类型和所需资源类型,对所述调用请求进行合法性和安全性的验证;
判断合法性和安全性的验证是否通过,如果通过,判定所述调用请求满足调用所述目标API的预设条件,否则,判定所述调用请求不满足调用所述目标API的预设条件;
相应的,所述将所述调用请求转发给所述目标API所在的目标业务服务器的步骤,包括:
按照所述地址信息,将所述调用请求转发给所述目标API所在的目标业务服务器。
10.根据权利要求9所述的方法,其特征在于,所述API调用系统还包括用于存储API的内部服务信息的数据库服务器,
所述获得所述目标API的内部服务信息的步骤,包括:
向所述数据库服务器发送针对目标API的内部服务信息的获取请求;
接收所述数据库服务器基于所述获取请求回复的所述目标API的内部服务信息。
11.根据权利要求8所述的方法,其特征在于,所述判断所述调用请求是否满足调用所述目标API的预设条件的步骤,包括:
基于所述调用请求中携带的签名,对所述调用请求进行签名和权限的验证;
判断签名和权限的验证是否通过,如果通过,判定所述调用请求满足调用所述目标API的预设条件,否则,判定所述调用请求不满足调用所述目标API的预设条件。
12.根据权利要求11所述的方法,其特征在于,所述API调用系统还包括用于验证签名和权限的验证服务器,
所述基于所述调用请求中携带的签名,对所述调用请求进行签名和权限的验证的步骤,包括:
向所述验证服务器发送携带有所述调用请求所携带签名的签名和权限验证请求;
接收所述验证服务器针对所述签名和权限验证请求反馈的验证结果。
13.根据权利要求8~12任一项所述的方法,其特征在于,所述API调用系统还包括日志服务器;
在所述接收所述目标业务服务器发送的调用结果的步骤之后,所述方法还包括:
针对所述目标API的调用过程,生成目标日志;
将所述目标日志发送给所述日志服务器,以使得日志服务器将所述目标日志记录在本地。
14.一种API调用装置,其特征在于,应用于API调用系统中的网关服务器,所述API调用系统还包括API调用设备和设置有API的业务服务器,所述装置包括:
接收模块,用于接收目标API调用设备发送的针对于目标API的调用请求;
判断模块,用于判断所述调用请求是否满足调用所述目标API的预设条件;
转发模块,用于在所述判断模块的判断结果为是的情况下,将所述调用请求转发给所述目标API所在的目标业务服务器;
反馈模块,用于接收所述目标业务服务器发送的调用结果,并将所述调用结果反馈给所述目标API调用设备,其中,所述调用结果为所述目标业务服务器处理所述调用请求所获得的。
15.根据权利要求14所述的装置,其特征在于,所述判断模块,包括:
获得单元,用于获得所述目标API的内部服务信息,所述内部服务信息包括所述目标API的地址信息、调用所述目标API的操作类型和所需资源类型;
第一验证单元,用于基于调用所述目标API的操作类型和所需资源类型,对所述调用请求进行合法性和安全性的验证;
第一判断单元,用于判断合法性和安全性的验证是否通过,如果通过,判定所述调用请求满足调用所述目标API的预设条件,否则,判定所述调用请求不满足调用所述目标API的预设条件;
相应的,所述转发模块,具体用于:在所述判断单元的判断结果为是的情况下,按照所述地址信息,将所述调用请求转发给所述目标API所在的目标业务服务器。
16.根据权利要求15所述的装置,其特征在于,所述API调用系统还包括用于存储API的内部服务信息的数据库服务器,
所述获得单元,包括:
第一发送子单元,用于向所述数据库服务器发送针对目标API的内部服务信息的获取请求;
第一接收子单元,用于接收所述数据库服务器基于所述获取请求回复的所述目标API的内部服务信息。
17.根据权利要求14所述的装置,其特征在于,所述判断模块,包括:
第二验证单元,用于基于所述调用请求中携带的签名,对所述调用请求进行签名和权限的验证;
第二判断单元,用于判断签名和权限的验证是否通过,如果通过,判定所述调用请求满足调用所述目标API的预设条件,否则,判定所述调用请求不满足调用所述目标API的预设条件。
18.根据权利要求17所述的装置,其特征在于,所述API调用系统还包括用于验证签名和权限的验证服务器,
所述第二验证单元,包括:
第二发送子单元,用于向所述验证服务器发送携带有所述调用请求所携带签名的签名和权限验证请求;
第二接收子单元,用于接收所述验证服务器针对所述签名和权限验证请求反馈的验证结果。
19.根据权利要求14~18任一项所述的装置,其特征在于,所述API调用系统还包括日志服务器;
所述装置还包括:
生成模块,用于在接收到所述目标业务服务器发送的调用结果后,针对所述目标API的调用过程,生成目标日志;
发送模块,将所述目标日志发送给所述日志服务器,以使得日志服务器将所述目标日志记录在本地。
20.一种电子设备,其特征在于,包括处理器和存储器,其中:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求8-13任一所述的方法步骤。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求8-13任一所述的方法步骤。
CN201710825481.3A 2017-09-14 2017-09-14 Api调用系统、方法、装置、电子设备及存储介质 Active CN109510846B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710825481.3A CN109510846B (zh) 2017-09-14 2017-09-14 Api调用系统、方法、装置、电子设备及存储介质
PCT/CN2018/105648 WO2019052526A1 (zh) 2017-09-14 2018-09-14 Api调用系统、方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710825481.3A CN109510846B (zh) 2017-09-14 2017-09-14 Api调用系统、方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN109510846A true CN109510846A (zh) 2019-03-22
CN109510846B CN109510846B (zh) 2020-11-03

Family

ID=65723910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710825481.3A Active CN109510846B (zh) 2017-09-14 2017-09-14 Api调用系统、方法、装置、电子设备及存储介质

Country Status (2)

Country Link
CN (1) CN109510846B (zh)
WO (1) WO2019052526A1 (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110007950A (zh) * 2019-04-10 2019-07-12 优信拍(北京)信息科技有限公司 一种应用程序接口的管理方法、装置及服务器
CN110113394A (zh) * 2019-04-19 2019-08-09 浙江数链科技有限公司 Api调用方法和装置
CN110347501A (zh) * 2019-06-20 2019-10-18 北京大米科技有限公司 一种业务检测方法、装置、存储介质及电子设备
CN110839087A (zh) * 2020-01-13 2020-02-25 北京懿医云科技有限公司 接口调用方法及装置、电子设备和计算机可读存储介质
CN110851258A (zh) * 2019-11-08 2020-02-28 深圳前海环融联易信息科技服务有限公司 Api调用方法、装置、计算机设备及存储介质
CN111416837A (zh) * 2020-02-20 2020-07-14 华迪计算机集团有限公司 政务系统api接口访问网关、方法、电子设备及存储介质
CN111949286A (zh) * 2019-05-14 2020-11-17 中国移动通信有限公司研究院 一种升级方法、装置、设备及计算机可读存储介质
CN111988398A (zh) * 2020-08-19 2020-11-24 政采云有限公司 一种数据获取方法、api网关、介质
CN112583930A (zh) * 2020-12-25 2021-03-30 四川安迪科技实业有限公司 用于多独立系统交互的数据转发同步方法、系统及装置
CN112948143A (zh) * 2021-03-04 2021-06-11 北京奇艺世纪科技有限公司 一种应用程序调用方法、装置及调用系统
CN113114765A (zh) * 2021-04-13 2021-07-13 成都九洲电子信息系统股份有限公司 一种基于反向代理的接口调用系统
CN113114562A (zh) * 2021-03-04 2021-07-13 上海赛可出行科技服务有限公司 一种基于开放平台的参数可配置的网关设计方法
CN113282602A (zh) * 2021-06-18 2021-08-20 北京奇艺世纪科技有限公司 一种业务请求方法及装置
CN114285582A (zh) * 2021-12-22 2022-04-05 中国电信股份有限公司 信息合法性的校验方法及装置、存储介质、电子设备
WO2022068761A1 (zh) * 2020-09-29 2022-04-07 京东科技控股股份有限公司 数据处理方法、装置、电子设备及存储介质
CN115102784A (zh) * 2022-07-21 2022-09-23 武汉联影医疗科技有限公司 权限信息管理方法、装置、计算机设备、存储介质和产品

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110716769B (zh) * 2019-09-27 2023-08-04 武汉极意网络科技有限公司 业务风控网关及业务风控方法
CN111737022B (zh) * 2019-09-30 2024-03-01 北京沃东天骏信息技术有限公司 一种基于微服务的接口调用方法、系统、设备及介质
CN110750269B (zh) * 2019-10-25 2023-04-21 浪潮云信息技术股份公司 一种基于步骤驱动的软件实现方法
CN111143087B (zh) * 2019-12-18 2024-04-02 中国平安财产保险股份有限公司 一种接口调用方法、装置、存储介质和服务器
CN111858083A (zh) * 2019-12-30 2020-10-30 北京嘀嘀无限科技发展有限公司 一种远程服务的调用方法、装置、电子设备及存储介质
CN112256452A (zh) * 2020-10-21 2021-01-22 上海商汤智能科技有限公司 云服务平台的服务项确定方法、装置、设备及存储介质
CN112527413A (zh) * 2020-12-23 2021-03-19 平安普惠企业管理有限公司 一种页面加载方法、装置、设备及存储介质
CN114765552B (zh) * 2021-01-04 2023-11-07 航天信息股份有限公司 数据处理方法、中台系统、存储介质和电子设备
CN112882688A (zh) * 2021-01-07 2021-06-01 中国人民财产保险股份有限公司 一种基于云的支持多前端项目接入的架构
CN112965901B (zh) * 2021-03-05 2023-08-01 北京百度网讯科技有限公司 Api的测试方法、服务器、系统以及电子设备
CN113505067B (zh) * 2021-07-09 2024-02-20 上海沄熹科技有限公司 基于openresty的分布式数据库tpc-c测试优化方法及系统
CN113626064A (zh) * 2021-08-11 2021-11-09 北京奇艺世纪科技有限公司 一种应用程序管理方法及装置
CN114020492A (zh) * 2021-11-09 2022-02-08 中国建设银行股份有限公司 信息处理方法、系统及装置
CN114095576B (zh) * 2021-11-22 2024-03-08 北京爱奇艺科技有限公司 一种调用请求发送方法及装置
CN114285852B (zh) * 2021-12-28 2023-12-26 杭州数梦工场科技有限公司 基于多级服务平台的服务调用方法及装置
CN115296959A (zh) * 2022-07-25 2022-11-04 紫光云技术有限公司 一种使用Nginx+Lua脚本替代SpringCloudGateway网关的方法
CN115334162B (zh) * 2022-07-26 2023-12-05 国家能源集团江苏电力有限公司 一种基于用户请求的电力服务管理的安全通信方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581144A (zh) * 2003-07-31 2005-02-16 上海市电子商务安全证书管理中心有限公司 数字证书本地认证的方法及系统
CN102281311A (zh) * 2010-06-10 2011-12-14 阿里巴巴集团控股有限公司 一种基于开放应用编程接口实现网络业务的方法、系统及装置
CN104717647A (zh) * 2013-12-13 2015-06-17 中国电信股份有限公司 业务能力鉴权方法、设备及系统
US20150188900A1 (en) * 2013-12-31 2015-07-02 Digital River, Inc. Session managment in a multi-tenant, multi-data center environment system and method
US20150229700A1 (en) * 2014-02-12 2015-08-13 Qualcomm Incorporated Protocol translation for media player device control
CN105512279A (zh) * 2015-12-04 2016-04-20 华为技术有限公司 一种元数据访问方法、相关设备及系统
WO2016197764A1 (zh) * 2015-06-09 2016-12-15 腾讯科技(深圳)有限公司 一种基于移动应用入口的数据处理方法、装置和系统
CN106295330A (zh) * 2016-07-29 2017-01-04 努比亚技术有限公司 调用api的控制装置及方法
CN106686021A (zh) * 2015-11-05 2017-05-17 北京京东尚科信息技术有限公司 一种服务调用方法和网关

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103078827B (zh) * 2011-10-25 2017-05-31 腾讯数码(天津)有限公司 第三方应用调用的开放平台系统和实现方法
US11388037B2 (en) * 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
CN106897586B (zh) * 2016-08-04 2020-01-14 阿里巴巴集团控股有限公司 一种应用程序编程接口api权限管理方法与装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1581144A (zh) * 2003-07-31 2005-02-16 上海市电子商务安全证书管理中心有限公司 数字证书本地认证的方法及系统
CN102281311A (zh) * 2010-06-10 2011-12-14 阿里巴巴集团控股有限公司 一种基于开放应用编程接口实现网络业务的方法、系统及装置
CN104717647A (zh) * 2013-12-13 2015-06-17 中国电信股份有限公司 业务能力鉴权方法、设备及系统
US20150188900A1 (en) * 2013-12-31 2015-07-02 Digital River, Inc. Session managment in a multi-tenant, multi-data center environment system and method
US20150229700A1 (en) * 2014-02-12 2015-08-13 Qualcomm Incorporated Protocol translation for media player device control
WO2016197764A1 (zh) * 2015-06-09 2016-12-15 腾讯科技(深圳)有限公司 一种基于移动应用入口的数据处理方法、装置和系统
CN106686021A (zh) * 2015-11-05 2017-05-17 北京京东尚科信息技术有限公司 一种服务调用方法和网关
CN105512279A (zh) * 2015-12-04 2016-04-20 华为技术有限公司 一种元数据访问方法、相关设备及系统
CN106295330A (zh) * 2016-07-29 2017-01-04 努比亚技术有限公司 调用api的控制装置及方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110007950A (zh) * 2019-04-10 2019-07-12 优信拍(北京)信息科技有限公司 一种应用程序接口的管理方法、装置及服务器
CN110113394A (zh) * 2019-04-19 2019-08-09 浙江数链科技有限公司 Api调用方法和装置
CN111949286A (zh) * 2019-05-14 2020-11-17 中国移动通信有限公司研究院 一种升级方法、装置、设备及计算机可读存储介质
CN110347501A (zh) * 2019-06-20 2019-10-18 北京大米科技有限公司 一种业务检测方法、装置、存储介质及电子设备
CN110851258A (zh) * 2019-11-08 2020-02-28 深圳前海环融联易信息科技服务有限公司 Api调用方法、装置、计算机设备及存储介质
CN110851258B (zh) * 2019-11-08 2024-04-23 深圳前海环融联易信息科技服务有限公司 Api调用方法、装置、计算机设备及存储介质
CN110839087A (zh) * 2020-01-13 2020-02-25 北京懿医云科技有限公司 接口调用方法及装置、电子设备和计算机可读存储介质
CN110839087B (zh) * 2020-01-13 2020-06-19 北京懿医云科技有限公司 接口调用方法及装置、电子设备和计算机可读存储介质
CN111416837A (zh) * 2020-02-20 2020-07-14 华迪计算机集团有限公司 政务系统api接口访问网关、方法、电子设备及存储介质
CN111988398A (zh) * 2020-08-19 2020-11-24 政采云有限公司 一种数据获取方法、api网关、介质
WO2022068761A1 (zh) * 2020-09-29 2022-04-07 京东科技控股股份有限公司 数据处理方法、装置、电子设备及存储介质
CN112583930A (zh) * 2020-12-25 2021-03-30 四川安迪科技实业有限公司 用于多独立系统交互的数据转发同步方法、系统及装置
CN113114562A (zh) * 2021-03-04 2021-07-13 上海赛可出行科技服务有限公司 一种基于开放平台的参数可配置的网关设计方法
CN112948143A (zh) * 2021-03-04 2021-06-11 北京奇艺世纪科技有限公司 一种应用程序调用方法、装置及调用系统
CN112948143B (zh) * 2021-03-04 2024-01-12 北京奇艺世纪科技有限公司 一种应用程序调用方法、装置及调用系统
CN113114765A (zh) * 2021-04-13 2021-07-13 成都九洲电子信息系统股份有限公司 一种基于反向代理的接口调用系统
CN113282602A (zh) * 2021-06-18 2021-08-20 北京奇艺世纪科技有限公司 一种业务请求方法及装置
CN113282602B (zh) * 2021-06-18 2023-10-27 北京奇艺世纪科技有限公司 一种业务请求方法及装置
CN114285582A (zh) * 2021-12-22 2022-04-05 中国电信股份有限公司 信息合法性的校验方法及装置、存储介质、电子设备
CN114285582B (zh) * 2021-12-22 2024-04-05 中国电信股份有限公司 信息合法性的校验方法及装置、存储介质、电子设备
CN115102784A (zh) * 2022-07-21 2022-09-23 武汉联影医疗科技有限公司 权限信息管理方法、装置、计算机设备、存储介质和产品
CN115102784B (zh) * 2022-07-21 2023-06-23 武汉联影医疗科技有限公司 权限信息管理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
WO2019052526A1 (zh) 2019-03-21
CN109510846B (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
CN109510846A (zh) Api调用系统、方法、装置、电子设备及存储介质
CN110191063B (zh) 服务请求的处理方法、装置、设备及存储介质
CN102292708B (zh) 用于策略的http调出的系统和方法
CN103119907B (zh) 提供用于访问控制的智能组的系统和方法
US10419311B2 (en) Template-based declarative and composable configuration of network functions
CN103329113B (zh) 配置用于分级高速缓存的代理服务器以及动态站点加速和自定义对象和相关的方法
CN110933163B (zh) 区块链合约部署方法、装置、设备以及存储介质
US9237130B2 (en) Hierarchical rule development and binding for web application server firewall
CN108650182A (zh) 网络通信方法、系统、装置、设备及存储介质
US11392873B2 (en) Systems and methods for simulating orders and workflows in an order entry and management system to test order scenarios
JP2018523248A (ja) アプリケーションの展開のためのカスタム通信チャネル
CN102460391A (zh) 用于在应用传送结构中提供虚拟设备的系统和方法
CN108259425A (zh) 攻击请求的确定方法、装置及服务器
TW201337626A (zh) 用於在雲端環境中自動派送安全規則之非侵入式方法及裝置
CN104079683B (zh) 一种授权域名服务器直接响应的域名解析方法及系统
CN105338016B (zh) 数据高速缓存方法和装置以及资源请求响应方法和装置
CN109617753B (zh) 一种网络平台管理方法、系统及电子设备和存储介质
CN103179099A (zh) 一种接入开放网站平台的统一认证方法和一种网站平台
CN103685535A (zh) 一种大规模分布异构数据处理的云数据库系统接口设计
CN115118705A (zh) 一种基于微服务的工业边缘管控平台
CN103957174A (zh) 语义交换机松耦合系统进行信息处理的方法
CN106874371A (zh) 一种数据处理方法及装置
CN103763133B (zh) 一种实现访问控制的方法、设备与系统
CN106685901A (zh) 用于处理跨域数据的方法、第一服务器及第二服务器
CN103957173A (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