应用程序编程接口API信息的处理方法、装置和设备与流程

文档序号:21455029发布日期:2020-07-10 17:49阅读:117来源:国知局
应用程序编程接口API信息的处理方法、装置和设备与流程

本申请涉及数据处理领域,尤其涉及信息流技术领域。



背景技术:

随着互联网的发展,网络访问流量越来越大,对服务的稳定性和可用性要求越来越高,高可用已经作为衡量一个服务性能的重要标准。应用程序编程接口(applicationprogramminginterface,api)网关通常作为api的统一出入口,会提供负载均衡、服务降级、限流和熔断等功能,对服务的稳定性和可用性具有非常重要的作用。

现有的api网关进行路由时,通常是客户端向api网关发送请求后,服务器将该请求和网关中的api配置信息进行匹配,获得所有匹配成功的api配置信息。由于api网关提供了路由路径(path)通配符,因此匹配成功的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是本申请实施例三提供的api信息的处理方法的流程示意图;

图5是本申请实施例提供的api信息的处理装置的结构示意图;

图6是用来实现本申请实施例的api信息的处理方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在本申请的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。在本申请的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。

图1为本申请实施例提供的api信息的处理方法的系统架构图,如图1所示,该系统架构中可以包括终端设备101、服务器102和服务器103。其中,终端设备可以为支持信息通信,并能够对数据进行处理的各种设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等。通常,如需在api调用过程中加入鉴权、流控等通用功能,并且不希望引入额外的开发量时,可以在服务器102中部署api网关。其中,api网关中包括多个api配置信息,服务器102在接收到终端设备101发送的请求信息时,服务器102需要将该请求信息路由到对应的api配置信息,并根据该api配置信息执行相关的操作,执行完之后,再将该请求信息转发给服务器103。需要进行说明的是,上述服务器102和服务器103可以为不同的服务器,也可以为同一个服务器。

另外,值得注意的是,上述图1中所示的终端设备、网络和服务器的数量和类型仅作为示意,在实际应用中,根据实现的需要,可以具有任意数量和类型的电子设备、网络和服务器。

服务器在将接收到的请求信息路由到对应的api配置信息时,目前常用得到路由算法,是将该请求信息与api网关中的多个api配置信息逐个进行匹配,获得所有匹配成功的api配置。由于api网关提供了路由路径(path)通配符,因此匹配成功的api配置信息可能会有多个,因此,还需要按照一定的优先级规则找出优先级最高的api配置,然后将该请求信息路由到优先级最高的api配置信息,并根据该优先级最高的api配置信息执行相关的操作。但是,上述路由方式中,需要将该请求信息与api网关中所有的api配置信息全部进行匹配,如果匹配成功的api配置信息有多个时,还需要从多个匹配成功的api配置信息中确定优先级最高的api配置信息,使得路由效率较低。

本申请实施例中考虑到上述问题,提供了一种api信息的处理方法,在上述图1所示系统架构的基础上,服务器102通过接收终端设备发送的请求信息,该请求信息中包括入口方法,并根据该入口方法,确定与入口方法对应的多个目标api配置信息,然后按照目标api配置信息的优先级从高到低的顺序,将请求信息依次与多个目标api配置信息进行匹配,当匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。由于在将请求信息与api配置信息进行匹配时,是按照目标api配置信息的优先级从高到低的顺序进行匹配的,当匹配成功时,将不会再继续进行匹配,此时匹配成功的目标api配置信息即为所有能够与请求信息匹配成功的api配置信息中优先级最高的,由此可以提高路由的效率,从而能够提高api网关的性能。

可以理解的是,本申请实施例提供的api信息的处理方法可以应用于需要api网关对终端设备发送的请求信息进行路由的场景中,如需要进行鉴权或者流控等场景中。

下面,将通过具体的实施例对本申请提供的api信息的处理方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图2是本申请实施例一提供的api信息的处理方法的流程示意图,该api信息的处理方法可以由软件和/或硬件装置执行,例如,该硬件装置可以为api信息的处理装置,该api信息的处理装置可以设置在如图1中的服务器102中。示例的,请参见图2所示,该api信息的处理方法可以包括:

s201、接收终端设备发送的请求信息,该请求信息中包括入口方法。

在本步骤中,请求信息可以为基于超文本传输协议(hypertexttransportprotocol,http)协议的信息,该请求信息中包括有入口方法(method),入口方法(method)的取值可以为get\post\put\delete\head\options\connect\trace\any,其中any表示可以匹配任意请求方法。通过设置any,可以提高请求信息匹配成功的概率。

另外,该请求信息中还包括有路由路径(path)和多个参数,该路由路径(path)的取值符合http协议中对路由路径(path)的规定即可,每个参数均需要配置名称、位置、是否可选以及固定取值这四个字段,其中,名称字段需要符合http协议的规定;位置字段通常取值为query\header\body;是否可选字段通常取值包括“可选”或“必选”,若某个参数设置为必选,则请求信息中必须带有该参数,才可能和某个api配置信息匹配成功;固定取值字段中,若某个参数存在固定取值,则该参数一定为必选参数,另外,若某个参数具有固定取值,则请求信息中必须带有该参数,且固定取值也需要和某个api配置信息相同,才有可能和某个api配置信息匹配成功。

s202、根据入口方法,确定与入口方法对应的多个目标api配置信息。

在本步骤中,api网关中配置的多个api配置信息中也包括有入口方法(method)、路由路径(path)和多个参数,其中,api配置信息中的入口方法(method)、路由路径(path)和多个参数的具体取值和设置方式,与请求信息中包括的入口方法(method)、路由路径(path)和多个参数的具体取值和设置方式类似,此处不再赘述。

另外,若两个api配置信息的入口方法(method)、路由路径(path)、必选参数和具有固定取值的参数均相同,则认为这两个api配置信息相同。可以理解的是,为了避免同一个请求信息同时匹配到两个api配置信息的现象,在api网关中不允许出现相同的两个api配置信息。

由于各api配置信息中也包括有入口方法(method),服务器在接收到终端设备发送的请求信息后,会根据该请求信息中包括的入口方法(method)的取值,以及各api配置信息中包括的入口方法(method)的取值,确定与请求信息中的入口方法(method)对应的多个目标api配置信息,其中,请求信息中的入口方法(method)的取值与多个目标api配置信息中入口方法(method)的取值相同。例如:若请求信息中的入口方法(method)的取值为get,则确定出的与请求信息中的入口方法对应的多个目标api配置信息中入口方法(method)的取值也为get。

需要进行说明的是,若未匹配到与请求信息中的入口方法(method)对应的api配置信息,则可以将api配置信息中的入口方法(method)为any的api配置信息确定为与目标api配置信息。

例如:请求信息中的入口方法(method)为post,则先匹配入口方法(method)也为post的api配置信息,若未匹配到,则匹配入口方法(method)为any的api配置信息,并将入口方法(method)为any的api配置信息确定为目标api配置信息。

s203、按照目标api配置信息的优先级从高到低的顺序,将请求信息依次与多个目标api配置信息进行匹配。

s204、当匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。

在本步骤中,多个目标api配置信息可以是按照优先级从高到低的顺序排列的,也可以是按照优先级从低到高的顺序排列的,还可以是在每个目标api配置信息中配置有标识信息,以表示该目标api配置信息的优先级,这样,服务器在确定出多个目标api配置信息之后,可以按照多个目标api配置信息的优先级从高到低的顺序,将请求信息依次与这多个目标api配置信息进行匹配,当匹配成功时,则将不再继续匹配,而是执行与匹配成功的目标api配置信息相关的操作。例如,将请求信息与优先级最高的目标api配置信息进行匹配,若匹配成功,则将不再继续匹配,而是直接执行与优先级最高的目标api配置信息相关的操作,若匹配不成功,再将请求信息与优先级次高的目标api配置信息进行匹配,以此类推,直至匹配成功。这样,可以避免将请求信息与所有api配置信息均匹配之后,再按照预设的优先级规则,从匹配成功的api配置信息中确定优先级最高的api配置信息的现象,从而可以提高路由的效率。

另外,若请求信息与某个目标api配置信息匹配成功,可以理解为请求信息中的入口方法(method)与该目标api配置信息中的入口方法(method)匹配、请求信息中的路由路径(path)与该目标api配置信息中的路由路径(path)匹配、请求信息中的必选参数与该目标api配置信息中的必选参数匹配、以及请求信息中具有固定取值的参数与该目标api配置信息中具有固定取值的参数匹配。

本申请实施例提供的api信息的处理方法,服务器通过接收终端设备发送的请求信息,该请求信息中包括入口方法,并根据该入口方法,确定与入口方法对应的多个目标api配置信息,然后按照目标api配置信息的优先级从高到低的顺序,将请求信息依次与多个目标api配置信息进行匹配,当匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。由于在将请求信息与api配置信息进行匹配时,是按照目标api配置信息的优先级从高到低的顺序进行匹配的,当匹配成功时,将不会再继续进行匹配,此时匹配成功的目标api配置信息即为所有能够与请求信息匹配成功的api配置信息中优先级最高的,由此可以提高路由的效率。

图3是本申请实施例二提供的api信息的处理方法的流程示意图,本实施例在上述图2所示实施例的基础上,对s202中如何根据入口方法,确定与入口方法对应的多个目标api配置信息的过程进行详细说明。如图3所示,该api信息的处理方法可以包括:

s301、接收终端设备发送的请求信息,该请求信息中包括入口方法。

s301与步骤s201的实现过程类似,此处不再赘述。

s302、根据入口方法,确定与入口方法对应的目标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配置信息的入口方法(method)做为key,与该入口方法(method)对应的api列表(list)做为value构建一个映射(map),其结构如下:map<method,list<api>>。

针对每个api列表,服务器可以按照该api列表中包括的各个api配置信息的优先级从高到低的顺序,对该api列表中的api配置信息进行排序,也就是说,该api列表中的各api配置信息是按照优先级从高到低的顺序进行存储的。

服务器在根据请求信息的入口方法,确定与该入口方法对应的目标api列表时,可以根据该请求信息的入口方法,从得到的多个api列表中确定目标api列表。

由于根据每个api配置信息所包括的入口方法,对多个api配置信息进行分类,得到多个api列表,每个api列表中存储的api配置信息的入口方法均相同,这样,根据请求信息的入口方法,直接从多个api列表中确定目标api列表,以此可以便可以确定出多个目标api配置信息,由此可以提高目标api配置信息确定的效率。

s303、按照多个目标api配置信息的优先级从高到低的顺序,将请求信息依次与多个目标api配置信息进行匹配。

s304、当匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。

在本步骤中,目标api列表中所包括的多个目标api配置信息,是按照优先级从高到低的顺序排列的,这样,服务器在将请求信息与多个目标api配置信息进行匹配时,只需要按照目标api列表中多个目标api配置信息的排列顺序,依次进行匹配即可,当匹配成功时,则将不再继续匹配后续的目标api配置信息,而是执行与匹配成功的目标api配置信息相关的操作,这样可以提高请求信息匹配的效率。

另外,在将请求信息依次与多个目标api配置信息进行匹配时,分别将请求信息中的入口方法、路由路径和参数位置,依次与目标api配置信息中的入口方法、路由路径和参数位置进行匹配,其中,该请求信息中的参数位置和目标api配置信息中的参数位置均包括请求参数(query参数)、头参数(header参数)和主体参数(body参数)。

现有技术中,在将请求信息与api配置信息进行匹配时,通常只匹配入口方法(method)、路由路径(path)以及query参数,由于匹配的维度较少,使得匹配的灵活性较差。本申请实施例中为了解决这一问题,在进行匹配时,会匹配入口方法(method)、路由路径(path)、query参数、header参数以及body参数,而且需要考虑参数的固定取值,由此可以增加匹配的维度,提高匹配的灵活性。

例如,有两个不同分页方式的分页接口(marker和page),则可以在api网关中配置两个api配置信息:get/students?listmanner=page和get/students?listmanner=marker,第一个api配置信息中配置了具有固定值的参数listmanner=page,第二个api配置信息中配置了具有固定值的参数listmanner=marker。若终端设备发送的请求信息需要对资源进行修改,但是具体进行什么修改需要通过参数传递,则可以配置api配置信息:put/students/*?action,该api配置信息中配置了一个单层通配符和一个必需参数action,其中action可能的取值是add或delete等,也即可以配置多种类型的api配置信息,从而可以提高匹配的灵活性。

本申请实施例提供的api信息的处理方法,服务器通过接收终端设备发送的请求信息,该请求信息中包括入口方法,并根据该入口方法,确定与该入口方法对应的目标api列表,其中,目标api列表中包括按照优先级从高到低的顺序排列的多个目标api配置信息,然后按照目标api配置信息的优先级从高到低的顺序,将请求信息依次与多个目标api配置信息进行匹配,当匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。由于在将请求信息与api配置信息进行匹配时,只需要按照目标api列表中多个目标api配置信息的排列顺序,依次进行匹配即可,由此可以提高请求信息和api配置信息匹配的效率。

图4是本申请实施例三提供的api信息的处理方法的流程示意图,本实施例在上述图2和图3所示实施例的基础上,对如何确定多个目标api配置信息的优先级的过程进行详细说明。如图4所示,该api信息的处理方法可以包括:

s401、获取第一目标api配置信息的第一路由路径和第二目标api配置信息的第二路由路径,该第一目标api配置信息和该第二目标api配置信息为多个目标api配置信息中的任意两个目标api配置信息。

在本步骤中,各个目标api配置信息中包括有路由路径(path),该路由路径的取值符合http协议中对路由路径(path)的规定。在确定第一目标api配置信息和第二目标api配置信息之间的优先级时,通常先根据第一目标api配置信息的第一路由路径和第二目标api配置信息的第二路由路径,确定第一目标api配置信息和第二目标api配置信息之间的优先级,若根据路由路径确定出第一目标api配置信息和第二目标api配置信息之间的优先级相同,则再根据第一目标api配置信息中包括的参数和第二目标api配置信息中包括的参数,确定第一目标api配置信息和第二目标api配置信息之间的优先级。

s402、根据预设字符,分别对第一路由路径和第二路由路径进行分割,获得第一路由路径对应的n个第一字符串数组,以及第二路由路径对应的m个第二字符串数组。

其中,n和m均为正整数。

示例性的,预设字符可以为“/”服务器在确定出第一路由路径和第二路由路径之后,可以按照“/”对第一路由路径和第二路由路径进行分割,从而得到第一路由路径对应的n个第一字符串数组以及第二路由路径对应的m个第二字符串数组,其中,n和m可以相等,也可以不相等。

例如:若第一目标api配置信息的第一路由路径为/ab/*,第二目标api配置信息的第二路由路径为/c/d/**,则按照“/”对/ab/*进行分割后,可以得到第一路由路径对应的2个第一字符串数组,分别为[ab]和[*],按照“/”对/c/d/**进行分割后,可以得到第二路由路径对应的3个第二字符串数组,分别为[c]、[d]和[**]。

s403、根据n个第一字符串数组和m个第二字符串数组,确定第一目标api配置信息和第二目标api配置信息的优先级。

在本步骤中,服务器可以根据确定出的n个第一字符串数组和m个第二字符串数组,确定第一目标api配置信息和第二目标api配置信息的优先级。

在本实施例中,由于在路由路径中,通常用“/”对路由路径分割层级,而且各个层级本身可能包括具体的语义,这样,根据“/”,对第一路由路径和第二路由路径进行分割,并根据分割之后得到的第一字符串数组和第二字符串数组确定第一目标api配置信息和第二目标api配置信息的优先级时,考虑了路由路径中各个层级之间的关系,由此可以提高优先级确定的准确性。

在一种可能的实现方式中,按照由前向后的顺序,将n个第一字符串数组和m个第二字符串数组进行比较,当存在第i个第一字符串数组和第i个第二字符串数组的优先级不相等时,则确定优先级高的字符串数组对应的目标api配置信息的优先级,高于优先级低的字符串数组对应的目标api配置信息的优先级。

其中,若n等于m,则i为大于零,且小于等于n或m的整数,若n不等于m,则i为大于零,且小于等于n或m中最小值的整数。

具体地,按照由前向后的顺序,将n个第一字符串数组和m个第二字符串数组进行比较,可以理解为,将第一个第一字符串数组和第一个第二字符串数组进行比较,若第一个第一字符串数组和第一个第二字符串数组的优先级不同,则不再比较后面的字符串数组之间的优先级,而是直接确定优先级高的字符串数组对应的目标api配置信息的优先级,高于优先级低的字符串数组对应的目标api配置信息的优先级。若第一个第一字符串数组和第一个第二字符串数组的优先级相同,则比较第二个第一字符串数组和第二个第二字符串数组之间的优先级等等,当确定出第i个第一字符串数组和第i个第二字符串数组的优先级不相等时,则不再比较后面的字符串数组之间的优先级,而是直接根据第i个第一字符串数组和第i个第二字符串数组之间的优先级,确定第一目标api配置信息和第二目标api配置信息之间的优先级。

可以理解的是,路由路径中可能会存在通配符?、*和**,其中,?表示匹配单个任意字符,*表示匹配任意多个字符,但仅限单层级使用,**表示匹配任意多个字符,可以支持多层级使用,另外,**通常仅限使用在路由路径(path)的末尾。在对第一路由路径和第二路由路径进行分割,得到的n个第一字符串数组和m个第二字符串数组中,可能包括字符串,也可能包括通配符,如包括?、*和**。在比较第一字符串数组和第二字符串数组的优先级时,优先级从高到低的顺序依次为:字符串、?、*和**。

举例来说,若第一路由路径为/ab/*,对应的2个第一字符串数组分别为[ab]和[*],第二路由路径为/c/d/**,对应的3个第二字符串数组分别为[c]、[d]和[**],按照由前向后的顺序进行比较,由于第一个第一字符串数组[ab]和第一个第二字符串数组[c]的优先级相同,则再比较第二个第一字符串数组[*]和第二个第二字符串数组[d]之间的优先级,由于第二字符串数组[d]的优先级高于第一字符串数组[*]的优先级,因此,可以确定出第二目标api配置信息的优先级高于第一目标api配置信息的优先级。

在本实施例中,由于考虑到路由路径中开头部分的层级内容通常更为重要,因此,在确定优先级时,是按照由前向后的顺序,将n个第一字符串数组和m个第二字符串数组进行比较,从而确定第一目标api配置信息和第二目标api配置信息之间的优先级,这样可以提高优先级确定的准确性。

进一步地,若n大于m,且n个第一字符串数组中前m个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等,则确定所述n个第一字符串数组中第m+1个第一字符串数组的内容,若所述内容为第一字符,则确定所述第一目标api配置信息的优先级低于所述第二目标api配置信息的优先级。

其中,该第一字符可以为通配符**,由于该通配符**可以匹配任意内容,包括空内容。在n大于m,且n个第一字符串数组中前m个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等,且n个第一字符串数组中第m+1个第一字符串数组的内容若为**时,为了防止请求信息同时匹配到第一目标api配置信息和第二目标api配置信息,此时就需要区分第一目标api配置信息和第二目标api配置信息的优先级。

具体地,若n大于m,也即第一字符串数组的个数比第二字符串数组的个数多时,如果按照从前往后的顺序,依次进行比较之后,确定n个第一字符串数组中前m个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等,则需要确定n个第一字符串数组中第m+1个第一字符串数组的内容是否为第一字符。若n个第一字符串数组中第m+1个第一字符串数组的内容为第一字符时,则可以确定第一目标api配置信息的优先级低于第二目标api配置信息的优先级。

举例来说,若对第一目标api配置信息中第一路由路径/a/*/**进行分割,得到3个第一字符串数组[a]、[*]和[**],对第二目标api配置信息中第二路由路径/b/*进行分割,得到2个第二字符串数组[b]和[*],按照从前到后的顺序进行比较后,确定第一个第一字符串数组[a]和第一个第二字符串数组[b]的优先级相同,第二个第一字符串数组[*]和第二个第二字符串数组[*]的优先级相同,且确定出第三个第一字符串数组为[**],此时,可以确定第一目标api配置信息的优先级低于第二目标api配置信息的优先级。

在本实施例中,在n个第一字符串数组中前m个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等,且n个第一字符串数组中第m+1个第一字符串数组的内容为第一字符时,确定第一目标api配置信息的优先级低于第二目标api配置信息的优先级,这样可以避免请求信息同时匹配到两个优先级相同的目标api配置信息的现象,从而可以提高请求信息路由的准确性。

进一步地,若n小于m,且m个第二字符串数组中前n个第二字符串数组的优先级分别与n个第一字符串数组的优先级均相等,则确定m个第二字符串数组中第n+1个第二字符串数组的内容,若该内容为第一字符,则确定第二目标api配置信息的优先级低于第一目标api配置信息的优先级。

与n大于m的情况类似,该第一字符可以为通配符**,由于该通配符**可以匹配任意内容,包括空内容。在n小于m,且m个第二字符串数组中前n个第二字符串数组的优先级分别与n个第一字符串数组的优先级均相等,且m个第二字符串数组中第n+1个第一字符串数组的内容若为**时,为了防止请求信息同时匹配到第一目标api配置信息和第二目标api配置信息,此时就需要区分第一目标api配置信息和第二目标api配置信息的优先级。

具体地,若n小于m,也即第二字符串数组的个数比第一字符串数组的个数多时,如果按照从前往后的顺序,依次进行比较之后,确定m个第二字符串数组中前n个第二字符串数组的优先级分别与n个第一字符串数组的优先级均相等,则需要确定m个第二字符串数组中第n+1个第二字符串数组的内容是否为第一字符。若m个第二字符串数组中第n+1个第二字符串数组的内容为第一字符时,则可以确定第二目标api配置信息的优先级低于第二目标api配置信息的优先级。

举例来说,若对第一目标api配置信息中第一路由路径/a/*进行分割,得到2个第一字符串数组[a]和[*],对第二目标api配置信息中第二路由路径/b/*/**进行分割,得到3个第二字符串数组[b]、[*]和[**],按照从前到后的顺序进行比较后,确定第一个第一字符串数组[a]和第一个第二字符串数组[b]的优先级相同,第二个第一字符串数组[*]和第二个第二字符串数组[*]的优先级相同,且确定出第三个第二字符串数组为[**],此时,可以确定第二目标api配置信息的优先级低于第二目标api配置信息的优先级。

在本实施例中,在m个第二字符串数组中前n个第二字符串数组的优先级分别与n个第一字符串数组的优先级均相等,且m个第二字符串数组中第n+1个第二字符串数组的内容为第一字符时,确定第二目标api配置信息的优先级低于第一目标api配置信息的优先级,这样可以避免请求信息同时匹配到两个优先级相同的目标api配置信息的现象,从而可以提高请求信息路由的准确性。

可选地,若上述内容为除第一字符之外的第二字符时,或者,若n等于m,且n个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等时,则分别确定第一目标api配置信息和第二目标api配置信息中具有固定值的参数的个数,确定具有固定值的参数的个数多的目标api配置信息的优先级,高于具有固定值的参数的个数少的目标api配置信息。

具体地,上述的第二字符,可以包括字符串、?和*等。

其中,若n大于m,且n个第一字符串数组中前m个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等,且n个第一字符串数组中第m+1个第一字符串数组的内容为除第一字符之外的第二字符,或者,若n小于m,且m个第二字符串数组中前n个第二字符串数组的优先级分别与n个第一字符串数组的优先级均相等,且m个第二字符串数组中第n+1个第二字符串数组的内容为除第一字符之外的第二字符,或者若n等于m,且n个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等时,此时,根据第一目标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配置信息查重的维度和确定优先级的维度相同,均为入口方法(method)、路由路径(path)、具有固定值的参数以及必选参数,因此按照上述各实施例中确定优先级的方式,api网关中将不会存在优先级相同的两个api配置信息。

图5是本申请实施例提供的api信息的处理装置50的结构示意图,示例的,请参见图5所示,该api信息的处理装置50可以包括:

接收模块501,用于接收终端设备发送的请求信息,所述请求信息中包括入口方法;

处理模块502,用于根据所述入口方法,确定与所述入口方法对应的多个目标api配置信息;

所述处理模块502,还用于按照所述多个目标api配置信息的优先级从高到低的顺序,将所述请求信息依次与所述多个目标api配置信息进行匹配;

所述处理模块502,还用于在匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。

可选地,所述处理模块502,具体用于:

根据所述入口方法,确定与所述入口方法对应的目标api列表,所述目标api列表中包括按照优先级从高到低的顺序排列的所述多个目标api配置信息。

可选地,所述处理模块502,还用于获取多个api配置信息;

所述处理模块502,还用于根据每个api配置信息所包括的入口方法,对多个api配置信息进行分类,得到多个api列表,其中,每个api列表对应一类api配置信息;

所述处理模块502,还用于针对每个api列表,按照优先级从高到低的顺序,对所述api列表中的api配置信息进行排序;

所述处理模块502,具体用于:

根据所述入口方法,从所述多个api列表中确定所述目标api列表。

可选地,所述处理模块502,还用于获取第一目标api配置信息的第一路由路径和第二目标api配置信息的第二路由路径,所述第一目标api配置信息和所述第二目标api配置信息为多个目标api配置信息中的任意两个目标api配置信息;

所述处理模块502,还用于根据预设字符,分别对所述第一路由路径和所述第二路由路径进行分割,获得所述第一路由路径对应的n个第一字符串数组,以及所述第二路由路径对应的m个第二字符串数组,其中,n和m均为正整数;

所述处理模块502,还用于根据所述n个第一字符串数组和所述m个第二字符串数组,确定所述第一目标api配置信息和所述第二目标api配置信息的优先级。

可选地,所述处理模块502,具体用于:

按照由前向后的顺序,将所述n个第一字符串数组和所述m个第二字符串数组进行比较,当存在第i个第一字符串数组和第i个第二字符串数组的优先级不相等时,则确定优先级高的字符串数组对应的目标api配置信息的优先级,高于优先级低的字符串数组对应的目标api配置信息的优先级,i为大于零的整数。

可选地,所述处理模块502,还用于若n大于m,且n个第一字符串数组中前m个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等,则确定所述n个第一字符串数组中第m+1个第一字符串数组的内容;

所述处理模块502,还用于若所述内容为第一字符,则确定所述第一目标api配置信息的优先级低于所述第二目标api配置信息的优先级。

可选地,所述处理模块502,还用于若n小于m,且m个第二字符串数组中前n个第二字符串数组的优先级分别与n个第一字符串数组的优先级均相等,则确定所述m个第二字符串数组中第n+1个第二字符串数组的内容;

所述处理模块502,还用于若所述内容为第一字符,则确定所述第二目标api配置信息的优先级低于所述第一目标api配置信息的优先级。

可选地,所述处理模块502,还用于若所述内容为除所述第一字符之外的第二字符时,或者,若n等于m,且n个第一字符串数组的优先级分别与m个第二字符串数组的优先级均相等时,则分别确定所述第一目标api配置信息和所述第二目标api配置信息中具有固定值的参数的个数;

所述处理模块502,还用于确定具有固定值的参数的个数多的目标api配置信息的优先级,高于具有固定值的参数的个数少的目标api配置信息。

可选地,所述处理模块502,还用于若所述第一目标api配置信息中具有固定值的参数的个数等于所述第二目标api配置信息中具有固定值的参数的个数,则分别确定所述第一目标api配置信息和所述第二目标api配置信息中必选参数的个数;

所述处理模块502,还用于确定必选参数的个数多的目标api配置信息的优先级,高于必选参数的个数少的目标api配置信息。

可选地,所述处理模块502,具体用于:

分别将所述请求信息中的入口方法、路由路径和参数位置,依次与所述目标api配置信息中的入口方法、路由路径和参数位置进行匹配,其中,所述请求信息中的参数位置和所述目标api配置信息中的参数位置均包括请求参数、头参数和主体参数。

本申请实施例提供的api信息的处理装置50,可以执行上述任一实施例中的api信息的处理方法的技术方案,其实现原理以及有益效果与api信息的处理方法的实现原理及有益效果类似,可参见api信息的处理方法的实现原理及有益效果,此处不再进行赘述。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图6所示,是根据本申请实施例的api信息的处理方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。

存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的api信息的处理方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的api信息的处理方法。

存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的api信息的处理方法对应的程序指令/模块(例如,附图5所示的接收模块501和处理模块502)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的api信息的处理方法。

存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据api信息的处理方法的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至api信息的处理方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

api信息的处理方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。

输入装置603可接收输入的数字或字符信息,以及产生与api信息的处理方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本申请实施例的技术方案,通过接收终端设备发送的请求信息,该请求信息中包括入口方法,并根据该入口方法,确定与入口方法对应的多个目标api配置信息,然后按照目标api配置信息的优先级从高到低的顺序,将请求信息依次与多个目标api配置信息进行匹配,当匹配成功时,则执行与匹配成功的目标api配置信息相关的操作。由于在将请求信息与api配置信息进行匹配时,是按照目标api配置信息的优先级从高到低的顺序进行匹配的,当匹配成功时,将不会再继续进行匹配,此时匹配成功的目标api配置信息即为所有能够与请求信息匹配成功的api配置信息中优先级最高的,由此可以提高路由的效率。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

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