CN117176565A - 业务请求的处理方法、系统、设备、介质及产品 - Google Patents

业务请求的处理方法、系统、设备、介质及产品 Download PDF

Info

Publication number
CN117176565A
CN117176565A CN202311132246.XA CN202311132246A CN117176565A CN 117176565 A CN117176565 A CN 117176565A CN 202311132246 A CN202311132246 A CN 202311132246A CN 117176565 A CN117176565 A CN 117176565A
Authority
CN
China
Prior art keywords
response data
service request
request
processing
configuration information
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.)
Pending
Application number
CN202311132246.XA
Other languages
English (en)
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.)
Industrial and Commercial Bank of China Ltd ICBC
ICBC Technology Co Ltd
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
ICBC 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 Industrial and Commercial Bank of China Ltd ICBC, ICBC Technology Co Ltd filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202311132246.XA priority Critical patent/CN117176565A/zh
Publication of CN117176565A publication Critical patent/CN117176565A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本公开提供了一种业务请求的处理方法,应用于金融领域或其它领域,包括:根据业务请求信息设置配置信息,配置信息包括静态配置信息或动态配置信息中的一种;向服务器发送业务请求信息,业务请求信息包括网络资源的地址信息和配置信息;接收服务器对于业务请求信息返回的响应数据,响应数据包括响应网络资源的地址信息得到的资源文件;提取响应数据中的返回状态码,返回状态码用于表示响应数据是否正常返回;根据预设规则及返回状态码确定目标响应数据,将目标响应数据发送至业务请求信息发送端。本公开还提供了一种业务请求的处理系统、设备、存储介质和程序产品。

Description

业务请求的处理方法、系统、设备、介质及产品
技术领域
本公开涉及金融领域,具体涉及一种业务请求的处理方法、系统、设备、存储介质及程序产品。
背景技术
当下大多数系统都是通过将数据在浏览器中以页面的形式进行展示,在展示这些数据之前首先需要通过网络请求从服务端获取数据,浏览器所在的客户端和数据所在的服务端一般都位于广域网中的不同位置,这种位置是遍布全球的。要从服务器最终获取数据,中间可能经过很多节点,节点越多失败的可能性就越大。除了中间路径的复杂多变以外,对数据的获取也有多种要求,包括更高的成功率、更快的返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装、配置化返回码,字段映射、防重复点击、请求提示等要求。传统技术中,经常存在向服务端发送请求时,请求得不到响应、难以支持多样化的数据获取需求等问题,导致需要重新配置的请求参数,业务请求的处理效率低。
发明内容
鉴于上述问题,本公开提供了一种业务请求的处理方法、系统、设备、存储介质及程序产品。
根据本公开的第一个方面,提供了一种业务请求的处理方法,包括:根据业务请求信息设置配置信息,配置信息包括静态配置信息或动态配置信息中的一种;向服务器发送业务请求信息,业务请求信息包括网络资源的地址信息和配置信息;接收服务器对于业务请求信息返回的响应数据,响应数据包括响应网络资源的地址信息得到的资源文件;提取响应数据中的返回状态码,返回状态码用于表示响应数据是否正常返回;根据预设规则及返回状态码确定目标响应数据,将目标响应数据发送至业务请求信息发送端。
根据本公开的实施例,配置信息包括业务请求重试次数、重试请求间隔时间、重试状态码、请求状态提示、是否开启防重点击中的一种或多种;静态配置信息为默认配置信息;动态配置信息为参数形式的配置信息。
根据本公开的实施例,提取响应数据中的返回状态码还包括:判断响应数据是否正常返回;响应于响应数据正常返回,提取响应数据中的返回状态码;响应于响应数据异常返回,根据重试状态码判断是否需要进行重试。
根据本公开的实施例,响应于响应数据正常返回还包括:对响应数据进行响应字段映射处理,归一化为标准的数据结构。
根据本公开的实施例,根据重试状态码判断是否需要进行重试包括:判断当前重试次数是否超过业务请求重试次数;响应于当前重试次数未超过业务请求重试次数,进行重试;响应于当前重试次数超过业务请求重试次数,重置本次请求重试数据。
根据本公开的实施例,根据业务请求信息设置配置信息还包括:判断loading配置项是否存在;响应于loading配置项存在,当进行重试时,对对应的计数值进行加一计数。
根据本公开的实施例,提取响应数据中的返回状态码包括:响应于loading配置项存在,当判断响应数据正常返回时,对对应的计数值进行减一计数,并还原配置信息。
根据本公开的实施例,根据预设规则及返回状态码确定目标响应数据中预设规则包括更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装、以第一次\最后一次处理为准中的任意一种;预设规则为参数数组,参数数组中每个元素包括请求地址信息、请求方式和请求参数。
根据本公开的实施例,根据预设规则及返回状态码确定目标响应数据包括:遍历参数数组;获取每一次业务请求信息的响应数据;从响应数据中选取与预设规则及返回状态码相对应的目标响应数据。
本公开的第二方面提供了一种业务请求的处理系统,包括:设置模块,用于根据业务请求信息设置配置信息,配置信息包括静态配置信息或动态配置信息中的一种;发送模块,用于向服务器发送业务请求信息,业务请求信息包括网络资源的地址信息和配置信息;接收模块,用于接收服务器对于业务请求信息返回的响应数据,响应数据包括响应网络资源的地址信息得到的资源文件;提取模块,用于提取响应数据中的返回状态码,返回状态码用于表示响应数据是否正常返回;以及确定模块,用于根据预设规则及返回状态码确定目标响应数据,将目标响应数据发送至业务请求信息发送端。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述业务请求的处理方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述业务请求的处理方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述业务请求的处理方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的业务请求的处理方法、系统、设备、存储介质及程序产品的应用场景图;
图2示意性示出了根据本公开实施例的业务请求的处理方法的流程图;
图3示意性示出了根据本公开实施例的对配置信息进行静态处理、动态处理方法的流程图;
图4示意性示出了根据本公开实施例的提取响应数据中的返回状态码方法的流程图;
图5示意性示出了根据本公开实施例的根据重试状态码判断是否需要进行重试方法的流程图;
图6示意性示出了根据本公开实施例的根据重试状态码判断是否需要进行重试方法的流程图;
图7示意性示出了根据本公开实施例的根据预设规则及返回状态码确定目标响应数据方法的流程图;
图8示意性示出了根据本公开实施例中业务请求处理方法的模型结构示意图;
图9示意性示出了根据本公开实施例业务请求处理方法的完整步骤的流程图;
图10示意性示出了根据本公开实施例的业务请求的处理系统的结构框图;以及
图11示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在本公开的技术方案中,所涉及的用户个人信息的获取、存储和应用等,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
现有对于页面中网络请求的工具很多,但是这些工具只提供了网络请求的功能,侧重于网络是否联通,对于业务侧的规则支持不够。这些工具的主要使用流程如下:配置请求、发送请求、接收响应和业务侧处理响应。现有实现方式虽然是目前处理网络请求的主流方式,但有以下不足:1.不管使用哪种工具进行数据请求,每次业务端调用只能发送一次请求,如果中间链路发生问题,或者服务端出现问题,导致此次访问出现网络抖动则此次访问将返回失败,如果进行第二次请求则可能成功,因为这些工具都是单次访问,所以需要用户进行介入,比如再次点击按钮才能执行第二次调用保证数据的正确返回。另一种情况是由于误操作导致触发了两次及以上网络请求,一般的处理方式是在按钮的点击事件中增加防重发处理,此种方式需要在每个点击按钮增加相同的处理逻辑。2.业务侧对数据的要求可能千变万化,比如要求更高成功率、更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装,对于现有工具来说不具备支撑这些业务侧需求。3.对于错误的处理,现有工具只简单的返回了错误数据,需要业务方处理这些原始的错误数据,这种错误数据对用户难以理解,需要处理以适应业务需求,目前的处理方式是在每个业务的处理逻辑中进行转换,这导致转换的逻辑分散在系统的各个地方,后期难以维护。
基于现有向服务端发送请求时,请求得不到响应、难以支持多样化的数据获取需求,导致需要重新配置的请求参数,业务请求的处理效率低等问题,本公开的实施例提供了一种业务请求的处理方法、系统、设备、存储介质及程序产品,应用于金融领域,也可用于除金融领域之外的任意领域,本公开业务请求的处理方法和系统的应用领域不做限定。
图1示意性示出了根据本公开实施例业务请求的处理方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯用户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱用户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的业务请求的处理方法一般可以由服务器105执行。相应地,本公开实施例所提供的业务请求的处理装置一般可以设置于服务器105中。本公开实施例所提供的业务请求的处理方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的业务请求的处理装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图11对公开实施例业务请求的处理方法进行详细描述。
图2示意性示出了根据本公开实施例业务请求的处理方法的流程图。
如图2所示,应用于业务侧,该实施例的业务请求的处理方法包括操作S210~操作S250。
在操作S210,根据业务请求信息设置配置信息,配置信息包括静态配置信息或动态配置信息中的一种。
本公开提供的业务请求的处理方法,可应用于各种场景下客户端发起的网络请求过程,例如,用户登录发起的网络请求,用户访问页面发起的网络请求等。配置信息是控制请求默认行为的选项,每次请求都会根据配置信息进行请求行为的控制以满足不同业务场景。配置信息是一个key-value的对象,其中key是配置项名称,value是具体配置值,例如配置项如下:
retries:请求重试次数,默认为3次。
retryTime:重试请求间隔时间,默认为300ms。
retryCode:重试状态码,只有返回这些状态码才进行重试,默认为500。
loading:请求状态提示,结构{value:boolean,count:number},默认为null。
repeat:是否开启防重点击,默认为true。
默认情况下通过静态方式进行行为控制,如果业务侧通过参数的形式提供配置信息则采用动态方式进行处理。
在操作S220,向服务器发送业务请求信息,业务请求信息包括网络资源的地址信息和配置信息。
在具体实施时,客户端向业务侧发出业务请求后,业务侧再向服务端发送业务请求信息。业务请求信息包括网络资源访问请求对应的资源URL;客户端设备发起业务请求时,网络资源的地址信息用于指导客户端设备根据该网络资源请求所对应的资源URL进行资源加载。
在操作S230,接收服务器对于业务请求信息返回的响应数据,响应数据包括响应网络资源的地址信息得到的资源文件。
向服务器发送业务请求信息后,服务器根据业务请求信息生成响应数据并发送至业务侧,正常情况下,响应数据中包含网络资源的地址信息对应的资源文件以及表示请求成功的返回状态码。
在操作S240,提取响应数据中的返回状态码,返回状态码用于表示响应数据是否正常返回。
处理得到的响应数据,提取响应数据中的返回状态码,根据不同返回状态码调用不同的处理器进行处理。
在操作S250,根据预设规则及返回状态码确定目标响应数据,将目标响应数据发送至业务请求信息发送端。
预设规则为预先设置的通用业务处理规则,包括更快返回时间、接口竞态处理等,通过抽象提取将业务侧需求抽象为常用配置。
本公开提供的方法能够增强网络请求,通过灵活设置配置信息及封装预设规则提高了获取数据的请求成功率、简化了业务侧请求规则的处理,减少了开发时间,提高了开发效率。
在上述实施例的基础上,配置信息包括业务请求重试次数、重试请求间隔时间、重试状态码、请求状态提示、是否开启防重点击中的一种或多种;静态配置信息为默认配置信息;动态配置信息为参数形式的配置信息。
需要说明的是,业务请求信息中的配置信息可以使用默认的配置信息,还可以使用配置指令对默认的配置数据进行修改进而灵活配置,即动态配置信息。如图3所示,在设置配置信息时,确认是否动态处理,若否,则使用静态配置信息;若是,则使用动态配置信息。静态处理过程如下:
1、项目启动时,读取配置文件,初始化配置数据。
2、当业务有请求访问时,首先根据请求地址以key-value的形式记录当前请求的重试次数,重试次数使用从配置文件读取的次数。其中key用当前url表示,value是一个对象,结构为:{retryies:3,currentRetry:1},retryies为配置的重试次数,currentRetry为当前的请求次数。记录当前url及对应的请求参数,用于重试时使用。
3、发送业务请求信息。
4、接收返回的响应数据,判断是否正常返回数据,如果是正常的返回数据,调用返回码处理器,将数据交由返回码处理器进行处理。如果返回了异常数据,则根据重试状态码进行判断,是否需要进行重试,如果进行重试则调用配置处理器的retryRequest方法,在retryRequest方法中判断是否超过重试次数,如果小于重试次数,就进行重试。如果已经超过重试次数,则先重置本次请求重试数据再交由状态码处理器进行后续处理。
动态处理过程如下:与静态处理过程相同,区别是其中的重试次数和重试间隔由业务侧传入,而不是从配置中读取。
图4示意性示出了根据本公开实施例的提取响应数据中的返回状态码方法的流程图。
如图4所示,该提取响应数据中的返回状态码方法可以包括操作S241~S242。
在操作S241,判断响应数据是否正常返回。
在操作S242,响应于响应数据正常返回,提取响应数据中的返回状态码;响应于响应数据异常返回,根据重试状态码判断是否需要进行重试。
网络请求http/https协议定义了标准的返回状态码,如图5所示,对于本公开主要处理这些返回状态码:20x,40x,50x,返回码处理器根据这些不同的返回状态码,进行不同的处理,包括20x处理、40x处理、50x处理以及其它处理。
20x处理:20x表示请求成功的返回状态码,对20x的处理都统一返回给业务侧。
40x处理:40x的返回状态码都表示客户端出现问题,对于40x的处理通过将40x的码直接返回给客户,或者通过配置的映射函数处理。
50x处理:50x的返回状态码表示服务端的错误,对于50x的处理根据重试逻辑进行重试,再将最后的结果返回给业务侧。
在上述实施例的基础上,响应于响应数据正常返回还包括:对响应数据进行响应字段映射处理,归一化为标准的数据结构。
映射响应字段处理器,可以将不同请求返回的不同响应归化为统一的相应数据结构,以便业务侧进行一致性处理。
图6示意性示出了根据本公开实施例的根据重试状态码判断是否需要进行重试方法的流程图。
如图6所示,该根据重试状态码判断是否需要进行重试的方法可以包括操作S2421~S2422。
在操作S2421,判断当前重试次数是否超过业务请求重试次数。
在操作S2422,响应于当前重试次数未超过业务请求重试次数,进行重试;响应于当前重试次数超过业务请求重试次数,重置本次请求重试数据。
根据重试状态码判断是否需要进行重试,若是,则根据预设的重试阈值进行请求重试,直至达到最大重试次数;若否,则发送给业务侧进行处理。
在上述实施例的基础上,根据业务请求信息设置配置信息还包括:判断loading配置项是否存在;响应于loading配置项存在,当进行重试时,对对应的计数值进行加一计数。提取响应数据中的返回状态码包括:响应于loading配置项存在,当判断响应数据正常返回时,对对应的计数值进行减一计数,并还原配置信息。
loading配置项用于显示加载进度条。在设置配置信息时,检查loading配置项是否存在,如果存在设置value的值为true,count的值为1,同时记录重试次数为1,retries:1。在执行完对应的处理方法后,设置loading的value为false,count减去1,同时还原各个配置项。
在上述实施例的基础上,根据预设规则及返回状态码确定目标响应数据中预设规则包括更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装、以第一次\最后一次处理为准中的任意一种;预设规则为参数数组,参数数组中每个元素包括请求地址信息、请求方式和请求参数。
更快返回时间规则:有时相同的数据可以从多个接口中返回,我们无法提前知晓接口的网络情况,可以通过fastRequest方法自动获取最快的那个接口。
接口竞态处理规则:接口的请求的返回顺序不能保证一致,这就要求我们进行竞态问题处理,竞态处理包括两中情况,一是以第一次返回为主,二是以最后一次返回为主。
并行请求规则:将多个请求一起发出,在收到所有返回后,将所有结果返回给业务侧。
排队请求规则:将多个请求进行排队,当上一次请求返回时,进行下一个请求的发送。
高阶数据组装规则:有时需要多次请求才能获取视图层的数据,后面的请求需要前面请求的结果作为请求参数来获取最终的视图数据。
规则处理器定义了一系列方法,包括:
fastRequest([{url:‘api/getUser’,method:’get’,data:{}}]):
此方法用户获取最快返回的数据,参数是数组形式,每个元素包括请求地址、请求方式、请求参数,在方法内部根据数据的参数并行发送请求,将第一个返回的数据返回给业务侧。
firstRequest([{url:‘api/getUser’,method:’get’,data:{},config:{}}]):
此方法用户获取第一个返回的数据,参数是数组形式,每个元素包括请求地址、请求方式、请求参数,在方法内部根据数据的参数并行发送请求,将第一个返回20x状态码的数据返回给业务侧。
lastRequest([{url:‘api/getUser’,method:’get’,data:{},config:{}}]):
此方法用户获取最后一个返回的数据,参数是数组形式,每个元素包括请求地址、请求方式、请求参数,在方法内部根据数据的参数并行发送请求,将最后一个返回20x状态码的数据返回给业务侧。
parallelRequest([{url:‘api/getUser’,method:’post’,data:{},config:{}}]):
此方法用户可以进行多个请求的并行发送,参数是数组形式,每个元素包括请求地址、请求方式、请求参数,在方法内部根据数据的参数并行发送请求,所有请求都返回结果后,将所有结果以数据的形式返回给业务侧。
seqRequest([{url:‘api/getUser’,method:’post’,data:{},config:{}}]):
此方法用户可以将多个请求的串行发送,参数是数组形式,每个元素包括请求地址、请求方式、请求参数,在方法内部根据数据的数组的顺序串行发送请求,得到最后一个结果后,将所有结果以数据的形式返回给业务侧。
relatedRequest([{url:‘api/getUser’,method:’post’,data:{},handRelate:function(data),config:{}}]):
此方法用户可以将多个请求的串行发送,参数是数组形式,每个元素包括请求地址、请求方式、请求参数、关联处理函数,在方法内部根据数据的数组的顺序串行发送请求,前一个请求的结果会传递给后一个元素的关联处理函数,在关联处理函数内部,组合当前元素的数据和前一个请求得到的数据,如果前一个函数返回异常,则终止后续请求,并将错误结果返回给业务侧,如果所有请求都正确,将最后一个请求的结果返回给业务侧。
图7示意性示出了根据本公开实施例的根据预设规则及返回状态码确定目标响应数据方法的流程图。
如图7所示,该根据预设规则及返回状态码确定目标响应数据的方法可以包括操作S251~S253。
在操作S251,遍历参数数组。
在操作S252,获取每一次业务请求信息的响应数据。
在操作S253,从响应数据中选取与预设规则及返回状态码相对应的目标响应数据。
遍历参数数组,对于遍历的每一项执行上述业务请求的处理步骤,根据上述实施例,例如预设规则为更快返回时间规则,返回状态码为20x,当得到第一个状态码为20x的返回结果时,将该响应数据作为目标响应数据,发送至业务请求信息发送端。
本公开提供了一种业务请求的处理方法,有利于增强网络请求,通过抽象提取将业务侧需求抽象为常用配置,具体包括:基于稳定性的更高成功率、集中式防重处理、以及基于业务规则的更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装、返回数据映射处理等规则,通过将这些规则提供成用户可用的配置或者方法,减少了业务侧处理逻辑,提高开发效率。
下面通过具体实施方式对本公开作进一步说明。在以下实施例中对上述业务请求的处理方法及系统进行具体说明。但是,下述实施例仅用于对本公开进行例示,本公开的范围不限于此。
本公开提供了一套完整的业务请求处理方法的模型,请参见图8,主要包括配置项、配置处理器、返回码处理器、规则处理器、控制器五部分。
1、配置项
配置项是控制请求默认行为的选项,每次请求都会根据配置项进行请求行为的控制以满足不同业务场景。配置项是一个key-value的对象,其中key是配置项名称,value是具体配置值。
2、配置处理器
本公开是通过配置项对网络请求成功率进行增强,配置处理器根据配置项对请求行为进行控制。配置处理器功能包括静态处理和动态处理两种方式。
配置处理器本身包括的方法如下:
setRetries(retryies):设置全局的重试次数。
setRetryTime(time):设置全局的重试间隔时间。
setRetryCode([]):设置全局的重试代码。
request(url,data,configData):发送请求,此方法记录请求的数据。
retryRequest(url):发送重试请求,此方法内判断重试的次数。
3、返回码处理器
网络请求http/https协议定义了标准的返回码,对于本发明主要处理这些返回码:20x,40x,50x,返回码处理器根据这些不同的返回码,进行不同的处理,包括20x处理、40x处理、50x处理以及其它处理。
返回码处理器的主要方法包括:
handleResponse(response):处理请求响应,根据返回的报文的响应码分别进行20x、40x、50x处理。
setHandle(code,function(response)):此方法配置对某个返回码的处理,第二个参数是处理函数,参数是响应的报文。
mapResponse({key:value}):映射响应字段处理器,可以将不同请求返回的不同响应归化为统一的相应数据结构,以便业务侧一致性处理。
mapDataResponse({key:value}):映射响应中业务字段处理器,可以将不同请求返回的不同响应归化为统一的相应数据结构,以便业务侧一致性处理。
4、规则处理器
规则处理器定义了业务侧通用业务处理规则,包括更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装、以第一次\最后一次处理为准。
5、控制器
控制器主要协调配置处理器、规则处理器、返回码处理器和业务侧请求,保证处理的流程正确,将最终处理结果返回给业务侧,控制器是连接业务侧和请求侧的纽带。控制器也可以直接调用请求工具类,直接发送请求。
如图9所示,业务请求处理方法步骤如下:
1、使用默认配置项进行初始化。
2、根据需要调用配置处理器和返回码处理器的设置类方法,包括setRetries、setRetryTime、setRetryCode,setHandle(code,function(response)),mapResponse({key:value}),mapDataResponse({key:value})为后续处理提供配置。
3、业务侧调用request(url,data,configData)发送实际请求,发送之前将发送的数据以key-value的形式记录下来,用于后续处理器使用。其中url作为key,data和configData作为value,如{url:{data,configData}}所示。
4、检查loading配置项是否存在,如果存在设置value的值为true,count的值为1,同时记录重试次数为1,retries:1。
5、发送实际请求。
6、接收请求响应数据。
7、调用返回码处理器处理返回结果,提取响应的返回状态码,根据状态码调用不同的处理器,这里的处理器是第二步中用setHandle(code,function(response))设置的处理器,默认都未设置,如果没有设置则直接进入后续处理步骤。
8、如果状态码为配置的重试状态码,则优先重试处理,重试次数retries加1,并判断是否超过最大重试次数,如果没有超过最大重试次数,则等待配置的重试等待时间后,发起重试请求,如果超过了最大重试请求,执行返回码处理方法。
9、如果状态码是20x的格式,在执行完对应的处理方法后,进入响应字段映射处理阶段。
10、设置loading的value为false,count减去1,同时还原各个配置项。
11、将最终结果返回业务侧。
若预设规则为更快返回时间规则,步骤包括:
1-1,遍历参数数组;
1-2,对于遍历的每一项执行上述1-11步骤;
1-3,当得到第一个返回结果时,将结果作为最终结果返给业务侧。
若预设规则为接口竞态处理以第一次返回为主规则:
2-1,遍历参数数组;
2-2,对于遍历的每一项执行上述1-11步骤;
2-3,当得到第一个状态码为20x的返回结果时,将结果作为最终结果返给业务侧。
若预设规则为接口竞态处理以最后一次返回为主规则:
3-1,遍历参数数组;
3-2,对于遍历的每一项执行上述1-11步骤;
3-3,记录每一个请求的结果;
3-4,找出最后一个状态码为20x的返回结果时,将结果作为最终结果返给业务侧。
若预设规则为并行请求规则:
4-1,遍历参数数组;
4-2,对于遍历的每一项执行上述1-11步骤;
4-3,当得到的结果数等于入参数组的数量时,将所有结果以数组的形式返给业务方。
若预设规则为串行发送规则:
5-1,遍历参数数组;
5-2,在遍历内部执行上述1-11步骤,与并行发送不同的是这里要等待请求发送的结果返回后并进行记录,在进行下一次的请求,直到所有请求都发送完毕;
5-3,将所有结果以数组的形式返给业务方。
若预设规则为高阶数据组装规则:
6-1,遍历参数数组;
6-2,在遍历内部执行上述1-11步骤,与并行发送不同的是这里要等待请求发送的结果返回后,结果会传递给后一个循环项的关联处理函数,在关联处理函数内部,组合当前元素的数据和前一个请求得到的数据,如果前一个函数返回异常,则终止后续请求。串联所有请求直到所有请求都发送完毕;
6-3,将最后的结果返给业务方进行后续处理。
现有实现方式每次发送请求只发生一次网络请求,如果存在网络抖动,那此次请求将会失败,对于返回的响应码也需要自已处理,此外对于业务侧的请求需求,比如:更高成功率、更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装,都需要业务侧自己处理。
本公开通过配置项、配置项控制器处理请求重试保证请求的高成功率,增强用户体验。通过返回码处理器处理各种状态的返回码,并提供配置方法,提供业务侧处理业务逻辑的入口。通过业务处理提供的抽象方法,将业务侧通用的规则封装成方法,较少业务侧重复逻辑的处理,使业务侧只关注业务本身,通过本公开提供的方法处理请求的规则。通过请求控制器协调业务侧、规则处理器、返回码处理器、配置处理器的动作,使某一请求无缝衔接起来,提高业务开发效率。综上所述,本公开通过配置项及封装通用规则提高了请求成功率,简化了业务侧请求规则的处理,减少开发时间,提供了开发效率。
图10示意性示出了根据本公开一实施例的业务请求的处理系统的方框图。
如图10所示,该业务请求的处理系统1000包括:设置模块1010、发送模块1020、接收模块1030、提取模块1040和确定模块1050。
设置模块1010,用于根据业务请求信息设置配置信息,配置信息包括静态配置信息或动态配置信息中的一种。根据本公开的实施例,设置模块1010例如可以用于执行上文参考图2所描述的S210步骤,在此不再赘述。
发送模块1020,用于向服务器发送业务请求信息,业务请求信息包括网络资源的地址信息和配置信息。根据本公开的实施例,该发送模块1020例如可以用于执行上文参考图2所描述的S220步骤,在此不再赘述。
接收模块1030,用于接收服务器对于业务请求信息返回的响应数据,响应数据包括响应网络资源的地址信息得到的资源文件。根据本公开的实施例,该接收模块1030例如可以用于执行上文参考图2所描述的S230步骤,在此不再赘述。
提取模块1040,用于提取响应数据中的返回状态码,返回状态码用于表示响应数据是否正常返回。根据本公开的实施例,该提取模块1040例如可以用于执行上文参考图2所描述的S240步骤,在此不再赘述。
确定模块1050,用于根据预设规则及返回状态码确定目标响应数据,将目标响应数据发送至业务请求信息发送端。根据本公开的实施例,该确定模块1050例如可以用于执行上文参考图2所描述的S250步骤,在此不再赘述。
需说明的是,根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,设置模块1010、发送模块1020、接收模块1030、提取模块1040和确定模块1050中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,设置模块1010、发送模块1020、接收模块1030、提取模块1040和确定模块1050中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,设置模块1010、发送模块1020、接收模块1030、提取模块1040和确定模块1050中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图11示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的方框图。图11示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图11所示,本实施例中所描述的电子设备1100,包括:处理器1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。处理器1101例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1101还可以包括用于缓存用途的板载存储器。处理器1101可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1103中,存储有系统1100操作所需的各种程序和数据。处理器1101、ROM1102以及RAM 1103通过总线1104彼此相连。处理器1101通过执行ROM 1102和/或RAM 1103中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 1102和RAM 1103以外的一个或多个存储器中。处理器1101也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1100还可以包括输入/输出(I/O)接口1105,输入/输出(I/O)接口1105也连接至总线1104。系统1100还可以包括连接至I/O接口1105的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被处理器1101执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的业务请求的处理方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1102和/或RAM 1103和/或ROM1102和RAM 1103以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的业务请求的处理方法。
在该计算机程序被处理器1101执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1109被下载和安装,和/或从可拆卸介质1111被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被处理器1101执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
需要说明的是,在本公开各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (13)

1.一种业务请求的处理方法,其特征在于,包括:
根据业务请求信息设置配置信息,所述配置信息包括静态配置信息或动态配置信息中的一种;
向服务器发送所述业务请求信息,所述业务请求信息包括网络资源的地址信息和所述配置信息;
接收所述服务器对于所述业务请求信息返回的响应数据,所述响应数据包括响应所述网络资源的地址信息得到的资源文件;
提取所述响应数据中的返回状态码,所述返回状态码用于表示所述响应数据是否正常返回;
根据预设规则及所述返回状态码确定目标响应数据,将所述目标响应数据发送至所述业务请求信息发送端。
2.根据权利要求1所述的业务请求的处理方法,其特征在于,所述配置信息包括业务请求重试次数、重试请求间隔时间、重试状态码、请求状态提示、是否开启防重点击中的一种或多种;
所述静态配置信息为默认配置信息;所述动态配置信息为参数形式的配置信息。
3.根据权利要求2所述的业务请求的处理方法,其特征在于,所述提取所述响应数据中的返回状态码还包括:
判断所述响应数据是否正常返回;
响应于所述响应数据正常返回,提取所述响应数据中的返回状态码;
响应于所述响应数据异常返回,根据所述重试状态码判断是否需要进行重试。
4.根据权利要求3所述的业务请求的处理方法,其特征在于,所述响应于所述响应数据正常返回还包括:
对所述响应数据进行响应字段映射处理,归一化为标准的数据结构。
5.根据权利要求3所述的业务请求的处理方法,其特征在于,所述根据重试状态码判断是否需要进行重试包括:
判断当前重试次数是否超过所述业务请求重试次数;
响应于当前重试次数未超过所述业务请求重试次数,进行重试;
响应于当前重试次数超过所述业务请求重试次数,重置本次请求重试数据。
6.根据权利要求1所述的业务请求的处理方法,其特征在于,所述根据业务请求信息设置配置信息还包括:
判断loading配置项是否存在;
响应于loading配置项存在,当进行重试时,对对应的计数值进行加一计数。
7.根据权利要求6所述的业务请求的处理方法,其特征在于,所述提取所述响应数据中的返回状态码包括:
响应于loading配置项存在,当判断所述响应数据正常返回时,对对应的计数值进行减一计数,并还原所述配置信息。
8.根据权利要求1所述的业务请求的处理方法,其特征在于,所述根据预设规则及所述返回状态码确定目标响应数据中预设规则包括更快返回时间、接口竞态处理、并行请求、排队请求、高阶数据组装、以第一次\最后一次处理为准中的任意一种;
所述预设规则为参数数组,所述参数数组中每个元素包括请求地址信息、请求方式和请求参数。
9.根据权利要求8所述的业务请求的处理方法,其特征在于,所述根据预设规则及所述返回状态码确定目标响应数据包括:
遍历所述参数数组;
获取每一次业务请求信息的响应数据;
从所述响应数据中选取与所述预设规则及所述返回状态码相对应的目标响应数据。
10.一种业务请求的处理系统,其特征在于,包括:
设置模块,用于根据业务请求信息设置配置信息,所述配置信息包括静态配置信息或动态配置信息中的一种;
发送模块,用于向服务器发送所述业务请求信息,所述业务请求信息包括网络资源的地址信息和所述配置信息;
接收模块,用于接收所述服务器对于所述业务请求信息返回的响应数据,所述响应数据包括响应所述网络资源的地址信息得到的资源文件;
提取模块,用于提取所述响应数据中的返回状态码,所述返回状态码用于表示所述响应数据是否正常返回;以及
确定模块,用于根据预设规则及所述返回状态码确定目标响应数据,将所述目标响应数据发送至所述业务请求信息发送端。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~9中任意一项所述的业务请求的处理方法。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~9中任意一项所述的业务请求的处理方法。
13.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~9中任意一项所述的业务请求的处理方法。
CN202311132246.XA 2023-09-04 2023-09-04 业务请求的处理方法、系统、设备、介质及产品 Pending CN117176565A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311132246.XA CN117176565A (zh) 2023-09-04 2023-09-04 业务请求的处理方法、系统、设备、介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311132246.XA CN117176565A (zh) 2023-09-04 2023-09-04 业务请求的处理方法、系统、设备、介质及产品

Publications (1)

Publication Number Publication Date
CN117176565A true CN117176565A (zh) 2023-12-05

Family

ID=88946390

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311132246.XA Pending CN117176565A (zh) 2023-09-04 2023-09-04 业务请求的处理方法、系统、设备、介质及产品

Country Status (1)

Country Link
CN (1) CN117176565A (zh)

Similar Documents

Publication Publication Date Title
US9208235B1 (en) Systems and methods for profiling web applications
WO2017148278A1 (zh) Fix协议的业务实现方法、装置及系统
CN110011875A (zh) 拨测方法、装置、设备及计算机可读存储介质
US20180227314A1 (en) System and method for performing antivirus scan of a web page
US20230418692A1 (en) File upload modifications for client side applications
CN113765818A (zh) 分布式限流方法、装置、设备、存储介质和系统
CN111782988A (zh) 确定应用程序来源的方法、装置、计算机系统和存储介质
CN113411400B (zh) 信息调用方法、装置、电子设备及可读存储介质
CN113132400B (zh) 业务处理方法、装置、计算机系统及存储介质
CN114760233A (zh) 业务处理方法、装置、电子设备及存储介质
CN112565277B (zh) 一种数据传输方法、系统及电子设备
US9436669B1 (en) Systems and methods for interfacing with dynamic web forms
CN112015383A (zh) 一种登录方法和装置
CN113191889A (zh) 风控配置方法、配置系统、电子设备及可读存储介质
CN116561013B (zh) 基于目标服务框架的测试方法、装置、电子设备和介质
CN115934378A (zh) 业务数据处理方法、装置、电子设备和存储介质
CN116095005A (zh) 流量管理方法、装置、设备、介质和程序产品
US20110282980A1 (en) Dynamic protection of a resource during sudden surges in traffic
CN117176565A (zh) 业务请求的处理方法、系统、设备、介质及产品
CN114780361A (zh) 日志生成方法、装置、计算机系统及可读存储介质
CN111580882B (zh) 应用程序启动方法、装置、计算机系统和介质
CN114461909A (zh) 信息处理方法、信息处理装置、电子设备和存储介质
CN113626001A (zh) 一种基于脚本的api动态编排方法及装置
CN113781154A (zh) 一种信息回滚方法、系统、电子设备及存储介质
US20150222505A1 (en) Business transaction resource usage tracking

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