CN115242499B - 网络请求方法、网络请求装置、电子设备、存储介质 - Google Patents
网络请求方法、网络请求装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN115242499B CN115242499B CN202210860772.7A CN202210860772A CN115242499B CN 115242499 B CN115242499 B CN 115242499B CN 202210860772 A CN202210860772 A CN 202210860772A CN 115242499 B CN115242499 B CN 115242499B
- Authority
- CN
- China
- Prior art keywords
- token
- network request
- target
- initial
- request
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000001360 synchronised effect Effects 0.000 claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 68
- 239000002699 waste material Substances 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 14
- 238000012795 verification Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供一种网络请求方法、网络请求装置、电子设备、存储介质,属于互联网技术领域,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,避免了在高并发网络请求的情况下,多个请求同时更新失效token产生的程序错误和资源浪费。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种网络请求方法、网络请求装置、电子设备、存储介质。
背景技术
相关技术中,在高并发网络请求的环境下,多个请求会因为token失效而去同时更新token,造成只有最后一次得到的token有效,容易产生程序错误,而且多个请求同时更新token也容易产生网络资源浪费。
发明内容
本申请实施例的主要目的在于提出一种网络请求方法、网络请求装置、电子设备、存储介质,在高并发网络请求的情况下,在token失效后能够以同步的方式获取目标令牌,减少了多个请求同时更新失效token产生的程序错误和资源浪费。
为实现上述目的,本申请实施例的第一方面提出了一种网络请求方法,应用于客户端,所述方法包括:
客户端获取当前在本地存储的初始令牌;
根据所述初始令牌生成初始网络请求,将所述初始网络请求发送至服务器端,以使所述服务器端响应所述初始网络请求,向所述客户端返回当前令牌;
当所述初始令牌和所述当前令牌相同,或者所述当前令牌的期限大于期限阈值,调用预设的目标函数,基于所述目标函数以同步的方式从所述服务器端获取目标令牌;
根据所述目标令牌生成目标网络请求,将所述目标网络请求发送至所述服务器端。
在一些实施例,在所述根据所述初始令牌生成初始网络请求,将所述初始网络请求发送至服务器端,以使所述服务器端响应所述初始网络请求,向所述客户端返回当前令牌之后,所述网络请求方法还包括:
若所述初始令牌和所述当前令牌不相同,且所述当前令牌的期限小于或者等于期限阈值,则将所述当前令牌作为目标令牌。
在一些实施例,所述基于所述目标函数以同步的方式从所述服务器端获取目标令牌,包括:
基于所述目标函数以同步的方式向所述服务器端发送更新令牌请求,以使所述服务器端响应所述更新令牌请求,根据预设的令牌生成规则生成目标令牌。
在一些实施例,所述根据预设的令牌生成规则生成目标令牌,包括:
获取目标对象的身份标识和密码;
根据所述身份标识和所述密码生成所述目标令牌。
在一些实施例,所述根据预设的令牌生成规则生成目标令牌,包括:
获取目标对象的编码;
根据所述编码生成所述目标令牌。
在一些实施例,所述基于所述目标函数以同步的方式向所述服务器端发送更新令牌请求,包括:
对所述目标函数添加同步锁;
基于所述目标函数向所述服务器发送目标请求,所述目标请求为抢占到所述同步锁的所述更新令牌请求;
在所述根据预设的令牌生成规则生成目标令牌之后,所述网络请求方法还包括:
根据所述目标请求通知其他所述更新令牌请求获取对应的目标令牌,并释放所述目标请求抢占的所述同步锁。
在一些实施例,在所述根据所述目标令牌生成目标网络请求,将所述目标网络请求发送至所述服务器端之后,所述网络请求方法还包括:
接收所述服务器端根据所述目标网络请求返回的令牌信息;
若所述令牌信息为所述目标令牌非法,则获取所述目标网络请求的请求次数;
若所述请求次数小于预设的次数阈值,则重新获取目标令牌。
本申请实施例的第二方面提出了一种网络请求装置,应用于客户端,所述装置包括:
初始令牌获取模块,用于客户端获取当前在本地存储的初始令牌;
当前令牌获取模块,用于根据所述初始令牌生成初始网络请求,将所述初始网络请求发送至服务器端,以使所述服务器端响应所述初始网络请求,向所述客户端返回当前令牌;
目标令牌获取模块,用于当所述初始令牌和所述当前令牌相同,或者所述当前令牌的期限大于期限阈值,调用预设的目标函数,基于所述目标函数以同步的方式从所述服务器端获取目标令牌;
网络请求生成模块,用于根据所述目标令牌生成目标网络请求,将所述目标网络请求发送至所述服务器端。
本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,其中,所述存储器中存储有程序,所述程序被所述处理器执行时所述处理器用于执行如本申请第一方面实施例任一项所述的网络请求方法。
本申请实施例的第四方面提出了一种存储介质,该存储介质为计算机可读存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如本申请第一方面实施例任一项所述的网络请求方法。
本申请实施例提出的网络请求方法、网络请求装置、电子设备、存储介质,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,本申请实施例通过新旧token对比、token期限判断确定token的状态,当初始令牌和当前令牌相同或者当前令牌的期限大于期限阈值说明当前令牌的状态为失效,基于目标函数以同步的方式从服务器端获取目标令牌,避免了在高并发网络请求的情况下,多个请求同时更新失效token产生的程序错误和资源浪费。
附图说明
图1是本申请实施例提供的网络请求方法的流程图;
图2是图1中的步骤S130的第一流程图;
图3是图1中的步骤S130的第二流程图;
图4是图1中的步骤S130的第三流程图;
图5是图1中的步骤S140的流程图;
图6是本申请实施例提供的网络请求装置的模块结构框图;
图7是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
首先,对本申请中涉及的若干名词进行解析:
令牌(token):是服务器端生成的字符串,作为客户端向服务器端进行网络请求的一个令牌,用于表示客户端的身份。
同步请求:发送请求后,浏览器需要等待服务器端的响应返回,才能发送下一个请求。当浏览器向服务器端发送同步请求,服务器端处理同步请求的过程中,浏览器一直处于等待状态,服务器端处理完请求把数据响应给浏览器并覆盖浏览器内存中原有的数据,浏览器重新加载页面并展示服务器响应的数据。
异步请求:发送请求后,浏览器不需要等待服务器端的响应返回,随时可以发送下一次请求,浏览器将请求交给其内置的代理对象,由代理对象向服务器端发起请求,接收、响应服务器端响应的数据,并把数据更新到浏览器指定的控件上。
网络请求中,token代表发起请求方的身份。在客户端与服务器端进行事务处理时,服务器端要求客户端带上token来表明客户端的身份。为了保证通信的安全性,客户端持有的token会在一段时间后失效,需要获取新的token才能进行下一次网络请求。在高并发网络请求的环境下,多个请求会因为token失效而去同时更新token,造成只有最后一次得到的token有效,容易产生程序错误,而且多个请求同时更新token也容易产生网络资源浪费。
为了保证token缓存的一致性,会在获取token的时候加锁,并且为了避免多个异步请求同时刷新失效token,会在刷新token的方法上添加同步锁,且为了避免短时间内token刷新覆盖上一次,需要添加定时机制,在计时阶段内不允许再次请求token刷新,这下加锁机制和计时机制使得token的使用过程复杂,不利于token后续的维护和扩展。
基于此,本申请实施例提出一种网络请求方法、网络请求装置、电子设备、存储介质,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,本申请实施例通过新旧token对比、token期限判断确定当前token的状态,当初始令牌和当前令牌相同或者当前令牌的期限大于期限阈值说明当前令牌的状态为失效,基于目标函数以同步请求的方式从服务器端获取目标令牌,避免了多个请求同时更新失效token产生的程序错误和资源浪费,也避免了通过加锁机制和计时机制来获取有效token,便于token的管理和维护。
本申请实施例提供的网络请求方法、网络请求装置、电子设备、存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的网络请求方法。
本申请实施例提供的网络请求方法,涉及互联网技术领域。本申请实施例提供的网络请求方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机或者智能手表等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现网络请求方法的应用等,但并不局限于以上形式。
本申请实施例可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
参照图1,根据本申请实施例第一方面实施例的网络请求方法,包括但不限于包括步骤S110至步骤S140。
步骤S110,客户端获取当前在本地存储的初始令牌;
步骤S120,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求,向客户端返回当前令牌;
步骤S130,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌;
步骤S140,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端。
在一些实施例的步骤S110中,若客户端第一次向服务器端发送网络请求,则初始令牌为空值,即oldtoken为null。若客户端并非第一次向服务器端发送网络请求,则初始令牌为客户端当前持有的token。
在一些实施例的步骤S120中,初始令牌作为客户端向服务器端发起初始网络请求的标识,在客户端与服务器端进行通信时,客户端需要带着初始令牌以同步的方式向服务器端发送初始网络请求,服务器端接收到初始网络请求后,对初始令牌进行验证,验证通过后,在服务器端生成当前令牌,并向客户端返回当前令牌,其中当前令牌表示为localtoken。可以理解的是,当初始令牌为空时,服务端会根据用户的账号、密码对客户端用户的身份进行验证,验证通过后,在服务器端生成当前令牌,并返回给客户端。
在一些实施例的步骤S130中,客户端接收到服务器端返回的当前令牌后,将当前令牌缓存至本地。客户端获取在本地存储的当前令牌,对初始令牌和当前令牌进行新旧对比,若初始令牌和当前令牌相同,或者,当前令牌的期限大于期限阈值,说明当前令牌非法,即当前令牌失效。当前令牌失效,则清空本地缓存,调用目标函数,基于目标函数以同步的方式向服务器端发送更新令牌请求,以使服务器端响应更新令牌请求,根据预设的令牌生成规则生成目标令牌,其中目标函数为更新令牌函数。目标令牌表示为resulttoken。
在一些实施例中,若初始令牌和当前令牌不相同,且当前令牌的期限小于或者等于期限阈值,说明当前令牌有效,则将当前令牌作为目标令牌,使客户端能够很快获取到有效的token,并携带该有效的token继续向服务器端发起网络请求,服务器端对token进行验证,验证通过后,向客户端返回响应的数据。
在一些实施例中,客户端通过某一接口向服务器端发送初始网络请求,服务器端对初始网络请求进行响应,返回一个包含token的json串,例如{"token":"xxxxx","validity":30},其中"xxxxx"为token,30为token的有效时长,时长的单位可以是小时、分钟、秒、毫秒等。在服务器端返回json串时,客户端将此时的系统时间temptime、token有效时长validity和token一起存储至本地。当客户端从本地取出该token时,判断该token是否为空值,若为空值,则该token非法;若为非空值,则该token有效,记录取出该token的时间curtime,若temptime+validity≤curtime且该token与oldtoken不相等,则该token有效。可以理解的是,该token为localtoken,temptime与validity的和值为当前令牌的期限,期限阈值为curtime。
需要说明的是,以同步的方式获取目标令牌,在高并发的多个更新令牌请求下,当出现token失效后,不会出现多个更新令牌请求同时执行更新失效的token,只会有一个更新令牌请求获取目标令牌,若该请求执行失败,则下一个更新令牌请求调用目标函数,基于目标函数从服务器端重新获取目标令牌,只要有一个目标令牌有效,后续客户端均能携带该目标令牌发起网络请求。避免了异步请求下多个请求同时更新失效token,造成只有最后一次更新的token有效,减少了获取token中的程序崩溃以及资源浪费,同时也避免了异步请求下复杂的多重加锁机制和计时机制以及异步请求下导致的流程的不连贯性,便于token的管理和维护。
在一些实施例的步骤S140中,判断目标令牌是否为空值,若目标令牌为非空值,说明目标令牌有效,则客户端带上目标令牌向服务器端发送目标网络请求。若目标令牌为空值,说明目标令牌非法,则将目标令牌对应的更新令牌请求添加进重试队列或者直接报错,基于特定的事件触发再重新发送更新令牌请求。具体地,特定的事件可以是客户端用户登录成功,也可以是客户端用户在页面的点击操作例如点赞操作等。
本申请实施例的网络请求方法,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,本申请实施例通过新旧token对比、token期限判断确定当前token的状态,当初始令牌和当前令牌相同或者当前令牌的期限大于期限阈值说明当前令牌的状态为失效,基于目标函数以同步请求的方式从服务器端获取目标令牌,避免了多个请求同时更新失效token产生的程序错误和资源浪费,也避免了通过复杂的加锁机制和计时机制来获取有效token,便于token的管理和维护。
在一些实施例中,如图2所示,步骤S130具体包括但不限于步骤S210至步骤S220。
步骤S210,获取目标对象的身份标识和密码;
步骤S220,根据身份标识和密码生成目标令牌。
在一些实施例的步骤S210中,服务器端接收到客户端发送的更新令牌请求,获取客户端用户的身份标识和密码,其中身份标识可以为用户注册的账号、用户名、用户id等。
在一些实施例的步骤S220中,服务器端对客户端用户的身份标识和密码进行验证,验证成功后,服务端会签发一个token,将该token发送给客户端,将该token作为目标令牌。
在一些实施例的步骤S210至S220中,客户端用户向服务器端发送令牌更新请求以获取目标令牌,服务器端接收到更新令牌请求后,获取用户的身份标识和密码,查询数据库对用户的身份标识和密码进行验证,验证成功后,根据用户的身份标识和密码生成目标令牌,并将目标令牌返回至客户端。
在一些实施例中,如图3所示,步骤S130具体包括但不限于步骤S310至步骤S320。
步骤S310,获取目标对象的编码;
步骤S320,根据编码生成目标令牌。
在一些实施例的步骤S310中,在免密登录的情况下,服务器端接收到客户端发送的更新令牌请求后,获取目标对象的编码,其中编码为客户端的公钥。
在一些实施例的步骤S320中,服务器端对客户端用户的公钥进行验证,验证成功后,服务器端会签发一个token,将该token作为目标令牌发送给客户端。
在一些实施例的步骤S310至S320中,客户端为了方便与服务器端进行通信,会设置免密登录,当免密登录时,客户端用户向服务器端发送令牌更新请求以获取目标令牌,服务器端响应令牌更新请求,获取用户的公钥,若与服务器端公钥数据库中的公钥一致时,则验证通过,服务器端签发token,得到目标令牌。
在一些实施例中,如图4所示,步骤S130具体包括但不限于步骤S410至步骤S430。
步骤S410,对目标函数添加同步锁;
步骤S420,基于目标函数向服务器端发送目标请求,以使服务器端根据目标请求返回目标令牌;
步骤S430,根据目标请求通知其他更新令牌请求获取对应的目标令牌,并释放目标请求抢占的同步锁。
在一些实施例的步骤S410中,采用synchronized关键字对目标函数添加同步锁,在高并发的多个请求下,使得只有一个请求可以执行该目标函数,避免多个请求同时调用目标函数来获取目标令牌。
在一些实施例的步骤S420中,目标函数为更新令牌函数,根据更新令牌函数向服务器端发送目标请求,其中目标请求为抢占到同步锁的更新令牌请求。
在一些实施例的步骤S430中,当获取到目标令牌后,调用notifyAll函数通知其他更新令牌请求获取对应的目标令牌,并调用wait函数释放目标请求抢占的同步锁,以使其他更新令牌请求能够去抢占同步锁以获取目标令牌。
在一些实施例的步骤S410至步骤S430中,为了从服务器端获取到目标令牌,根据synchronized关键字对目标函数添加同步锁,抢占到目标函数同步锁的令牌更新线程会向服务器端发送目标请求,服务器端响应目标请求,向客户端返回目标令牌,当得到目标令牌后,该抢占到同步锁的令牌更新线程会调用nitifyAll函数通知其他令牌更新线程向服务器发送目标请求,并调用wait函数释放持有的同步锁。
在一些实施例中,如图5所示,步骤S140之后,网络请求方法具体包括但不限于步骤S510至步骤S530。
步骤S510,接收服务器端根据目标网络请求返回的令牌信息;
步骤S520,若令牌信息为目标令牌非法,则获取目标网络请求的请求次数;
步骤S530,若请求次数小于预设的次数阈值,则重新获取目标令牌。
在一些实施例的步骤S510中,客户端获取到目标令牌后,带上目标令牌向服务器端发送目标网络请求,服务器端对目标网络请求中携带的token进行验证,若验证不通过,则返回目标令牌的令牌信息为目标令牌非法。若验证通过,说明目标令牌为有效的token,则服务器端会向客户端返回对应于目标网络请求的响应数据。
在一些实施例的步骤S520中,若令牌信息为目标令牌非法,则获取目标网络请求的请求次数,即该目标网络请求被放入重试队列中的次数。
在一些实施例的步骤S530中,若请求次数小于预设的次数阈值,则以同步的方式重新获取目标令牌;若请求次数大于或者等于预设的次数阈值,则客户端显示报错信息。
在一些实施例的步骤S510至步骤S530中,客户端获取到非空的目标令牌后,带上目标令牌向服务器端发送目标网络请求,服务器端对目标令牌进行验证,若验证不成功,则向客户端返回目标令牌非法的信息,客户端接收到目标令牌非法的信息后,获取目标网络请求的请求次数,若请求次数小于次数阈值,则重组请求参数以从服务器端重新获取目标令牌。若请求次数大于或者等于次数阈值,则显示报错信息。
本申请另一实施例提出一种网络请求方法,客户端获取当前在本地存储的初始令牌oldtoken,带上oldtoken向服务器端发送初始网络请求,服务器端响应初始网络请求,向客户端返回当前令牌localtoken以及localtoken的有效时长validity,客户端将localtoken、localtoken返回的时间temptime和有效时长validity缓存在本地。从本地获取localtoken,并记录从获取localtoken的时间curtime,若localtoken为非空值,且temptime+validity≤curtime,且localtoken与oldtoken不相等,则将localtoken作为目标令牌resulttoken,否则清空本地缓存,调用目标函数以同步的方式从服务器端获取更新令牌newtoken,若newtoken为空值,则resulttoken也为空值。若newtoken为非空值,根据newtoken更新localtoken,将更新后的localtoken作为resulttoken。得到resulttoken后,判断resulttoken是否为空值,若resulttoken为空值,则将获取resulttoken的请求加入重试队列或者报错。若resulttoken为非空值,则根据resulttoken生成目标网络请求,向服务器端发送目标网络请求,服务器端验证目标访问请求中的resulttoken,若验证不通过,则向客户端返回resulttoken非法,客户端接收到resulttoken非法的消息后,获取目标访问请求的重试次数,若重试次数小于次数阈值,则重组请求参数重新获取resulttoken。若重试次数大于或者等于次数阈值,则客户端直接报错。若验证通过,则服务器端向客户端发送响应数据。
需要说明的是,token是一个加密后的字符串,当客户端带着token向服务器端发送网络请求时,服务器端通过验证token的加密方式、用户id、token生成时间等是否合法,若验证结果为token非法,则服务器端向客户端返回token非法的信息。可以理解的是,不正确的加密方式会导致解密失败。
需要进一步说明的是,由于目标函数采用synchronized修饰,使得获取令牌的操作对于调用方而言是同步进行的,调用方无需进行额外的同步操作。在localtoken有效的情况下,客户端能够很快获取到有效合法的token继续进行网络请求。当多个请求同时出现token非法后,只会有一个请求执行目标函数,除非该请求执行失败,则下一个请求继续执行目标函数,只要有一个newtoken为非空值,利用该newtoken更新localtoken,使得客户端能够根据localtoken正常发起网络请求。
通过新旧token的对比机制、token有效期本地判断机制以及异步token更新请求转为同步token更新请求的机制,实现客户端线性化管理token,相对异步化的token管理逻辑,能够方便对token的管理和维护,避免了同时更新token可能产生的bug以及资源浪费。同时,该机制让调用方在高并发网络请求的情况下能以同步的方式获取token,获取token的方式简单便捷,无需关注token的管理细节,避免复杂的同步机制(加锁、释放锁等),减少网络请求过程出bug的机率。
本申请实施例还提供一种网络请求装置,如图6所示,可以实现上述网络请求方法,该装置包括初始令牌获取模块610、当前令牌获取模块620、目标令牌获取模块630和网络请求生成模块640。其中初始令牌获取模块610用于客户端获取当前在本地存储的初始令牌;当前令牌获取模块620用于根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求,向客户端返回当前令牌;目标令牌获取模块630用于当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌;网络请求生成模块640用于根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端。
本申请实施例的网络请求装置用于执行上述实施例中的网络请求方法,其具体处理过程与上述实施例中的网络请求方法相同,此处不再一一赘述。
本申请实施例的网络请求装置,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,本申请实施例通过新旧token对比、token期限判断确定当前token的状态,当初始令牌和当前令牌相同或者当前令牌的期限大于期限阈值说明当前令牌的状态为失效,基于目标函数以同步请求的方式从服务器端获取目标令牌,避免了多个请求同时更新失效token产生的程序错误和资源浪费,也避免了通过复杂的加锁机制和计时机制来获取有效token,便于token的管理和维护。
本申请实施例还提供了一种电子设备,包括:
至少一个处理器,以及,
与至少一个处理器通信连接的存储器;其中,
存储器存储有指令,指令被至少一个处理器执行,以使至少一个处理器执行指令时实现如本申请第一方面实施例中任一项的网络请求方法。
本申请实施例提出的电子设备,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,本申请实施例通过新旧token对比、token期限判断确定当前token的状态,当初始令牌和当前令牌相同或者当前令牌的期限大于期限阈值说明当前令牌的状态为失效,基于目标函数以同步请求的方式从服务器端获取目标令牌,避免了多个请求同时更新失效token产生的程序错误和资源浪费,也避免了通过复杂的加锁机制和计时机制来获取有效token,便于token的管理和维护。
下面结合图7对电子设备的硬件结构进行详细说明。该电子设备包括:处理器710、存储器720、输入/输出接口730、通信接口740和总线750。
处理器710,可以采用通用的CPU(Central Processin Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器720,可以采用ROM(Read Only Memory,只读存储器)、静态存储设备、动态存储设备或者RAM(Random Access Memory,随机存取存储器)等形式实现。存储器720可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器720中,并由处理器710来调用执行本申请实施例的网络请求方法;
输入/输出接口730,用于实现信息输入及输出;
通信接口740,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;和
总线750,在设备的各个组件(例如处理器710、存储器720、输入/输出接口730和通信接口740)之间传输信息;
其中处理器710、存储器720、输入/输出接口730和通信接口740通过总线750实现彼此之间在设备内部的通信连接。
本申请实施例还提供一种存储介质,该存储介质是计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使计算机执行本申请实施例的网络请求方法。
本申请实施例提供的存储介质,通过客户端获取当前在本地存储的初始令牌,根据初始令牌生成初始网络请求,将初始网络请求发送至服务器端,以使服务器端响应初始网络请求向客户端返回当前令牌,当初始令牌和当前令牌相同,或者当前令牌的期限大于期限阈值,调用预设的目标函数,基于目标函数以同步的方式从服务器端获取目标令牌,根据目标令牌生成目标网络请求,将目标网络请求发送至服务器端,本申请实施例通过新旧token对比、token期限判断确定当前token的状态,当初始令牌和当前令牌相同或者当前令牌的期限大于期限阈值说明当前令牌的状态为失效,基于目标函数以同步请求的方式从服务器端获取目标令牌,避免了多个请求同时更新失效token产生的程序错误和资源浪费,也避免了通过复杂的加锁机制和计时机制来获取有效token,便于token的管理和维护。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1至图5中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (9)
1.网络请求方法,其特征在于,应用于客户端,所述方法包括:
客户端获取当前在本地存储的初始令牌;
根据所述初始令牌生成初始网络请求,将所述初始网络请求发送至服务器端,以使所述服务器端响应所述初始网络请求,向所述客户端返回当前令牌;若所述初始网络请求为所述客户端第一次向所述服务器端发送的网络请求,初始令牌为空值;若所述初始网络请求为并非客户端第一次向所述服务器端发送的网络请求,则初始令牌为客户端本地当前存储的令牌;
当所述初始令牌和所述当前令牌相同,或者所述当前令牌的期限大于期限阈值,调用预设的目标函数,基于所述目标函数以同步的方式向所述服务器端发送更新令牌请求,以使所述服务器端响应所述更新令牌请求,根据预设的令牌生成规则生成目标令牌,从所述服务器端获取所述目标令牌;所述目标函数为更新令牌函数;
根据所述目标令牌生成目标网络请求,将所述目标网络请求发送至所述服务器端。
2.根据权利要求1所述的网络请求方法,其特征在于,在所述根据所述初始令牌生成初始网络请求,将所述初始网络请求发送至服务器端,以使所述服务器端响应所述初始网络请求,向所述客户端返回当前令牌之后,所述网络请求方法还包括:
若所述初始令牌和所述当前令牌不相同,且所述当前令牌的期限小于或者等于期限阈值,则将所述当前令牌作为目标令牌。
3.根据权利要求1所述的网络请求方法,其特征在于,所述根据预设的令牌生成规则生成目标令牌,包括:
获取目标对象的身份标识和密码;
根据所述身份标识和所述密码生成所述目标令牌。
4.根据权利要求1所述的网络请求方法,其特征在于,所述根据预设的令牌生成规则生成目标令牌,包括:
获取目标对象的编码;
根据所述编码生成所述目标令牌。
5.根据权利要求1所述的网络请求方法,其特征在于,所述基于所述目标函数以同步的方式向所述服务器端发送更新令牌请求,包括:
对所述目标函数添加同步锁;
基于所述目标函数向所述服务器端发送目标请求,所述目标请求为抢占到所述同步锁的所述更新令牌请求;
在所述根据预设的令牌生成规则生成目标令牌之后,所述网络请求方法还包括:
根据所述目标请求通知其他所述更新令牌请求获取对应的目标令牌,并释放所述目标请求抢占的所述同步锁。
6.根据权利要求1至5任一项所述的网络请求方法,其特征在于,在所述根据所述目标令牌生成目标网络请求,将所述目标网络请求发送至所述服务器端之后,所述网络请求方法还包括:
接收所述服务器端根据所述目标网络请求返回的令牌信息;
若所述令牌信息为所述目标令牌非法,则获取所述目标网络请求的请求次数;
若所述请求次数小于预设的次数阈值,则重新获取目标令牌。
7.网络请求装置,其特征在于,应用于客户端,所述装置包括:
初始令牌获取模块,用于客户端获取当前在本地存储的初始令牌;
当前令牌获取模块,用于根据所述初始令牌生成初始网络请求,将所述初始网络请求发送至服务器端,以使所述服务器端响应所述初始网络请求,向所述客户端返回当前令牌;若所述初始网络请求为所述客户端第一次向所述服务器端发送的网络请求,初始令牌为空值;若所述初始网络请求为并非客户端第一次向所述服务器端发送的网络请求,则初始令牌为客户端本地当前存储的令牌;
目标令牌获取模块,用于当所述初始令牌和所述当前令牌相同,或者所述当前令牌的期限大于期限阈值,调用预设的目标函数,基于所述目标函数以同步的方式向所述服务器端发送更新令牌请求,以使所述服务器端响应所述更新令牌请求,根据预设的令牌生成规则生成目标令牌,从所述服务器端获取所述目标令牌;所述目标函数为更新令牌函数;
网络请求生成模块,用于根据所述目标令牌生成目标网络请求,将所述目标网络请求发送至所述服务器端。
8.电子设备,其特征在于,包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
所述程序被存储在所述存储器中,处理器执行所述至少一个程序以实现:
如权利要求1至6任一项所述的网络请求方法。
9.存储介质,所述存储介质为计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行:
如权利要求1至6任一项所述的网络请求方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210860772.7A CN115242499B (zh) | 2022-07-21 | 2022-07-21 | 网络请求方法、网络请求装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210860772.7A CN115242499B (zh) | 2022-07-21 | 2022-07-21 | 网络请求方法、网络请求装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115242499A CN115242499A (zh) | 2022-10-25 |
CN115242499B true CN115242499B (zh) | 2024-03-01 |
Family
ID=83676178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210860772.7A Active CN115242499B (zh) | 2022-07-21 | 2022-07-21 | 网络请求方法、网络请求装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115242499B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462581A (zh) * | 2018-01-08 | 2018-08-28 | 平安科技(深圳)有限公司 | 网络令牌生成的方法、装置、终端设备及存储介质 |
CN109660343A (zh) * | 2019-01-17 | 2019-04-19 | 平安科技(深圳)有限公司 | 令牌更新方法、装置、计算机设备及存储介质 |
WO2021143025A1 (zh) * | 2020-01-15 | 2021-07-22 | 平安科技(深圳)有限公司 | 物联网数据传输方法、装置、介质及电子设备 |
-
2022
- 2022-07-21 CN CN202210860772.7A patent/CN115242499B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462581A (zh) * | 2018-01-08 | 2018-08-28 | 平安科技(深圳)有限公司 | 网络令牌生成的方法、装置、终端设备及存储介质 |
CN109660343A (zh) * | 2019-01-17 | 2019-04-19 | 平安科技(深圳)有限公司 | 令牌更新方法、装置、计算机设备及存储介质 |
WO2021143025A1 (zh) * | 2020-01-15 | 2021-07-22 | 平安科技(深圳)有限公司 | 物联网数据传输方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115242499A (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558748B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US11632441B2 (en) | Methods, systems, and devices for electronic note identifier allocation and electronic note generation | |
CN108228814B (zh) | 数据同步方法及装置 | |
CN108090058B (zh) | 一种高并发活动交互方法 | |
CN110690974B (zh) | 基于区块链的数据验证方法、装置、设备及可读存储介质 | |
US12105735B2 (en) | Asynchronous accounting method and apparatus for blockchain, medium and electronic device | |
CN114401098A (zh) | 一种快速构建微服务的应用系统及方法 | |
CN107578327B (zh) | 一种竞价环节中信息推送的方法、设备以及系统 | |
CN114416883A (zh) | 区块链轻节点数据同步方法、装置、设备及可读存储介质 | |
CN112417052B (zh) | 区块链网络中的数据同步方法、装置、设备及存储介质 | |
CN113852631A (zh) | 一种确定访问令牌的方法及装置 | |
CN115242499B (zh) | 网络请求方法、网络请求装置、电子设备、存储介质 | |
CN116501997B (zh) | 短链接生成方法、装置、电子设备及存储介质 | |
CN111159179A (zh) | 表分区方法及相关设备、计算机可读存储介质 | |
CN115982279A (zh) | 数据同步方法、装置、系统和计算机设备 | |
CN112926981B (zh) | 用于区块链的交易信息处理方法、装置、介质及电子设备 | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN116070191A (zh) | 信息处理方法及其装置、存储介质、程序产品 | |
US11599406B2 (en) | Common platform for fulfilling different actions | |
US11226983B2 (en) | Sub-scope synchronization | |
CN103701844A (zh) | 管理用户信息的方法及系统 | |
CN115222392A (zh) | 基于区块链的业务访问方法、装置、介质及电子设备 | |
JP2021149506A (ja) | 情報処理装置、情報処理方法およびプログラム | |
CN106375354B (zh) | 数据处理方法及装置 | |
CN117453654A (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 |