接口请求处理方法和装置与流程

文档序号:21978050发布日期:2020-08-25 19:11阅读:288来源:国知局
接口请求处理方法和装置与流程

本申请涉及网络通信技术领域,更具体的说是涉及一种接口请求处理方法和装置。



背景技术:

浏览器可以从服务器获取网页数据,并在浏览器中展现网页数据。

其中,网页的页面一般由多种元素组成,如,网页页面中可能会有列表或者详情等等组成元素。由于网页页面的组成元素较多,因此,如果浏览器在服务器反馈了该网页的所有页面数据之后再加载网页,必然会导致网页加载较慢,使得网页展现效果较差。为了提高网页展现效果,通过浏览器分批次向服务器请求调用网页的各个元素对应的接口将成为一种趋势。在浏览器向服务器请求调用网页中某个元素对应的接口之后,如果浏览器接收到服务器返回该元素对应的接口数据,浏览器便可以基于该接口数据在网页中加载该元素,从而有利于减少用户等待网页展现的时长,提高网页展现效果。

在浏览器向服务器请求调用某个元素对应的接口之后,服务器会确定调用该接口所需执行的视图函数,并通过执行视图函数来调取该接口的数据。然而,在实际应用中,经常需要为服务器中各个元素对应的接口增加某些统一的功能,在该种情况下,就需要对各个元素的接口对应的视图函数进行修改。由于服务器中各个接口对应的视图函数的数量较多,逐个修改视图函数的复杂度较高,也必然会耗费较多的时间。



技术实现要素:

有鉴于此,本申请提供了一种接口请求处理方法和装置,以可以在不需要对接口的视图函数进行修改的前提下,为接口增加相应的功能,并在接口调用过程中实现相应功能。

为实现上述目的,本申请提供如下技术方案:

一方面,本申请提供了一种接口请求处理方法,包括:

接收浏览器发送的接口调用请求,所述接口调用请求用于请求调用网页中的元素对应的接口;

获得所述接口调用请求中携带的接口参数值,所述接口参数值用于表征所述浏览器请求调用的目标接口;

基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数;

运行使用所述装饰器装饰的所述目标视图函数,获得所述目标接口的接口数据;

将所述接口数据返回给所述浏览器,以使得所述浏览器基于所述接口数据在所述网页中加载所述目标接口对应的元素。

优选的,在所述基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数之前,还包括:

调用并运行预置的统一定位函数,所述统一定位函数用于定位所述服务器中不同接口各自对应的视图函数;

所述基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数,包括:

通过所述统一定位函数基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数。

优选的,所述调用并运行预置的统一定位函数,包括:

在解析出所述接口调用请求中携带的接口参数信息为设定类型的接口参数信息的情况下,调用并运行预置的统一定位函数;

所述获得所述接口调用请求中携带的接口参数值,包括:

获得所述接口参数信息中包含的接口参数值。

优选的,所述装饰器中存储有不同接口对应的视图函数的名称以及所述视图函数所在的功能模块的名称;

所述基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数,包括:

基于所述接口参数值所表征的目标功能模块的名称以及所述目标功能模块中目标视图函数的名称,从装饰器中所述目标功能模块内确定出所述目标视图函数。

优选的,在所述接收浏览器发送的接口调用请求之前,还包括:

在内存中加载所述装饰器;

所述运行使用所述装饰器装饰的所述目标视图函数,包括:

运行内存中使用所述装饰器装饰的所述目标视图函数。

又一方面,本申请还提供了一种接口请求处理装置,包括:

请求接收单元,用于接收浏览器发送的接口调用请求,所述接口调用请求用于请求调用网页中的元素对应的接口;

参数获得单元,用于获得所述接口调用请求中携带的接口参数值,所述接口参数值用于表征所述浏览器请求调用的目标接口;

函数定位单元,用于基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数;

函数运行单元,用于运行使用所述装饰器装饰的所述目标视图函数,获得所述目标接口的接口数据;

数据返回单元,用于将所述接口数据返回给所述浏览器,以使得所述浏览器基于所述接口数据在所述网页中加载所述目标接口对应的元素。

优选的,还包括:

通用函数调用单元,用于在所述函数定位单元确定装饰器中用于调用所述目标接口的目标视图函数之前,调用并运行预置的统一定位函数,所述统一定位函数用于定位所述服务器中不同接口各自对应的视图函数;

所述函数定位单元具体为,用于通过所述统一定位函数基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数。

优选的,所述通用函数调用单元,具体为,用于在解析出所述接口调用请求中携带的接口参数信息为设定类型的接口参数信息的情况下,调用并运行预置的统一定位函数;

所述参数获得单元,具体为,用于获得所述接口参数信息中包含的接口参数值。

优选的,所述函数定位单元在基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数时,具体为,基于所述接口参数值所表征的目标功能模块的名称以及所述目标功能模块中目标视图函数的名称,从装饰器中所述目标功能模块内确定出所述目标视图函数,所述装饰器中存储有不同接口对应的视图函数的名称以及所述视图函数所在的功能模块的名称。

优选的,还包括:

预加载单元,用于在所述请求接收单元接收浏览器发送的接口调用请求之前,在内存中加载所述装饰器;

所述函数运行单元具体为,用于运行内存中使用所述装饰器装饰的所述目标视图函数。

经由上述的技术方案可知,本申请的方案中使用装饰器装饰不同接口的视图函数,在服务器在接收到浏览器发送的接口调用请求之后,可以根据该接口调用请求中携带的接口参数值,从装饰器中确定该浏览器请求调用的接口对应的目标视图函数。由于服务器需要为各接口添加某种功能的情况下,可以仅在装饰器中增设相应功能的代码,而无需修改各个接口对应的视图函数,相应的,在确定出装饰器中与浏览器请求调用的接口对应的目标视图函数之后,通过运行使用该装饰器装饰的目标视图函数,便可以实现增设有相应功能的接口调用,从而在无需对各接口的视图函数进行修改的前提下,也可以为各接口增加相应的功能,并在接口调用过程中实现相应功能,大大降低了由于修改视图函数所导致的复杂度和时间消耗。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1示出了本申请一种接口请求处理方法一个实施例的流程示意图;

图2示出了本申请一种接口请求处理方法又一个实施例的流程示意图;

图3示出了本申请一种接口请求处理装置的一种组成结构示意图。

具体实施方式

本申请的方案适用于浏览器向服务器请求调用网页中元素的接口的场景,通过本申请的方案,在需要为服务器中各网页的各接口添加某种功能的情况下,无需修改各接口的视图函数,大大降低了为接口添加某项功能的复杂度,自然也就减少了所需耗费的时间。

其中,本申请提到的服务器可以为独立的服务器,也可以是服务器集群、分布式服务器或者云平台中的服务器等,在此不加限制。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如图1所示,其示出了本申请一种接口请求处理方法一个实施例的流程示意图,本实施例的方法可以应用于以上提到的任意一种类型的服务器。

本实施例的方法包括:

s101,接收浏览器发送的接口调用请求。

其中,该接口调用请求用于请求调用网页中的元素对应的接口。

其中,网页中的元素可以是组成网页的组成部分,每个网页由至少一个元素组成,在本申请实施例中,网页中各个元素对应了服务器系统的一个接口,通过调用网页中该元素的接口可以实现获取该网页中该元素的数据。

如,假设浏览器请求展现的网页中包含列表和表格。那么,浏览器可以向服务器发送调用该网页中列表的接口,以请求获得该列表的数据,并以便于在网页中展现该表格。相应的,浏览器还可以请求调用网页中该表格对应的接口,以获得该表格的数据,以便在网页中展现出该表格。

可以理解的是,浏览器每次可以发送针对网页中不同元素的一个或者多个接口调用请求,但是针对请求调用的每个接口所执行的操作过程均相同。

s102,获得该接口调用请求中携带的接口参数值。

该接口参数值用于表征该浏览器请求调用的目标接口。为了便于区分,将该接口调用请求所请求调用的接口称为目标接口。

s103,基于该接口参数值,确定装饰器中用于调用该目标接口的目标视图函数。

其中,装饰器本质上是一个python函数,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能。其中,python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

也就是说,装饰器就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。装饰器这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌原来函数的函数。

在该基础上,本申请的服务器侧可以使用装饰器装饰各个接口的视图函数,因此,该装饰器中可以获得经过装饰的多个不同接口各自的视图函数。

其中,根据需要为各接口新增的功能,在装饰器中可以设置实现相应功能的代码,以实现对装饰器中各接口的视图函数进行装饰。相应的,装饰器中实现相应功能的代码与接口的视图函数相结合,便可以实现为接口增设相应的功能。

举例说明,假设需要统计各个接口的视图函数的执行时长,则可以在装饰器存储有各个接口的视图函数的基础上,在装饰器中新增用于统计各个视图函数执行时长的功能代码,以实现通过装饰器可以在执行视图函数实现接口调用的同时,得到接口调用所需的时长。

可以理解的是,由于本申请中视图函数位于装饰器内,一般视图函数会处于装饰器的某个功能模块中,因此,在定位接口的视图函数时,需要确定接口的视图函数为装饰器的哪个功能模块的哪个视图函数。具体的,在装饰器中存储有不同接口对应的视图函数的名称以及视图函数所在的功能模块的名称。

相应的,本申请中接口调用请求所携带的接口参数值与现有的接口调用请求中携带的参数信息也不相同。在本申请实施例中,接口参数值为由浏览器所请求调用的目标接口对应的目标视图函数的名称以及目标函数所在的目标功能模块的名称组成的字符串。在此基础上,本申请可以基于该接口参数值所表征的目标功能模块的名称以及该目标功能模块中目标视图函数的名称,从装饰器中的该目标功能模块内确定出该目标视图函数。

如,装饰器中存储有接口1对应的视图函数1,视图函数1的函数名称为函数aa,且视图函数1处于功能模块a;且装饰器中存储有接口2对应的视图函数2,视图函数2的函数名称为函数bb,且视图函数2处于功能模块b中。在此基础上,装饰器可以通过键值形式存储各个接口的视图函数,例如,视图函数1的键为函数aa、功能模块a,值为该视图函数1。对于视图函数2也类似。在此基础上,如果浏览器需要调用接口1,那么浏览器发送的接口调用请求中携带的接口参数值应该是视图函数1的键,例如,接口参数值可为由函数aa和功能模块a组成的字符串,相应的,基于该接口参数值可以查询各个键值对,从而定位到功能模块a中的视图函数1。

可以理解的是,服务器确定接口的视图函数需要基于路由规则,由于不同接口的视图函数不同,那么分别针对不同的接口设置不同的路由规则,那么需要维护多条路由规则。如,假设服务器有100种接口,那么为了分别定位到这100个接口的视图函数,可能需要设置100条路由规则,这必须增加了开发人员开发并维护路由规则的复杂度。

在一个示例中,为了减少服务器端所需要维护的路由的数量,本申请,针对所有接口均配置同一个路由规则,在该路由规则中,任意接口均指向同一个统一定位函数,该统一定位函数用于定位服务器中不同接口各自对应的视图函数。因此,无论服务器侧中接口数量的多少,服务器侧只需要维护一条路由规则。在条路由规则就是定义了接口调用请求指向一个通用的统一定位函数。

相应的,响应于接口调用请求,可以调用并运行预置的统一定位函数。在此基础上,可以通过该统一定位函数基于该接口参数值,确定装饰器中相应的目标视图函数。通过统一定位函数定位目标视图函数的过程与前面介绍的内容相似,在此不再赘述。

作为一种可选方式,为了区分出接口调用请求为需要通过通用的统一定位函数来定位接口的视图函数的调用请求,在本申请中接口调用请求所携带的接口参数信息为设定类型的接口参数信息,其中,该接口参数信息包括前面提到的接口参数值。如,接口参数信息除了该接口参数值之外,还可以携带有用于表征该接口参数信息为设定类型的接口参数信息的标识信息。

相应的,在解析出该接口调用请求中携带的接口参数信息为设定类型的接口参数信息的情况下,调用并运行预置的统一定位函数。后续会结合一个实施例进行详细介绍,在此不再赘述。

s104,运行使用该装饰器装饰的该目标视图函数,获得该目标接口的接口数据。

可以理解的是,装饰器内的视图函数就是经过该装饰器装饰的视图函数,因此,该目标视图函数就是经过装饰器装饰的视图函数,在该种情况下,运行使用该装饰器装饰的目标视图函数的同时,该装饰器中用于装饰该目标视图函数的其他函数代码(即为接口添加的其他功能对应的函数代码)也会被同步调用并运行,从而使得在接口调用的过程中,实现为接口添加的其他功能。

举例说明,仍以前面需要统计各个接口的调用时长为例,那么在装饰器中会存在用于统计视图函数执行时长的计时代码,在该基础上,运行使用装饰器的目标视图函数的同时,计时代码启动,记录目标视图函数的执行开始时间,并最终记录该目标视图函数的执行结束时间,从而得到该接口的调用时长。

其中,目标接口的接口数据为运行使用装饰器的目标视图函数所得到的数据,该接口数据为浏览器展现该目标接口对应的元素所需的数据。

作为一种可选方式,本申请服务器可以预先在内存中加载出该装饰器,在该种情况下,服务器可以直接运行内存中使用该装饰器装饰的该目标视图函数。

s105,将该接口数据返回给该浏览器,以使得该浏览器基于该接口数据在网页中加载出该目标接口对应的元素。

在本申请实施例中,浏览器只要得到服务器返回的网页中某个元素对应接口的接口数据之后,便可以基于该接口数据在网页中加载相应的元素,而无需等待整个网页中所有元素的接口数据均返回再加载该元素。

可见,本申请的方案中使用装饰器装饰不同接口的视图函数,在服务器在接收到浏览器发送的接口调用请求之后,可以根据该接口调用请求中携带的接口参数值,从装饰器中确定该浏览器请求调用的接口对应的目标视图函数。由于服务器需要为各接口添加某种功能的情况下,可以仅在装饰器中增设相应功能的代码,而无需修改各个接口对应的视图函数,相应的,在确定出装饰器中与浏览器请求调用的接口对应的目标视图函数之后,通过运行使用该装饰器装饰的目标视图函数,便可以实现增设有相应功能的接口调用,从而在无需对各接口的视图函数进行修改的前提下,也可以为各接口增加相应的功能,大大降低了由于修改视图函数所导致的复杂度和时间消耗。

同时,由于本申请在装饰器中存储有各个接口的视图函数,通过装饰器可以直接获得各个接口的视图函数的函数注释,因此,可以直接从装饰器导出视图函数相关函数注释,以用于生成开发人员所需维护的开发文档,并提供给浏览器等前端开发人员,从而无需开发人员在开发或者修改视图函数之后,再单独编写或者调整该开发文档,降低了生成和维护开发文档的复杂度。

为了便于理解,下面以本申请一种情况为例对本申请的接口请求处理方法进行介绍。如,参见图2,其示出了本申请一种接口请求处理方法又一个实施例的流程示意图,本实施例的方法应用于前面提到的服务器。

本实施例的方法可以包括:

s201,在内存中加载装饰器。

该装饰器中存储有不同接口的视图函数以及视图函数的名称等相关信息。

需要说明的是,该步骤s201并不是处于接口调用请求所必须执行的步骤,其仅仅是服务器在处理接口调用请求之前预先执行的,该步骤可以仅执行一次,而无需在每次接收到接口调用请求之前均执行。

s202,接收浏览器发送的接口调用请求。

其中,该接口调用请求用于请求调用网页中的元素对应的接口。

s203,在解析出该接口调用请求中携带的接口参数信息为设定类型的接口参数信息的情况下,获得该接口参数信息中包含的接口参数值,调用并运行预置的统一定位函数。

其中,该接口参数信息为接口调用请求中携带的调用接口相关的信息。如,该接口参数信息包括该接口参数值,还可以携带有特定标识符,该特定标识符可以表征接口参数信息为设定类型的接口参数信息。

举例说明,以浏览器需要调用网页中列表的接口为例说明:

原有的接口调用请求可以为:http://www.a*a.com/list,其中,该接口调用请求中的“list”表示路径。该路径可以直接表征出该接口对应的路由,如,list对应视图函数1。其中,不同接口的路由不同,需要针对不同的接口配置不同的路由。

而本申请的可以针对任意接口调用请求均配置同一条路由:如,api对应统一定位函数。相应的,调用网页中列表的接口的接口调用请求为:http://www.a*a.com/api?method=list,其中,“api?method=list”为接口路径及参数信息,根据该接口路径及参数信息中的路径“api”,可以确定该接口调用请求为需要经过通用的统一定位函数来处理的接口调用请求。在该基础上,可以调用统一定位函数,并根据该接口路径及参数信息中携带的“method=list”,从装饰器中匹配对应的视图函数。

s204,通过该统一定位函数,确定装饰器中该接口参数值对应的目标视图函数。

如,根据接口参数值所表征的目标功能模块的名称以及目标功能模块中目标视图函数的名称,从装饰器中该目标功能模块内确定出该目标视图函数。具体参见前面实施例的相关介绍,在此不再赘述。

s205,运行内存中使用该装饰器装饰的该目标视图函数,获得该目标接口的接口数据。

s206,将该接口数据返回给该浏览器,以使得该浏览器基于该接口数据在网页中加载出该目标接口对应的元素。

以上步骤s205和s206可以参见前面实施例的相关介绍,在此不再赘述。

在本实施例中,除了前面实施例所提到的有益效果之外,由于本实施例中,接口调用请求携带的接口参数信息并不是调用接口所需的路由,降低了路由被暴露的风险,提高了服务器中各接口调用所需的路由的安全性。

对应本申请的接口请求处理方法,本申请还提供了一种接口请求处理装置。

如图3所示,其示出了本申请一种接口请求处理装置一个实施例的组成结构示意图,本实施例的装置可以应用于服务器。

本实施例的装置至少可以包括:请求接收单元301、参数获得单元302、函数定位单元303、函数运行单元304和数据返回单元305。

其中,请求接收单元301,用于接收浏览器发送的接口调用请求,所述接口调用请求用于请求调用网页中的元素对应的接口;

参数获得单元302,用于获得所述接口调用请求中携带的接口参数值,所述接口参数值用于表征所述浏览器请求调用的目标接口;

函数定位单元303,用于基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数;

函数运行单元304,用于运行使用所述装饰器装饰的所述目标视图函数,获得所述目标接口的接口数据;

数据返回单元305,用于将所述接口数据返回给所述浏览器,以使得所述浏览器基于所述接口数据在所述网页中加载所述目标接口对应的元素。

在一种可能的实现方式中,该装置还可以包括:

通用函数调用单元,用于在所述函数定位单元确定装饰器中用于调用所述目标接口的目标视图函数之前,调用并运行预置的统一定位函数,所述统一定位函数用于定位所述服务器中不同接口各自对应的视图函数;

所述函数定位单元具体为,用于通过所述统一定位函数基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数。

可选的,所述通用函数调用单元,具体为,用于在解析出所述接口调用请求中携带的接口参数信息为设定类型的接口参数信息的情况下,调用并运行预置的统一定位函数;

所述参数获得单元,具体为,用于获得所述接口参数信息中包含的接口参数值。

在又一种可能的实现方式中,以上任意一个装置的实施例中,该函数定位单元在基于所述接口参数值,确定装饰器中用于调用所述目标接口的目标视图函数时,具体为:

基于所述接口参数值所表征的目标功能模块的名称以及所述目标功能模块中目标视图函数的名称,从装饰器中所述目标功能模块内确定出所述目标视图函数,所述装饰器中存储有不同接口对应的视图函数的名称以及所述视图函数所在的功能模块的名称。

在又一种可能的实现方式中,该装置还可以包括:

预加载单元,用于在所述请求接收单元接收浏览器发送的接口调用请求之前,在内存中加载所述装饰器;

相应的,该函数运行单元具体为,用于运行内存中使用所述装饰器装饰的所述目标视图函数。

对于装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本申请的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本申请的目的。例如,所述单元或子单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或多个子单元结合一起。另外,多个单元可以或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

另外,所描述系统和方法以及不同实施例的示意图,在不超出本申请的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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