CN111931087B - 一种网页请求处理方法及装置 - Google Patents
一种网页请求处理方法及装置 Download PDFInfo
- Publication number
- CN111931087B CN111931087B CN202010969719.1A CN202010969719A CN111931087B CN 111931087 B CN111931087 B CN 111931087B CN 202010969719 A CN202010969719 A CN 202010969719A CN 111931087 B CN111931087 B CN 111931087B
- Authority
- CN
- China
- Prior art keywords
- interface
- level url
- matched
- class
- interface class
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种网页请求处理方法及装置,所述方法包括:接收网页请求,所述网页请求中携带有URL;从URL中提取出第一级URL和第二级URL,第一级URL用于表征所请求的接口类,第二级URL用于表征所请求的接口方法;根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;若基于获取到的接口方法与第二级URL之间的映射关系匹配到提取出的第二级URL对应的接口方法,则基于网页请求中的请求数据,对匹配到的接口方法进行参数赋值;调用赋值后的接口方法对网页请求进行处理,得到网页请求的请求处理结果。由此,准确地匹配到接口方法,匹配流程方便快捷。
Description
技术领域
本申请涉及计算机通信技术领域,尤其涉及一种网页请求处理方法及装置。
背景技术
MVC模式是一种常用的Web应用程序开发模式,MVC是Model-View-Controller的缩写,分别表示模型、视图和控制器。它是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,主要负责和数据库进行交互。View(视图)是应用程序中处理数据显示的部分,即根据数据库中的数据来渲染界面。Controller(控制器)是应用程序中处理用户交互的部分,作为Model和View的媒介,用来取出给视图,或者向模型发送数据、暴露API给视图层调用(本申请中的接口类均代指控制器类)。
一般情况下,一个接口类提供的是某一类资源的相关接口,例如用户信息作为一种资源,由UserController.php提供了不同的接口方法对应用户信息的增删改查等操作。而所谓路由,就是当接收到用户的请求后,会定位匹配到一个接口方法,由该接口方法处理此次请求。
为了能够匹配到准确的接口方法,可以在请求中携带相关参数,然后通过判断语句(如if-else语句或switch语句)匹配到所需的接口方法。但该方法需要手动从请求中提取参数,而且一旦接口方法变动,判断语句也要同步修改,会大大增加人力成本;此外,该方法无法实现RESTful API。
因此,如何方便快捷且准确地匹配到接口方法以及时对用户的请求进行处理是值得考虑的技术问题之一。
发明内容
有鉴于此,本申请提供一种网页请求处理方法及装置,用以准确地匹配到接口方法,而且匹配流程方便快捷,灵活简单。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种网页请求处理方法,包括:
接收网页请求,所述网页请求中携带有统一资源定位符URL;
从所述URL中提取出第一级URL和第二级URL,所述第一级URL用于表征所请求的接口类,所述第二级URL用于表征所请求的接口方法;
根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;
获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;
若基于获取到的接口方法与第二级URL之间的映射关系匹配到提取出的第二级URL对应的接口方法,则基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值;
调用赋值后的接口方法对所述网页请求进行处理,得到所述网页请求的请求处理结果。
根据本申请的第二方面,提供一种网页请求处理装置,包括:
接收模块,用于接收网页请求,所述网页请求中携带有统一资源定位符URL;
提取模块,用于从所述URL中提取出第一级URL和第二级URL,所述第一级URL用于表征所请求的接口类,所述第二级URL用于表征所请求的接口方法;
确定模块,用于根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;
获取模块,用于获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;
第一判断模块,用于若基于获取到的接口方法与第二级URL之间的映射关系判断是否匹配到提取出的第二级URL对应的接口方法;
参数赋值模块,用于若所述第一判断模块的判断结果为是,则基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值;
处理模块,用于调用赋值后的接口方法对所述网页请求进行处理,得到所述网页请求的请求处理结果。
根据本申请的第三方面,提供一种服务器,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
本申请实施例的有益效果:
通过预先生成接口类与第一级URL之间的映射关系,以及预先生成接口方法与第二级URL之间的映射关系,这样当接收到网页请求后,可以基于网页请求中解析出的第一级URL匹配到对应的接口类,然后再基于该接口类下接口方法与第二级URL之间的映射关系,准确地匹配到网页请求解析出的第二级URL对应的接口方法,然后再基于网页请求中的请求数据对匹配到的接口方法进行参数赋值,再调用赋值后的接口方法对网页请求进行处理,匹配流程方便快捷,灵活简单。
附图说明
图1是本申请实施例提供的一种网页请求处理方法的流程示意图;
图2是本申请实施例提供的每个接口类与其对应的第一级URL之间映射关系生成方法的流程示意图;
图3是本申请实施例提供的接口方法与其对应的第二级URL之间映射关系生成方法的流程示意图;
图4是本申请实施例提供的第一数值数组和/或所述第三映射关系数组的生成方法的流程示意图
图5是本申请实施例提供的一种网页请求处理装置的框图;
图6是本申请实施例提供的一种实施上述网页请求处理方法的服务器的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了更好地理解本申请,此处对本申请涉及的技术术语进行介绍:
PHP,全称Hypertext Preprocessor,即超文本预处理器,是一种通用的开源脚本语言,在服务端运行,是常用的Web编程语言。
REST,全称为Representational State Transfer,即,表现层状态转移,是一种Web API设计风格,如果一个架构符合REST原则,则称它为RESTful架构。它的特点是面向资源,每一个URI代表一个资源,客户端使用get、post、put、patch和delete五种表示操作方式的动词对服务器资源进行操作。
接口类,为提供对应资源的相关接口,例如,@Controller可以用于标记一个接口类,需要说明是,实际应用中标记也可以有其他表示方法,本申请对此不进行限定。而接口方法,在面向对象的概念中,接口类中的函数被称作接口方法。接口方法分为类(静态)方法和实例(非静态)方法两种,前者可通过类直接调用,后者则需要首先构造一个类的实例对象,然后通过该对象来调用。本申请涉及的接口方法可以但不限于包括:get、post、put、patch和delete等。
发明人发现,目前还提供了一种接口方法匹配方式,即,利用ThinkPHP的解析方式,ThinkPHP支持采用多种方式配置路由,其中包含一种称为注解路由的配置方式,但该方式针对不同的请求方式,路由配置需要额外指定,而且参数绑定等具有局限性,参数较多时处理流程较为繁琐,且该方法不支持请求拦截、过滤器等等,且使用过程复杂,用户体验效果不佳。
有鉴于此,本申请提供一种网页请求处理方法,包括:接收网页请求,上述网页请求中携带有统一资源定位符URL;从上述URL中提取出第一级URL和第二级URL,上述第一级URL用于表征所请求的接口类,所述第二级URL用于表征所请求的接口方法;根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;若基于获取到的接口方法与第二级URL之间的映射关系匹配到提取出的第二级URL对应的接口方法,则基于上述网页请求所请求的请求数据,对匹配到的接口方法进行参数赋值;调用赋值后的接口方法对所述网页请求进行处理,得到上述网页请求的请求处理结果。通过采用上述方法,可以准确地定位到接口类下的接口方法,然后由定位到的接口方法处理网页请求,也无需通过判断语句定位接口方法,进而也就不存在通过判断方式定位接口方法存在的问题。
下面对本申请提供的网页请求处理方法进行详细地说明。
参见图1,图1是本申请提供的一种网页请求处理方法的流程图,该方法可包括如下所示步骤:
S101、接收网页请求,所述网页请求中携带有统一资源定位符URL。
本步骤中,网页请求可以为web请求,用户通过客户端或者浏览器发送网页请求至服务器,为了能够得到响应数据,可以在网页请求中携带用于定位到处理网页请求的接口类和接口方法的URL。
S102、从所述URL中提取出第一级URL和第二级URL。
本步骤中,上述第一级URL用于表征所请求的接口类,上述第二级URL用于表征所请求的接口方法。
具体地,服务器接收到网络请求后,由于要找到目的接口类下对应的目标接口方法来处理该网络请求,因此,可以按照接口类与接口方法的规则从网页请求中的URL中解析出用于定位网页请求所请求的接口类的第一级URL,然后再提取出用于定位所请求的接口方法的第二级URL。
S103、根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类。
本步骤中,服务器会预先得到所有接口类的接口类文件,然后得到每个接口类对应的第一级URL,然后分别存储各个接口类与各自对应的第一级URL之间的映射关系,具体来说,每个接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中,则当从网页请求中解析出第一级URL后,就可以按照下述方法执行步骤S103:逐个遍历每个接口类对应的第一映射关系数组;当遍历到包括上述提取出的第一级URL的第一映射关系数组时,则确定该第一映射关系数组中存储的接口类为所述提取出的第一级URL对应的接口类。这样一来,就可以准确地匹配到网页请求中第一级URL对应的接口类。
可选地,若遍历完所有接口类对应的第一映射关系数组,也未匹配到与网页请求中解析出的第一级URL相匹配的接口类,则向客户端/浏览器返回提示错误消息。
S104、获取确定出的接口类对应的接口方法与第二级URL之间的映射关系。
本步骤中,服务器同样也会预先针对每个接口类下的所有接口方法进行逐个扫描,然后得到该接口类下接口方法与第二级URL之间的映射关系,然后存储到该接口方法对应的第二映射关系数组中,也即,同一接口类下,不同的接口方法与第二级URL之间的映射关系存储在不同的第二映射关系数组中;而且,不同的接口类,可能存储相同的接口方法,但是不同接口类下,相同的接口方对应的第二映射关系数组也不同。
S105、基于获取到的接口方法与第二级URL之间的映射关系,判断是否匹配到提取出的第二级URL对应的接口方法,若判断结果为是,则执行步骤S106;若判断结果为否,则执行步骤S108。
本步骤中,当基于步骤S103匹配到接口类后,在步骤S104的基础上可以按照下述过程实施步骤S105:逐个遍历该接口类下的各个接口方法对应的第二映射关系数组;若存在包括所述提取出的第二级URL的第二映射关系数组,则确认匹配到接口方法,以及将该第二映射关系数组中存储的接口方法确定为匹配到的接口方法。
S106、基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值。
本步骤中,为了提高网页请求处理的灵活性和可扩展性,本申请可以支持多种形式请求数据的参数绑定。基于此,本申请可以按照下述过程实施步骤S106:判断匹配到的接口方法的形参的类型是否为设定基本类型;若判断结果为是,则利用所述请求数据中与匹配到的接口方法的形参相匹配的数据对所述匹配到的接口方法进行参数赋值;若判断结果为否,则实例化所述形参的类型对应的对象;将所述请求数据中与所述实例化的对象的对象属性相匹配的数据赋值给所述对象属性;利用赋值后的对象对匹配到的接口方法进行参数赋值。
具体地,当接口方法的参数的形式(格式)可以自定义,为了能够准确地给匹配到的接口方法进行参数赋值,则本申请会判断接口方法的形参的类型,当该形参为设定基本类型,则可以直接将请求数据赋值给该接口方法的形参,即利用请求数据中与形参相匹配的数据进行参数赋值,这样,调用赋值后的接口方法就可以对网页请求进行处理,然后将处理结果反馈给客户端/浏览器。而当匹配到的接口方法的形参的类型不为设定基本类型,即,自定义类型时,则会实例化一个对象,该对象与接口方法的参数的类型相对应,然后遍历该请求数据中是否有实例化的对象的对象属性相匹配的数据,如果有,则将该数据赋值给该对象属性,然后对赋值后的对象作为参数传入到接口方法中。
可选地,接口方法包括的形参的数量不止一个,则可以按照下述方法执行将上述请求数据中与所述实例化的对象的对象属性相匹配的数据赋值给所述对象属性:当所述匹配到的接口方法包括单个形参时,则将所述请求数据中与所述对象属性的属性名相匹配的数据赋值给上述对象属性;当上述匹配到的接口方法包括多个形参时,则分别确定所述请求数据中与每个形参的参数名相匹配的子数据,并将该子数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性。
具体地,本申请中提出的对象包括对象属性,且对象属性包括属性名。当匹配到的接口方法包括多个形参时,则会先遍历请求数据,获取到请求数据中与属性名相匹配的数据(相当于请求数据中第一级数据),然后再从与属性名相匹配的数据中与参数名相匹配子数据赋值为对象属性。至此,可以表明本申请提供的方法可以处理多个参数的网页请求处理方法。
可选地,本申请中形参的设定基本类型可以为整型int、bool布尔类型等。本申请中形参的自定义类型可以为User类型等等。
可选地,本申请中网页请求中携带的请求数据可以有多种形式,例如,URL参数、form-data、JSON数据、RESTful风格的数据等等,其中,URL参数可以为,RESTful风格的数据可以为“/user/1/kero”。JSON数据可以参考下述语言,该JSON数据为复杂嵌套格式的数据。
{
"id":1,
" user":{
" name" : "xxx "
}
}
此外,请求数据可以为携带在网页请求携带的URL的末尾部,也有可能携带在http请求体中等等。例如,网页请求的接口方法为get时,请求数据为该网页请求携带的URL末尾部具有形式的数据;而当网页请求的接口方法为post时,则请求数据会携带在http请求体中。
为了更好地理解本申请实施例,匹配到的接口方法为:functionaddUser(User $user) {……},假设请求数据为JSON数据为:
{
" name": " kero",
" phone ": " 123456 "
}
当匹配到上述接口方法后,可以确认该接口方法的形参的类型User类型,不为设定基本类型,且确认仅有一个形参,则可以实例化User类对应的对象,如下述代码,则可以从JSON请求数据中与对象属性相匹配的数据,即,kero和123456,然后将这两个数据分别赋值给该对象属性,然后将赋值后的对象作为形成导入到上述匹配的接口方法中,从而实现对上述匹配的接口方法进行参数赋值。
class User {
public $name; //对象属性
public $phone; //对象属性
}
而当匹配的接口方法为:functionaddUser(User $user,int $id) {……},假设请求数据为JSON数据为:
{
" user":{
" name ": " kero",
" phone": " 123456"
}
" id ":1
}
当匹配到上述接口方法后,可以确认该接口方法的形参的类型User类型,不为设定基本类型,且确认有2个(多个)形参,则可以实例化User类对应的对象,也如上述实施例中单个参数的对象的代码,则此时由于JSON请求数据中,name和phone位于第二层级,因此,先从JSON请求数据中遍历出接口方法的形参名user对应的子数据,即,user:{ " name": "kero"," phone": " 123456 "},然后从该子数据中定位出与属性名(name/phone)相匹配的数据,即kero和123456,然后将这个两个数据赋值给该实例化对象的对象属性。然后将实例化的对象作为参数导入到匹配到的接口方法中。
S107、调用赋值后的接口方法对所述网页请求进行处理,得到所述网页请求的请求处理结果。
本步骤中,在基于网页请求中的请求数据为匹配到的接口方法进行参数赋值后,即可利用赋值后的接口方法对该网页请求进行处理,从而可以将得到的处理结果,即响应数据反馈给客户端。
S108、提示错误。
本步骤中,可能存在无法匹配到与网页请求中解析出的第一级URL相匹配的接口类,或者,即使匹配到接口类,但无法基于网页请求中解析出的第二级URL匹配到接口方法的情况,在这种情况下,可以返回错误的消息。
通过实施本申请提供的网页请求处理方法,通过预先生成接口类与第一级URL之间的映射关系,以及预先生成接口方法与第二级URL之间的映射关系,这样当接收到网页请求后,可以基于网页请求中解析出的第一级URL匹配到对应的接口类,然后再基于该接口类下接口方法与第二级URL之间的映射关系,准确地匹配到网页请求解析出的第二级URL对应的接口方法,然后再基于网页请求中的请求数据对匹配到的接口方法进行参数赋值,再调用赋值后的接口方法对网页请求进行处理。
可选地,本申请提供的网页请求处理方法还可以支持请求拦截或过滤功能,为了实现上述功能,本实施例提出在实施步骤S107中调用赋值后的接口方法对所述网页请求进行处理之前,本实施例提供的网页请求处理方法,还包括:判断该接口类是否存在第三映射关系数组和/或第一数值数组;若存在至少一个数组,则调用过滤器方法或调用拦截器方法对所述网页请求进行处理。
具体地,本实施例维护了两个数组,即,第三映射关系数组和第一数值数组,其中,上述第三映射关系数组用于存储拦截器方法和所述拦截器方法所定义的值之间的映射关系;上述第一数值数组用于存储过滤器方法标识。通过实施本实施例的上述过程,为了满足为了网页请求的多种处理需求和服务器的安全策略需求,本实施例中在调用匹配的接口方法执行网页请求处理之前,提出判断该接口类是否存在第三映射关系数组和/或第一数值数组,当存在任一数组时,则可以调用对应的拦截器方法和/或过滤器方法对网页请求进行处理,这样一来,可以有效的实现对网页请求的拦截和/或过滤,以筛选出来不安全或存在安全隐患的网页请求,避免因对不安全或存在安全隐患的网页请求进行处理所造成的处理资源的浪费问题的发生。
具体地,过滤器方法的执行过程一般在拦截器方法之前实施,当该接口类存在过滤器对应的第一数值数组时,则在调用赋值后的接口方法对网页请求处理之前,会调用过滤器方法对网页请求进行过滤处理,即执行过滤流程,在执行过滤流程之后,可以判断是否有返回值返回,如果有,则流程结束;如果未收到返回值,则判断是否存在第三映射关系数组,若存在则执行拦截器方法的处理流程,下述描述,若不存在,则可以继续调用赋值后的接口方法对该网页请求进行处理,得到网页请求处理结果。
具体地,本实施例中拦截器方法可以但不限于包括前置拦截器方法和后置拦截器方法等等。需要说明的是,前置拦截器方法和后置拦截器方法分别对应各自的第三映射关系数组。
当确认接口类存在前置拦截器方法时,则在调用赋值后的接口方法执行网页请求处理之前,可以先调用前置拦截器方法对网页请求进行拦截处理,然后判断前置拦截器方法是否反馈返回值,若反馈返回值,则不再执行调用赋值后的接口方法对所述网页请求进行处理的步骤;若未反馈返回值,则继续执行调用赋值后的接口方法对所述网页请求进行处理的步骤,从而实现对网页请求的拦截处理。
需要说明的是,后置拦截器方法是在调用匹配到的接口方法执行网页请求处理步骤之后,则在此情况下,若确认接口类仅存在后置拦截器方法对应的第三映射关系数组时,或者该接口类存在前置拦截器方法和后置拦截器方法分别对应的第三映射关系数组时,则在执行匹配到的接口方法对网页请求进行处理之后,可以调用后置拦截器接口方法对网页请求进行处理,然后反馈拦截处理结果。
可选地,基于上述任一实施例,本实施例中的第一映射关系数组是按照下述方法得到的,也即,每个接口类与其对应的第一级URL之间的映射关系是按照图2所示的方法扫描得到的:
S201、扫描该接口类对应的接口类文件。
S202、判断所述接口类文件中是否存在该接口类的接口类标识;若存在,则执行步骤S203;若不存在,则流程结束。
S203、从所述接口类文件中提取该接口类对应的第一级URL。
S204、将该接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中。
具体地,本申请中每个接口类对应的接口类文件包括类文档注释,通过类文档注释来得到该接口类与其对应的第一级URL之间的映射关系,具体如下:类文档注释中自定义的标记如下:
@Controller:标记本类是一个接口类;
@GetMapping:和@Controller结合使用,用于标记映射的第一级URL。
可选地,本申请中接口类文件可以但不限于为PHP接口类文件。当为PHP接口类文件时,文档注释是PHP 提供的一种语言特性,主要用于提供文档性质的说明,比如类的作用、方法中各参数的含义等,可以通过 PHP 提供的反射机制获取到文档注释的文本内容。
在此基础上,可以针对每个接口类文件均执行下述过程:扫描该接口类对应的接口类文件,判断该接口类文件是否存在@Controller标记,若存在则表明该接口类文件存在该接口类的接口类标识。在存在@Controller标记时,则可以从该接口类文件中该接口类对应的第一级URL,然后将该接口类与提取出的该接口类对应的第一级URL存储到该接口类对应的第一映射关系数组中。
可选地,在获取该接口类对应的第一级URL时,可以按照下述过程实施步骤S203:从该接口类文件中提取该接口类下设定映射标记所定义的值;将上述设定映射标记所定义的值作为键名,并判断上述第一映射关系数组中是否存在所述键名;若不存在,则将上述键名作为该接口类对应的第一级URL。在此基础上,则将该接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中,可以按照下述过程实施:将该接口类的接口类标识作为值,所述设定映射标记所定义的值作为键名存储到该接口类对应的第一映射关系数组中。
具体地,当扫描出@Controller标记时,则继续扫描接口类文件,然后当扫描到类文档注释中有设定映射标记@GetMapping时,可以获取@GetMapping标记所定义的值,该@GetMapping所定义的值即为上述设定映射标记所定义的值,该@GetMapping所定义的值即为该接口类对应的第一级URL,为了能够按照该接口类对应的第一映射关系数组的格式存储,可以将@GetMapping所定义的值作为键名进行存储,但在存储之前,为了避免映射冲突,在获取到键名后,可以判断该接口类对应的第一映射关系数组中是否存在与该键名相同的键名,若存则表明映射冲突,提示错误;若不存在,则才会将上述@GetMapping所定义的值作为键名,该接口类的接口类标识作为值写入该接口类对应的第一映射关系数组中。可选地,每个接口类的接口类标识可以为接口类名称等等。
至此,接口得到每个接口类对应的第一映射关系数组,则在此基础上,当图1中步骤S102提取出网页请求中的第一级URL后,遍历各个接口类分别对应的第一映射关系数组,当遍历到某一第一映射关系数组中的键名与提取到的第一级URL相同时,则将该第一映射关系数组中键名为提取出的第一级URL对应的值---接口类标识对应的接口类确定为提取出的第一级URL对应的接口类。
可选地,基于上述实施例,针对每一接口类,该接口类下的每一接口方法与该接口方法对应的第二级URL之间的映射关系可以为按照图3所示的方法扫描得到的,包括以下步骤:
S301、扫描该接口类对应的接口类文件。
需要说明的是,本步骤的实施可以在获得该接口类的第一映射关系数组之后继续实施,即,在执行步骤S204之后,执行步骤S301,即,继续扫描该接口类对应的接口类文件。当然,也可以单独实施,即,当需要获得接口类下每个接口方法与其对应的第二映射关系数组时,执行图3的流程,本申请对此不进行限定。为了描述方便,本申请后续描述以在执行步骤S204之后,继续执行步骤S301为例进行说明。
S302、判断该接口类文件是否存在任一接口方法的接口方法标识;若存在,则执行步骤S303;若不存在,则流程结束。
S303、从该接口类文件中提取存在的接口方法标识对应的第二级URL。
S304、将该接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中。
具体来说,针对任一接口类,当从该接口类对应的接口类文件中扫描出该接口类对应的第一级URL后,为了能够匹配到准确地接口方法,可以继续遍历该接口类文件,然后判断该接口类文件中是否存在任一接口方法的接口方法标记,若存在,则表明该接口类文件存在该接口方法的接口方法标识,一般情况下,接口类方法标记和第二级URL在接口类文件中的位置是相邻的,如同行相邻位置等,则在此基础上,继续扫描该接口类文件,就可以从该接口类文件中提取出该接口方法对应的第二级URL。
可选地,可以按照下述方法从该接口类文件中提取存在的接口方法标识对应的第二级URL:从该接口类文件中提取存在的接口方法所定义的值;将该接口方法所定义的值作为所述接口方法对应的第二级URL。
具体地,在从接口类文件中扫描到接口方法标记后,从接口方法标记所在行继续扫描,当扫描到接口方法所定义的值,则该接口方法所定义的值即为第二级URL。
在此基础上,为了能够将接口方法与其对应的第二级URL存储到该接口方法对应的第二映射关系数组中,一种可能的情况是,直接将接口方法所定义的值作为键名,接口方法相关信息作为值写入到该接口方法对应的第二映射关系数组中,这样方便查找。
另一种可能的实施例中,还可以按照下述方法存储:对该接口方法所定义的值进行正则表达式处理,得到该接口方法的匹配模式;将所述匹配模式作为键名,该接口方法的相关信息作为值存储在该接口方法对应的第二映射关系数组中。
具体地,在存储时,可以将该接口方法所定义的值进行正则表达式处理,得到该接口方法对应的匹配模式,该匹配模式即为该接口方法对应的第二级URL的正则表达式,然后将该匹配模式作为键名,该接口方法的相关信息的三元组作为值写入到该接口方法对应的第二映射关系数组中。需要说明的是,该接口方法的相关信息能够标识该接口方法。具体地,上述接口方法的相关信息的三元组内容包括:匹配模式(pattern)、接口方法名称和接口方法所定义的值中的路径变量(path variable)。
至此即可得到每个接口方法对应的第二映射关系数组,在此基础上,当基于网页请求中的第一级URL匹配到接口类后,然后对从网页请求中提取出的第二URL进行正则表达式处理得到待匹配的匹配模式,然后遍历该接口类下各个接口方法对应的第二映射关系数组,若确认存在包括该待匹配的匹配模式的第二映射关系数组,则可以将该第二映射关系数组中的匹配到的匹配模式对应的值---三元组提取出来,该三元组中的接口方法名称对应的接口方法即为提取出的第二级URL对应的接口方法。
具体来说,本申请接口类文件包括接口方法文档注释,通过扫描接口方法文档注释可以得到接口方法与第二级URL之间的映射关系,接口方法文档注释自定义的接口方法标记如下:@GetMapping、@PostMapping、@PutMapping、@PatchMapping、@DeleteMapping,分别对应get接口方法、post接口方法、put接口方法、patch接口方法和delete接口方法的接口方法标记。
为了更好地理解本申请上述实施例中每个接口类对应的第一映射关系数组和该接口类下每个接口方法对应的第二映射关系数组的生成流程,以下述某个接口类对应的PHP接口类文件为例进行描述:
/**
*用户接口类
*@Controller
*@GetMapping /user
*/
classUserController {
/**
* 根据用户的ID获取用户信息
* @GetMapping/getById
*/
functiongetUserById ( int $id) {……}
}
可以对上述接口类文件进行扫描解析,首先遍历接口类文档注释标记中是否有@Controller标记,如果有,则可以获取设定映射标记@GetMapping定义的值---“/user”,而“/user”即为该接口类对应的第一级URL,则可以将“/user”作为键名,将该接口类名称作为值写入到第一映射关系数组中;然后继续遍历该接口类文件,判断是否有任一接口方法的接口方法标记,可以看出上述接口类文件中存在@GetMapping接口方法标记,则可以提取出该接口方法标记所定义的值---“/getById”,即get接口方法对应的第二级URL,该接口方法的接口方法名称为getUserById。为了写入到get接口方法对应的第二映射关系数组中,需要对“/getById”进行正则表达式处理,得到匹配模式,从而可以将得到的匹配模式作为键名,将get接口方法相关信息作为值,写入到get接口方法对应的第二映射关系数组中。
可选地,基于上述任一实施例,本实施例中第一数值数组和/或所述第三映射关系数组为按照图4所示的方法得到的:
S401、扫描该接口类文件,判断接口类文件是否存在过滤器标识;若存在过滤器标识,则执行步骤S402;若不存在过滤器标识,则执行步骤S403。
S402、将所述过滤器标识作为值存储于所述第一数值数组中。
S403、判断所述接口类文件是否存在拦截器标识;若存在拦截器标识,则执行步骤S404;若不存在则流程结束。
S404、从所述接口类文件中提取设定拦截标记所定义的值。
S405、将所述拦截器标识作为键名,将所述设定拦截标记所定义的值作为值存储于所述第三映射关系数组中。
具体地,接口类文件中接口方法注释标记还包括下述标记:
@Filter:标记接口方法是一个过滤方法,即用于标识过滤器方法;
@Before、@After:标记接口方法分别是一个前置或后置拦截方法,分别用于标识前置拦截器方法和后置拦截器方法;
@When:和@Before或@After结合使用,用于定义在方法文档注释中有何标记的时候,使拦截方法生效,如果缺省,则拦截方法会始终执行。
具体地,在扫描接口类文件时,可以在判断出接口类文件中不存在接口方法的接口方法标识,执行图4所示的流程;当然也可以直接扫描接口类文件执行图4所示的流程。当扫描到@Filter标记时,则可以确认接口类文件中存在过滤器标识,则此时可以将该过滤器标识作为值写入到第一数值数组中,其中,第一数值数组为普通的数值数组,仅存储过滤器标识即可。当不存在过滤器标识时,可以继续扫描接口类文件,然后判断接口类文件中是否有@Before或@After标记,若存在任一标记,则确认该接口类文件存在拦截器标识。然后从接口类文件中提取出设定拦截标记@When所定义的值,然后将拦截器标识作为键名,设定拦截标记@When所定义的值作为值,写入第三映射关系数组中。需要说明的是,实际应用中,从接口类文件中提取出的设定拦截标记@When所定义的值可以为空,当为空时,表明拦截器方法会始终执行。
需要说明的是,过滤器标识可以为过滤器名称,拦截器标识可以为拦截器名称。此外,本申请涉及的各个标记的表达方式仅是一种示例,并不构成对本申请的限定,实际应用中,也可以利用其他方式来表征各个标记。
通过增加拦截器功能和/或过滤功能,使得可以实现多种需要,实现网页处理请求的多样化需求处理,以提升服务器的安全防范性能。
基于同一发明构思,本申请还提供了与上述网页请求处理方法对应的网页请求处理装置。该网页请求处理装置的实施具体可以参考上述对网页请求处理方法的描述,此处不再一一论述。
参见图5,图5是本申请一示例性实施例提供的一种网页请求处理装置,包括:
接收模块501,用于接收网页请求,所述网页请求中携带有统一资源定位符URL;
提取模块502,用于从所述URL中提取出第一级URL和第二级URL,所述第一级URL用于表征所请求的接口类,所述第二级URL用于表征所请求的接口方法;
确定模块503,用于根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;
获取模块504,用于获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;
第一判断模块505,用于若基于获取到的接口方法与第二级URL之间的映射关系判断是否匹配到提取出的第二级URL对应的接口方法;
参数赋值模块506,用于若所述第一判断模块505的判断结果为是,则基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值;
处理模块507,用于调用赋值后的接口方法对所述网页请求进行处理,得到所述网页请求的请求处理结果。
可选地,每个接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中,则上述确定模块503,具体用于逐个遍历每个接口类对应的第一映射关系数组;当遍历到包括所述提取出的第一级URL的第一映射关系数组时,则确定该第一映射关系数组中存储的接口类为所述提取出的第一级URL对应的接口类。
可选地,每个接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中,则上述第一判断模块505,具体用于按照下述方法基于获取到的接口方法与第二级URL之间的映射关系判断是否匹配到提取出的第二级URL对应的接口方法:逐个遍历该接口类下的各个接口方法对应的第二映射关系数组;若存在包括所述提取出的第二级URL的第二映射关系数组,则确认匹配到接口方法,以及将该第二映射关系数组中存储的接口方法确定为匹配到的接口方法。
可选地,本实施例提供的网页请求处理装置,还包括:第二判断模块508,也请参考图5所示,其中:
上述第二判断模块508,用于在所述处理模块507调用赋值后的接口方法对所述网页请求进行处理之前,判断该接口类是否存在第三映射关系数组和/或第一数值数组;
在此基础上,上述处理模块507,还用于在所述第二判断模块508的判断结果为存在至少一个数组时,则调用过滤器方法或调用拦截器方法对所述网页请求进行处理;
其中,所述第三映射关系数组用于存储拦截器方法和所述拦截器方法所定义的值之间的映射关系;所述第一数值数组用于存储过滤器方法标识。
可选地,上述参数赋值模块506,具体用于判断匹配到的接口方法的形参的类型是否为设定基本类型;若判断结果为是,则利用所述请求数据中与匹配到的接口方法的形参相匹配的数据对所述匹配到的接口方法进行参数赋值;若判断结果为否,则实例化所述形参的类型对应的对象;将所述请求数据中与所述实例化的对象的对象属性相匹配的数据赋值给所述对象属性;利用赋值后的对象对匹配到的接口方法进行参数赋值。
进一步地,上述参数赋值模块506,具体用于当所述匹配到的接口方法包括单个形参时,则将所述请求数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性;当所述匹配到的接口方法包括多个形参时,则分别确定所述请求数据中与每个形参的参数名相匹配的子数据,并将该子数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性。
可选地,本实施例提供的网页请求处理装置,还包括:第一数组生成模块509,请参考图5所示,其中:
上述第一数组生成模块509,用于按照下述方法扫描得到每个接口类与其对应的第一级URL之间的映射关系:扫描该接口类对应的接口类文件;判断所述接口类文件中是否存在该接口类的接口类标识;若存在,则从所述接口类文件中提取该接口类对应的第一级URL;将该接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中。
需要说明的是,本实施例中第一数组生成模块509实施的执行过程可以在网页请求处理流程之前执行,即,在接收模块501接收网页请求之前执行第一映射关系数组的生成过程。
进一步地,上述第一数组生成模块509,具体用于从所述接口类文件中提取该接口类下设定映射标记所定义的值;将所述设定映射标记所定义的值作为键名,并判断所述第一映射关系数组中是否存在所述键名;若不存在,则将所述键名作为该接口类对应的第一级URL;
在此基础上,上述第一数组生成模块509,具体用于将该接口类的接口类标识作为值,所述设定映射标记所定义的值作为键名存储到该接口类对应的第一映射关系数组中。
可选地,本实施例提供的网页请求处理装置,还包括:第二数组生成模块510,也请参考图5所示,其中:
上述第二数组生成模块510,用于按照下述方法扫描得到每一接口类对应的接口方法与第二级URL之间的映射关系:扫描该接口类对应的接口类文件;判断所述接口类文件是否存在任一接口方法的接口方法标识;若存在,则从所述接口类文件中提取存在的接口方法标识对应的第二级URL;将该接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中。
进一步地,上述第二数组生成模块510,具体用于从所述接口类文件中提取存在的接口方法所定义的值;将该接口方法所定义的值作为所述接口方法对应的第二级URL;
在此基础上,上述第二数组生成模块510,具体用于对该接口方法所定义的值进行正则表达式处理,得到该接口方法的匹配模式;将所述匹配模式作为键名,该接口方法的相关信息作为值存储在该接口方法对应的第二映射关系数组中。
需要说明的是,本实施例中第二数组生成模块510实施的执行过程可以在第一数组生成模块509实施的执行过程之后实施,也可以与第一数组生成模块509实施的执行过程并行实施;当然也可以在第一数组生成模块509之前实施,具体可以根据实际的设置规则而定。当第二数组生成模块510在第一数组生成模块509之后实施时,要确保在接收模块501之前实施。
可选地,本实施例提供的网页请求处理装置,还包括:第三数组生成模块511,也请参考图5所示,其中:
上述第三数组生成模块511,用于按照下述方法得到所述第一数值数组和/或所述第三映射关系数组:判断所述接口类文件是否存在过滤器标识;若存在过滤器标识,则将所述过滤器标识作为值存储于所述第一数值数组中;若不存在过滤器标识,则判断所述接口类文件是否存在拦截器标识;若存在拦截器标识,则从所述接口类文件中提取设定拦截标记所定义的值;将所述拦截器标识作为键名,将所述设定拦截标记所定义的值作为值存储于所述第三映射关系数组中。
需要说明的是,本实施例中第三数组生成模块511实施的执行过程可以在第二数组生成模块510实施的执行过程之后实施,可以与第二数组生成模块510并行实施,当然也可以在第一数组生成模块509之前或之后实施,或者与第一数组生成模块509并行实施。当第三数组生成模块511在第一数组模块509之后实施时,要确保在网页请求的处理流程之前实施,即在接收模块501之前实施。
本申请实施例提供了一种服务器,如图6所示,包括处理器601和机器可读存储介质602,机器可读存储介质602存储有能够被处理器601执行的计算机程序,处理器601被计算机程序促使执行本申请实施例所提供的网页请求处理方法。
上述计算机可读存储介质可以包括RAM(Random Access Memory,随机存取存储器)、DDR SRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器),也可以包括NVM(Non-volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,计算机可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
另外,本申请实施例提供了一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例所提供的网页请求处理方法。
对于服务器以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述装置中各个单元/模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元/模块可以是或者也可以不是物理上分开的,作为单元/模块显示的部件可以是或者也可以不是物理单元/模块,即可以位于一个地方,或者也可以分布到多个网络单元/模块上。可以根据实际的需要选择其中的部分或者全部单元/模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (17)
1.一种网页请求处理方法,其特征在于,包括:
接收网页请求,所述网页请求中携带有统一资源定位符URL;
从所述URL中提取出第一级URL和第二级URL,所述第一级URL用于表征所请求的接口类,所述第二级URL用于表征所请求的接口方法;
根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;
获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;
若基于获取到的接口方法与第二级URL之间的映射关系匹配到提取出的第二级URL对应的接口方法,则基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值;
调用赋值后的接口方法对所述网页请求进行处理,得到所述网页请求的请求处理结果。
2.根据权利要求1所述的方法,其特征在于,每个接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中,则
根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类,包括:
逐个遍历每个接口类对应的第一映射关系数组;
当遍历到包括所述提取出的第一级URL的第一映射关系数组时,则确定该第一映射关系数组中存储的接口类为所述提取出的第一级URL对应的接口类。
3.根据权利要求2所述的方法,其特征在于,每个接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中,则
按照下述方法基于获取到的接口方法与第二级URL之间的映射关系判断是否匹配到提取出的第二级URL对应的接口方法,包括:
逐个遍历该接口类下的各个接口方法对应的第二映射关系数组;
若存在包括所述提取出的第二级URL的第二映射关系数组,则确认匹配到接口方法,以及将该第二映射关系数组中存储的接口方法确定为匹配到的接口方法。
4.根据权利要求1所述的方法,其特征在于,在调用赋值后的接口方法对所述网页请求进行处理之前,还包括:
判断该接口类是否存在第三映射关系数组和/或第一数值数组;
若存在一个数组,则调用过滤器方法或调用拦截器方法对所述网页请求进行处理;
若存在两个数组,则调用过滤器方法和调用拦截器方法对所述网页请求进行处理;
其中,所述第三映射关系数组用于存储拦截器方法和所述拦截器方法所定义的值之间的映射关系;所述第一数值数组用于存储过滤器方法标识。
5.根据权利要求1所述的方法,其特征在于,基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值,包括:
判断匹配到的接口方法的形参的类型是否为设定基本类型;
若判断结果为是,则利用所述请求数据中与匹配到的接口方法的形参相匹配的数据对所述匹配到的接口方法进行参数赋值;
若判断结果为否,则实例化所述形参的类型对应的对象;
将所述请求数据中与所述实例化的对象的对象属性相匹配的数据赋值给所述对象属性;
利用赋值后的对象对匹配到的接口方法进行参数赋值。
6.根据权利要求5所述的方法,其特征在于,将所述请求数据中与所述实例化的对象的对象属性相匹配的数据赋值给所述对象属性,包括:
当所述匹配到的接口方法包括单个形参时,则将所述请求数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性;
当所述匹配到的接口方法包括多个形参时,则分别确定所述请求数据中与每个形参的参数名相匹配的子数据,并将该子数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性。
7.根据权利要求2所述的方法,其特征在于,每个接口类与其对应的第一级URL之间的映射关系是按照下述方法扫描得到的:
扫描该接口类对应的接口类文件;
判断所述接口类文件中是否存在该接口类的接口类标识;
若存在,则从所述接口类文件中提取该接口类对应的第一级URL;
将该接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中。
8.根据权利要求7所述的方法,其特征在于,从所述接口类文件中提取该接口类对应的第一级URL,包括:
从所述接口类文件中提取该接口类下设定映射标记所定义的值;
将所述设定映射标记所定义的值作为键名,并判断所述第一映射关系数组中是否存在所述键名;
若不存在,则将所述键名作为该接口类对应的第一级URL;
则,将该接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中,包括:
将该接口类的接口类标识作为值,所述设定映射标记所定义的值作为键名存储到该接口类对应的第一映射关系数组中。
9.根据权利要求3所述的方法,其特征在于,每一接口类对应的接口方法与第二级URL之间的映射关系是按照下述方法扫描得到的:
扫描该接口类对应的接口类文件;
判断所述接口类文件是否存在任一接口方法的接口方法标识;
若存在,则从所述接口类文件中提取存在的接口方法标识对应的第二级URL;
将该接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中。
10.根据权利要求9所述的方法,其特征在于,从所述接口类文件中提取存在的接口方法标识对应的第二级URL,包括:
从所述接口类文件中提取存在的接口方法所定义的值;
将该接口方法所定义的值作为所述接口方法对应的第二级URL;
则,将该接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中,包括:
对该接口方法所定义的值进行正则表达式处理,得到该接口方法的匹配模式;
将所述匹配模式作为键名,该接口方法的相关信息作为值存储在该接口方法对应的第二映射关系数组中。
11.根据权利要求4所述的方法,其特征在于,所述第一数值数组和/或所述第三映射关系数组为按照下述方法得到的:
判断所述接口类文件是否存在过滤器标识;
若存在过滤器标识,则将所述过滤器标识作为值存储于所述第一数值数组中;
若不存在过滤器标识,则判断所述接口类文件是否存在拦截器标识;
若存在拦截器标识,则从所述接口类文件中提取设定拦截标记所定义的值;
将所述拦截器标识作为键名,将所述设定拦截标记所定义的值作为值存储于所述第三映射关系数组中。
12.一种网页请求处理装置,其特征在于,包括:
接收模块,用于接收网页请求,所述网页请求中携带有统一资源定位符URL;
提取模块,用于从所述URL中提取出第一级URL和第二级URL,所述第一级URL用于表征所请求的接口类,所述第二级URL用于表征所请求的接口方法;
确定模块,用于根据预先扫描得到的接口类与第一级URL之间的映射关系,确定提取出的第一级URL对应的接口类;
获取模块,用于获取确定出的接口类对应的接口方法与第二级URL之间的映射关系;
第一判断模块,用于若基于获取到的接口方法与第二级URL之间的映射关系判断是否匹配到提取出的第二级URL对应的接口方法;
参数赋值模块,用于若所述第一判断模块的判断结果为是,则基于所述网页请求中的请求数据,对匹配到的接口方法进行参数赋值;
处理模块,用于调用赋值后的接口方法对所述网页请求进行处理,得到所述网页请求的请求处理结果。
13.根据权利要求12所述的装置,其特征在于,每个接口类与该接口类对应的第一级URL之间的映射关系存储在该接口类对应的第一映射关系数组中,则
所述确定模块,具体用于逐个遍历每个接口类对应的第一映射关系数组;当遍历到包括所述提取出的第一级URL的第一映射关系数组时,则确定该第一映射关系数组中存储的接口类为所述提取出的第一级URL对应的接口类。
14.根据权利要求13所述的装置,其特征在于,每个接口方法与其对应的第二级URL之间的映射关系存储在该接口方法对应的第二映射关系数组中,则所述第一判断模块,具体用于按照下述方法基于获取到的接口方法与第二级URL之间的映射关系判断是否匹配到提取出的第二级URL对应的接口方法:逐个遍历该接口类下的各个接口方法对应的第二映射关系数组;若存在包括所述提取出的第二级URL的第二映射关系数组,则确认匹配到接口方法,以及将该第二映射关系数组中存储的接口方法确定为匹配到的接口方法。
15.根据权利要求12所述的装置,其特征在于,还包括:
第二判断模块,用于在所述处理模块调用赋值后的接口方法对所述网页请求进行处理之前,判断该接口类是否存在第三映射关系数组和/或第一数值数组;
所述处理模块,还用于在所述第二判断模块的判断结果为存在一个数组时,则调用过滤器方法或调用拦截器方法对所述网页请求进行处理;若所述第二判断模块的判断结果为存在两个数组,则调用过滤器方法和调用拦截器方法对所述网页请求进行处理;
其中,所述第三映射关系数组用于存储拦截器方法和所述拦截器方法所定义的值之间的映射关系;所述第一数值数组用于存储过滤器方法标识。
16.根据权利要求12所述的装置,其特征在于,
所述参数赋值模块,具体用于判断匹配到的接口方法的形参的类型是否为设定基本类型;若判断结果为是,则利用所述请求数据中与匹配到的接口方法的形参相匹配的数据对所述匹配到的接口方法进行参数赋值;若判断结果为否,则实例化所述形参的类型对应的对象;将所述请求数据中与所述实例化的对象的对象属性相匹配的数据赋值给所述对象属性;利用赋值后的对象对匹配到的接口方法进行参数赋值。
17.根据权利要求16所述的装置,其特征在于,
所述参数赋值模块,具体用于当所述匹配到的接口方法包括单个形参时,则将所述请求数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性;当所述匹配到的接口方法包括多个形参时,则分别确定所述请求数据中与每个形参的参数名相匹配的子数据,并将该子数据中与所述对象属性的属性名相匹配的数据赋值给所述对象属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010969719.1A CN111931087B (zh) | 2020-09-15 | 2020-09-15 | 一种网页请求处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010969719.1A CN111931087B (zh) | 2020-09-15 | 2020-09-15 | 一种网页请求处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931087A CN111931087A (zh) | 2020-11-13 |
CN111931087B true CN111931087B (zh) | 2021-02-05 |
Family
ID=73333766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010969719.1A Active CN111931087B (zh) | 2020-09-15 | 2020-09-15 | 一种网页请求处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931087B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112711627B (zh) * | 2020-12-29 | 2023-11-03 | 北京浪潮数据技术有限公司 | 一种Greenplum数据库的数据导入方法、装置及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357781A (zh) * | 2016-09-29 | 2017-01-25 | 郑州云海信息技术有限公司 | 一种资源服务调用接口创建方法及系统 |
CN106354481A (zh) * | 2015-07-13 | 2017-01-25 | 阿里巴巴集团控股有限公司 | 对http请求进行统一映射的方法和设备 |
CN106528422A (zh) * | 2016-11-10 | 2017-03-22 | 中国银联股份有限公司 | 一种检测Java程序页面扰动的方法和装置 |
CN107168871A (zh) * | 2017-04-28 | 2017-09-15 | 安徽四创电子股份有限公司 | 一种在RESTful接口开发中快速调试的方法 |
CN107203562A (zh) * | 2016-03-18 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 计算机执行的基于页面解析进行自动化检查的方法和装置 |
CN109688202A (zh) * | 2018-12-04 | 2019-04-26 | 北京腾云天下科技有限公司 | 一种接口数据的处理方法、装置、计算设备及存储介质 |
CN110134529A (zh) * | 2019-04-17 | 2019-08-16 | 重庆天蓬网络有限公司 | 一种基于浏览器进入容器能力的解决方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110321010A1 (en) * | 2010-06-24 | 2011-12-29 | Yifei Wang | Web application framework based on object oriented class mapping |
CN102567400B (zh) * | 2010-12-31 | 2014-09-03 | 阿里巴巴集团控股有限公司 | 一种实现Web访问的方法和Web服务器 |
US10574724B2 (en) * | 2017-01-06 | 2020-02-25 | Western Digital Technologies, Inc. | Automatic discovery of management nodes and generation of CLI using HA module |
CN111240668A (zh) * | 2018-11-28 | 2020-06-05 | 常熟昊虞电子信息科技有限公司 | 一种基于Spring MVC构建用户界面框架的方法 |
CN109977330A (zh) * | 2019-03-12 | 2019-07-05 | 平安科技(深圳)有限公司 | 基于动态访问路径的网页访问方法及相关设备 |
CN111552464A (zh) * | 2020-04-27 | 2020-08-18 | 上海鸿翼软件技术股份有限公司 | 一种sdk生成方法、装置、设备及介质 |
-
2020
- 2020-09-15 CN CN202010969719.1A patent/CN111931087B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354481A (zh) * | 2015-07-13 | 2017-01-25 | 阿里巴巴集团控股有限公司 | 对http请求进行统一映射的方法和设备 |
CN107203562A (zh) * | 2016-03-18 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 计算机执行的基于页面解析进行自动化检查的方法和装置 |
CN106357781A (zh) * | 2016-09-29 | 2017-01-25 | 郑州云海信息技术有限公司 | 一种资源服务调用接口创建方法及系统 |
CN106528422A (zh) * | 2016-11-10 | 2017-03-22 | 中国银联股份有限公司 | 一种检测Java程序页面扰动的方法和装置 |
CN107168871A (zh) * | 2017-04-28 | 2017-09-15 | 安徽四创电子股份有限公司 | 一种在RESTful接口开发中快速调试的方法 |
CN109688202A (zh) * | 2018-12-04 | 2019-04-26 | 北京腾云天下科技有限公司 | 一种接口数据的处理方法、装置、计算设备及存储介质 |
CN110134529A (zh) * | 2019-04-17 | 2019-08-16 | 重庆天蓬网络有限公司 | 一种基于浏览器进入容器能力的解决方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111931087A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210097112A1 (en) | Webpage data processing method and device, computer device and computer storage medium | |
CN102298614A (zh) | 一种确定网页收藏信息的收藏分类的方法、装置和设备 | |
CN104951508B (zh) | 时间信息识别方法和装置 | |
CN107995153B (zh) | 表单数据验证方法及表单数据验证装置 | |
CN110532107B (zh) | 接口调用方法、装置、计算机设备及存储介质 | |
CN110688598A (zh) | 业务参数采集方法、装置、计算机设备和存储介质 | |
CN110472165B (zh) | Url提取方法、装置、设备及计算机可读存储介质 | |
CA2951659A1 (en) | Methods for analyzing web sites using web services and devices thereof | |
CN111931087B (zh) | 一种网页请求处理方法及装置 | |
US10095792B2 (en) | Method and apparatus for providing search services interactively displaying a type of search target | |
CN111083054B (zh) | 路由配置处理方法、装置、计算机设备和存储介质 | |
CN110674427B (zh) | 响应网页访问请求的方法、装置、设备及存储介质 | |
CN111597490A (zh) | Web指纹识别方法、装置、设备及计算机存储介质 | |
CN113360300B (zh) | 接口调用链路生成方法、装置、设备及可读存储介质 | |
CN110706035A (zh) | 一种更新效果的评价方法、装置、存储介质及电子设备 | |
CN102999580A (zh) | 密码输入框元素处理方法及浏览器 | |
CN103778181B (zh) | 浏览器收藏夹中图标的导入方法及装置 | |
CN113486267B (zh) | 应用入口页面的解析方法、装置、设备及存储介质 | |
CN114401319A (zh) | 一种请求处理方法、装置、服务器及存储介质 | |
CN113468446A (zh) | 一种支持识别第三方二维码数据的方法、系统及设备 | |
KR20160132854A (ko) | 콘텐츠의 캡처를 통한 자산 수집 서비스 제공 기법 | |
CN110750739B (zh) | 一种页面类型确定方法及装置 | |
CN108093072B (zh) | 站内访问路径的获取方法、装置及存储介质 | |
CN106815245B (zh) | 搜索引擎来源信息的解析方法及装置 | |
CN114611028A (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 |