一种数据请求方法和装置的制造方法

文档序号:10626973阅读:217来源:国知局
一种数据请求方法和装置的制造方法
【专利摘要】本发明提供一种数据请求方法和装置,其中方法包括:生成请求标识、以及分别与所述请求标识对应的请求端和代理端;通过所述代理端向服务器请求所述请求端所需要的目标数据;所述请求标识对应的代理端获取所述服务器返回的目标数据,并由所述请求标识对应的请求端使用所述目标数据执行目标业务。本发明实现高准确度的数据接收。
【专利说明】
一种数据请求方法和装置
技术领域
[0001]本发明涉及网络技术,特别涉及一种数据请求方法和装置。
【背景技术】
[0002]web数据请求是由客户端向服务器请求显示web页面所需要的数据,相关技术中可以采用JSONP方式向服务器请求数据。对于同一 web页面中的多个数据请求,JSONP可以定义分别对应该多个请求的多个回调函数名,并将函数名传递至服务器,由服务器使用该回调函数名返回请求的数据,以使得客户端根据函数名就可以容易区分对应不同请求的响应数据。但是这种方式对于服务器来说,需要根据不同函数名动态生成不同的返回内容,服务器处理压力较大。而如果设置服务器以统一的形式返回数据,对于客户端来说,如何准确识别不同请求对应的响应数据,是亟需解决的问题。

【发明内容】

[0003]有鉴于此,本发明提供一种数据请求方法和装置,以在减轻服务器压力的基础上提高客户端数据接收的准确性。
[0004]具体地,本发明是通过如下技术方案实现的:
[0005]第一方面,提供一种数据请求方法,包括:
[0006]生成请求标识、以及分别与所述请求标识对应的请求端和代理端;
[0007]通过所述代理端向服务器请求所述请求端所需要的目标数据;
[0008]所述请求标识对应的代理端获取所述服务器返回的目标数据,并由所述请求标识对应的请求端使用所述目标数据执行目标业务。
[0009]第二方面,提供一种数据请求装置,包括:
[0010]标识生成模块,用于生成请求标识;
[0011]功能创建模块,用于创建分别与所述请求标识对应的请求端和代理端;
[0012]所述代理端,用于向服务器请求所述请求端所需要的目标数据,并获取所述服务器返回的目标数据;
[0013]所述请求端,用于由所述请求标识对应的请求端使用所述目标数据执行目标业务。
[0014]本发明实施例的数据请求方法和装置,通过依据与事件的请求端和代理端对应的请求标识,使得请求标识相同的请求端接收代理端反馈的目标数据,这种方式能够准确的确定服务器返回的数据是哪个事件请求的,客户端能够实现高准确度的数据接收。
【附图说明】
[0015]图1是一个例子中数据请求方法的应用场景图;
[0016]图2是一个例子中数据请求方法的流程图;
[0017]图3是一个例子中数据请求方法的框架原理图;
[0018]图4是一个例子中数据请求方法的多事件请求原理图;
[0019]图5是一个例子中数据请求装置的结构示意图。
【具体实施方式】
[0020]本申请实施例的数据请求方法,可以应用于WEB请求,例如图1所示的场景,WEB客户端11向WEB服务器12请求数据。其中,WEB客户端11可以是在终端(例如,PC、移动终端等)浏览器上运行的某个网页,浏览器在解析执行该网页代码时,需要向WEB服务器12请求正常运行网页所需要的一些数据,此时就可以使用本申请的数据请求方法,来获取这些数据。
[0021]图2示例了客户端执行的数据请求方法的流程,如图2所示,可以包括:
[0022]201、生成请求标识、以及分别与所述请求标识对应的请求端和代理端;
[0023]202、通过所述代理端向服务器请求所述请求端所需要的目标数据;
[0024]203、请求标识对应的代理端获取所述服务器返回的目标数据,并由所述请求标识对应的请求端使用所述目标数据执行目标业务。
[0025]为了使得该方法流程更容易理解,首先参考图3的示例,图3示意了本申请实施例的数据请求方法的总体框架。一个WEB页面在正常运行时,其中可能会有多个显示部分需要向服务器请求数据才能实现正常显示页面,可以用“事件A”表示其中一次向服务器请求数据,该事件A在获取到从服务器请求的数据后,将使用该数据执行事件A规定的数据处理流程,以显示该部分对应的页面;可以用“事件B”表示另一次向服务器请求数据,同样会使用数据执行事件B规定的处理流程。当然,还可以存在事件C、事件D等,同一个WEB页面可以包括多次向服务器请求数据的事件,本实施例用不同的“事件”分别表示WEB页面中不同的数据请求,在图3中只是示例性的显示两种事件为例。并且,事件A和事件B都采用本实施例的数据请求方法向服务器获取数据。
[0026]以其中的事件A为例,简单描述事件A由服务器获取数据并处理数据的过程,在结合图3描述该过程时将涉及到如下几个概念:
[0027]代理端:例如,该代理端可以是一个隐藏的空的IFRAME(框架),隐藏即在页面中看不到该IFRAME,空即该IFRAME本身不会执行任何请求或处理,其仅仅执行网页设计人员定义的IFRAME内部的逻辑。在本实施例中,采用IFRAME作为代理端时,相当于在一个WEB页面中设置了一个嵌套页面即IFRAME,但是该IFRAME是一个独立的运行环境,专用于作为向服务器请求页面数据(相当于WEB页面中请求数据的中间代理,而不是由页面本身去服务器请求数据)。
[0028]本实施例在WEB页面设置“代理端”,主要是考虑在传统方式中通常都是由WEB页面本身向服务器请求数据,对于页面中的多次数据请求对应的多个事件,WEB页面要负责区分服务器返回的响应数据与请求事件的对应关系,比如页面可以创建多个函数(不同的函数名,分别对应不同事件),即需要做页面整体的事件区分,非常繁琐;而采用“代理端”后,如上所述的,各个代理端是一个独立的运行环境,是某个事件专用的代理端,用于请求该对应事件的数据,即使各个代理端都采用相同的函数(比如都是define O),页面全局的代理端之间也不会产生冲突,而本实施例只需要将代理端分别与各次事件绑定即可,例如采用ID来区分,后续实施例将描述。
[0029]请求端:请求端是WEB页面中用于请求数据并使用该数据的模块,例如在图3中所示的“第二函数”可以称为请求端,该函数的说明可以参见下述。
[0030]第一函数:参见图3所示的,第一函数可以是“IFRAME的全局函数”,代理端向服务器请求数据,服务器可以向代理端返回一个可执行脚本,该脚本中包括代理端请求的事件数据,代理端可以通过第一函数执行该脚本获取到服务器返回的数据。并且,该第一函数还可以将获取的数据传递至请求端,例如传输至图3中的第二函数。可以看到,该第一函数是用于获取到服务器返回数据。
[0031]第二函数:该第二函数可以是“WEB页面的全局函数”,其主要用于使用代理端获取到的数据,并且调用事件对应的回调函数,执行回调函数规定的对数据的处理流程,以此实现事件规定的业务处理,显示事件对应的页面。
[0032]回调函数:该回调函数主要用于规定如何使用代理端获取到的数据,即使用数据所做的处理;而上述的第二函数是调用该回调函数,执行该回调函数规定的处理,从而完成对数据的使用。
[0033]通过图3以及上述的概念描述,可以了解事件获取数据的处理过程,即由代理端向服务器请求数据并接收数据,然后由第二函数调用回调函数,并执行回调函数的处理流程,完成该事件对数据的使用。
[0034]在上述图3架构的基础上,对图2的流程进行描述如下:
[0035]图2所示的流程,是WEB页面在每次要请求获取数据的时候,都要执行的流程,仍然结合图3所示,当WEB页面要执行事件A对应的数据请求时,则开始执行图2流程;当WEB页面要执行事件B对应的数据请求时,也开始执行图2流程。在具体实现中,图2的流程实际上相当于是规定了当WEB页面的某个事件要向服务器请求数据时怎样去做的方法,例如可以是设计人员预先编制好的一个方法,可以将该方法称为JS0NL,并将该方法放在供调用的库中;当事件要请求数据时,则调用该方法即可,并将该方法所需要的一些参数传输至该方法中,该方法将根据这些参数执行图2的流程完成数据的获取。
[0036]例如,假设在服务器中存储了数据资源,该数据资源的存储地址URL为:http://WWW.alipay.com/info,该地址存储的资源内容可以为:
[0037]define (
[0038]“name”: “支付宝”
[0039]“createDate”: “2004”
[0040]“descript1n”: “支付宝网络技术有限公司”
[0041 ] “website”: “http://www.alipay.com”
[0042]“phone”: “0571-11110000,,
[0043])
[0044]并且假设WEB页面的某个事件要获取该数据,在网页设计人员在WEB页面中可以设计如下方式访问上述地址的资源:
[0045]JSONL ( “http://www.alipay.com/info”,“define”,funct1n (value)) {value即资源中的内容}
[0046]即设计人员可以通过上述方式,直接调用库中的方法JS0NL,并将参数“http://www.alipay.com/info”、“define”、funct1n (value)传递至该方法,由该方法执行图2所示的数据请求的流程。其中,“http://www.alipay.com/info”是数据存储的地址,“define”是服务器返回的可执行脚本的函数名,并且图3中的第一函数也采用该函数名;而funct1n (value)是回调函数,规定了如何使用数据资源。
[0047]在步骤201中,客户端可以生成请求标识、以及分别于该请求标识对应的请求端和代理端,即请求端将该请求标识作为用于唯一标识该请求端的信息,代理端也将该请求标识作为用于唯一标识该代理端的信息。
[0048]例如,JSONL方法中可以设置一个动态ID生成器,在接收到WEB页面对JSONL方法的调用时,表明要执行一个数据请求事件,则通过动态ID生成器创建一个随机ID,比如不同时间生成不同的随机数作为随机ID,该随机ID即请求标识。
[0049]本步骤中还要创建请求端和代理端,比如创建一个隐藏的空IFRAME,以及一个全局函数,还要建立上述随机生成的请求标识与该请求端和代理端的对应关系。例如,创建请求端第二函数window[函数名]=funct1n (value),该第二函数的函数名就是上述的随机ID ;创建一个IFRAME,〈iframe id =随机IDX/iframe>,即该IFRAME的标识也是请求标识。
[0050]该客户端以图3的WEB页面为例,当页面中包括多个数据请求的事件时,分别为每一个数据请求设置对应的请求标识,例如,事件A对应的请求标识是“ 11 ”,事件B对应的请求标识是“22”。事件A的第二函数为window[ll]。
[0051]如上所述的,JSONL方法在创建第二函数时,window[函数名]=funct1n (value),使用了客户端传输的参数funct1n (value),即第二函数调用回调函数执行对数据的处理。而传输参数“http://www.alipay.com/info”和“define”,是在IFRAME创建时使用,在IFRAME的创建中,将IFRAME的ID设置为上述随机生成的请求标识,并且在IFRAME中动态创建SCRIPT标签,地址指向预先传入的URL,向该URL发起数据请求。
[0052]例如,在IFRAME 中创建〈script src = http://www.alipay.com/infoX/script〉,其中包括了上述URL。此外,iframe中还创建第一函数,函数名是define。
[0053]完成了上述的iframe以及相应函数的建立后,在步骤202中,将执行201中生成的逻辑,代理端向服务器请求目标数据,例如执行脚本〈scriptsrc = http://www.alipay.com/infoX/script), IFRAME 就向服务器发送数据请求,请求 http://www.alipay.com/info地址的目标数据。
[0054]在步骤203中,服务器向代理端IFRAME返回目标数据,返回的形式例如是define (目标数据),这是一个可执行脚本。再由IFRAME的第一函数执行该脚本得到目标数据,并且将目标数据传输至请求端的第二函数。第二函数调用回调函数对该目标数据进行处理,即使用目标数据执行目标业务。
[0055]如上所述的,WEB页面中包括多次请求数据的事件时,每个事件都要调用执行图2的流程,比如调用JSONL方法,将参数传输至该JS0NL,由该方法根据传入的参数执行图2所示的流程。在执行图2流程时,每个事件都会生成不同的请求ID,该请求ID作为请求端和代理端的标识。
[0056]需要说明的是,本实施例中通过“请求标识”将请求端和代理端建立对应关系,可以带来很多效果,比如,参见图4所示,WEB页面的事件A和事件B都向服务器同时请求数据,本实施例不限制请求数据是否相同,但是WEB页面在接收到服务器返回的数据时,需要准确区分返回的数据是事件A的,还是事件B的。如图4所示,在本实施例的方案中,为事件A单独创建了代理端IFRAME,专用于请求事件A需要的目标数据,并且事件A的请求端和该IFRAME的标识都是“11”;为事件B单独创建了代理端IFRAME,专用于请求事件B需要的目标数据,并且事件B的请求端和该IFRAME的标识都是“22”,那么可以通过该请求标识建立了请求端和代理端的绑定关系,IFRAME-22获取到的数据只会传输至请求端一22,而不会传输至请求端一 11,因为标识不相同。
[0057]可见这种方式能够准确的确定服务器返回的数据是哪个事件请求的,客户端能够实现高准确度的数据接收。而对于服务器来说,由于区分返回数据与请求端对应关系的工作已经由客户端自身准确的实现,服务器就可以使用统一的数据返回形式,例如图4示例的,均以defineO的形式即相同的函数名返回,这样相对于传统方式中的服务器侧根据不同请求采用不同的返回函数名(为了方便客户端根据不同函数名区分不同请求的数据)来说,服务器侧节省了资源消耗和开发成本,加快响应速度,并且实现数据资源的静态化存储等诸多好处。
[0058]此外,对于代理端请求的目标数据,可以是同域数据,也可以是跨域数据。在请求标识对应的请求端使用目标数据执行目标业务之后,还可以删除该请求标识对应的代理端。例如,在事件A使用完目标数据后,可以将事件A对应的IFRAME —11删除。即客户端在某个事件请求数据时,为其动态生成请求标识,并创建该请求标识对应的代理端IFRAME请求数据,在获得数据后可以删除该IFRAME,请求标识也可以删除,下次可以再次生成分配给其他数据请求。
[0059]为了实现上述的数据请求方法,本申请实施例还提供了一种数据请求装置,该装置可以应用于客户端。如图5所示,该装置可以包括:标识生成模块51、功能创建模块52 ;其中,标识生成模块51,用于生成请求标识;功能创建模块52,用于创建分别与所述请求标识对应的请求端53和代理端54。
[0060]代理端54,用于向服务器请求所述请求端所需要的目标数据,并获取所述服务器返回的目标数据;请求端53,用于由所述请求标识对应的请求端使用所述目标数据执行目标业务。
[0061]进一步的,标识生成模块51,具体用于通过动态标识生成方式,随机生成所述请求标识O
[0062]进一步的,功能创建模块52,具体用于创建作为请求端的全局函数,所述全局函数的函数名为请求标识,所述全局函数用于使用目标数据执行目标业务;创建作为代理端的框架,所述框架是隐藏的空框架,并且设置所述框架的标识为所述请求标识,所述框架用于通过脚本标签向服务器请求获取目标数据。
[0063]进一步的,该框架,具体用于通过内部全局函数执行所述服务器返回的回调函数,获取所述服务器通过所述回调函数返回的目标数据;并通过所述内部全局函数将所述目标数据传输至作为请求端的全局函数。
[0064]进一步的,请求端53,还用于在使用所述目标数据执行目标业务之后,删除所述请求标识对应的所述代理端。
[0065]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【主权项】
1.一种数据请求方法,其特征在于,包括: 生成请求标识、以及分别与所述请求标识对应的请求端和代理端; 通过所述代理端向服务器请求所述请求端所需要的目标数据; 所述请求标识对应的代理端获取所述服务器返回的目标数据,并由所述请求标识对应的请求端使用所述目标数据执行目标业务。2.根据权利要求1所述的方法,其特征在于,所述生成请求标识,包括:通过动态标识生成方式,随机生成所述请求标识。3.根据权利要求1所述的方法,其特征在于,所述生成分别与所述请求标识对应的请求端和代理端,包括: 创建作为请求端的全局函数,所述全局函数的函数名为所述请求标识,所述全局函数用于使用所述目标数据执行目标业务; 创建作为代理端的框架,所述框架是隐藏的空框架,并且设置所述框架的标识为所述请求标识,所述框架用于通过脚本标签向服务器请求获取目标数据。4.根据权利要求3所述的方法,其特征在于,所述请求标识对应的代理端获取所述服务器返回的目标数据,并由所述请求标识对应的请求端使用所述目标数据执行目标业务,包括: 所述框架通过内部全局函数执行所述服务器返回的回调函数,获取所述服务器通过所述回调函数返回的目标数据; 所述框架通过所述内部全局函数将所述目标数据传输至作为请求端的全局函数,由所述请求端的全局函数使用所述目标数据执行目标业务。5.根据权利要求1所述的方法,其特征在于,在所述请求标识对应的请求端使用所述目标数据执行目标业务之后,还包括: 删除所述请求标识对应的所述代理端。6.一种数据请求装置,其特征在于,包括: 标识生成模块,用于生成请求标识; 功能创建模块,用于创建分别与所述请求标识对应的请求端和代理端; 所述代理端,用于向服务器请求所述请求端所需要的目标数据,并获取所述服务器返回的目标数据; 所述请求端,用于由所述请求标识对应的请求端使用所述目标数据执行目标业务。7.根据权利要求6所述的装置,其特征在于,所述标识生成模块,具体用于通过动态标识生成方式,随机生成所述请求标识。8.根据权利要求6所述的装置,其特征在于, 所述功能创建模块,具体用于创建作为请求端的全局函数,所述全局函数的函数名为所述请求标识,所述全局函数用于使用所述目标数据执行目标业务;创建作为代理端的框架,所述框架是隐藏的空框架,并且设置所述框架的标识为所述请求标识,所述框架用于通过脚本标签向服务器请求获取目标数据。9.根据权利要求8所述的装置,其特征在于, 所述框架,具体用于通过内部全局函数执行所述服务器返回的回调函数,获取所述服务器通过所述回调函数返回的目标数据;并通过所述内部全局函数将所述目标数据传输至作为请求端的全局函数。10.根据权利要求6所述的装置,其特征在于, 所述请求端,还用于在使用所述目标数据执行目标业务之后,删除所述请求标识对应的所述代理端。
【文档编号】H04L29/08GK105991739SQ201510091917
【公开日】2016年10月5日
【申请日】2015年2月28日
【发明人】鲁亚然
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1