数据访问方法、系统和网关服务设备
文献发布时间:2024-04-29 00:47:01
技术领域
本公开属于互联网技术领域,具体涉及一种数据访问方法、系统和网关服务设备。
背景技术
目前,单个前端服务在实际应用过程中需要依赖各种不同的代理服务,前端服务通常利用HTTP协议传输数据,以访问代理服务。在复杂化的互联网应用服务中,前端服务不可避免的涉及到对多种不同代理服务的调用,而前端服务访问代理服务时需要重新包装修改处理对应的访问请求,以及代理服务向前端服务反馈响应数据时,同样需要重新包装修改处理这些响应,通常这些处理都是重复的工作量堆积。
发明内容
本公开旨在至少解决现有技术中存在的技术问题之一,提供一种数据访问方法、系统和网关服务设备。
第一方面,解决本公开技术问题所采用的技术方案是一种数据访问方法,其中,包括:
响应于接收到各个用户分别发起的、针对代理服务端的第一访问请求,对各个所述第一访问请求进行统一的网关鉴权,并针对任意一个验证通过的第一访问请求,创建所述第一访问请求对应的目标代理服务端的第二访问请求;
基于各个所述第二访问请求,分别获取与所述第二访问请求对应的服务访问凭证;所述服务访问凭证为预先存储的所述目标代理服务端的访问凭证;
基于所述第二访问请求和与之对应的所述服务访问凭证,访问所述目标代理服务端。
在一些实施例中,所述对各个所述第一访问请求进行统一的网关鉴权,包括:
按照所述第一访问请求中指示用户的相关信息,获取预先存储的、已经授权给用户的用户授权凭证;
对所述第一访问请求进行解析,得到所述第一访问请求所携带的用户凭证;
将所述用户授权凭证与所述用户凭证进行匹配,且在所述用户授权凭证与所述用户凭证一致的情况下,确定所述第一访问请求的网关鉴权验证通过。
在一些实施例中,所述创建所述第一访问请求对应的目标代理服务端的第二访问请求,包括:
对所述第一访问请求进行解析,确定所述第一访问请求的请求类型,并判断所述第一访问请求是否具有第一请求头信息;
基于所述请求类型,确定所述第一访问请求的第一复制策略;
基于对所述第一访问请求是否具有第一请求头信息的判断结果,确定所述第一访问请求的第二复制策略;
按照所述第一复制策略、所述第二复制策略和预先制定的第三复制策略,对所述第一访问请求进行处理,得到所述第二访问请求。
在一些实施例中,所述基于对所述第一访问请求是否具有第一请求头信息的判断结果,确定所述第一访问请求的第二复制策略,包括:
在所述第一访问请求携带有所述第一请求头信息的情况下,验证所述第一请求头信息中是否存在不支持的处理格式,在所述第一请求头信息中不存在不支持的处理格式的情况下,确定所述第二复制策略为指示复制所述第一请求头信息作为第二请求头信息的策略;
在所述第一访问请求未携带有所述第一请求头信息的情况下,确定所述第二复制策略为指示调用预先制定的请求头作为所述第二请求头信息的策略。
在一些实施例中,所述验证所述第一请求头信息中是否存在不支持的处理格式,还包括:
在所述第一请求头信息中存在不支持的处理格式的情况下,确定所述第二复制策略为指示调整所述第一请求头信息中不支持的处理格式为可支持处理格式,并复制调整后的所述第一请求头信息作为第二请求头信息的策略。
在一些实施例中,所述按照所述第一复制策略、所述第二复制策略和预先制定的第三复制策略,对所述第一访问请求进行处理,得到所述第二访问请求,包括:
按照所述第一复制策略的指示,对所述第一访问请求中所述请求类型对应的查询参数进行处理,得到处理后的查询参数;
按照所述第二复制策略的指示,基于所述第一请求头信息,确定第二请求头信息;
按照所述第三复制策略的指示,将所述第一访问请求中的网络地址前缀替换为所述目标代理服务端的实际网络地址前缀;
基于所述处理后的查询参数、所述第二请求头信息和所述实际网络地址前缀,生成第二访问请求。
在一些实施例中,所述基于所述第二访问请求和与之对应的所述服务访问凭证,访问所述目标代理服务端,包括:
基于所述第二访问请求,确定所述目标代理服务端的凭证传递方式;
基于所述凭证传递方式和所述服务访问凭证,生成第三访问请求;
基于所述第三访问请求,访问所述目标代理服务端。
在一些实施例中,所述基于所述凭证传递方式和所述服务访问凭证,生成第三访问请求,包括:
在所述目标代理服务端的凭证传递方式为查询参数传递、且所述第二访问请求中存在查询参数的情况下,将所述服务访问凭证添加至所述所述第二访问请求中的查询参数中,生成第三访问请求。
在一些实施例中,所述基于所述凭证传递方式和所述服务访问凭证,生成第三访问请求,包括:
在所述目标代理服务端的凭证传递方式为查询参数传递、且所述第二访问请求中不存在查询参数的情况下,在所述第二访问请求中插入预设拼接符,并添加所述服务访问凭证,生成第三访问请求。
在一些实施例中,所述基于所述凭证传递方式和所述服务访问凭证,生成第三访问请求,包括:
在所述目标代理服务端的凭证传递方式为请求头传递的情况下,将所述服务访问凭证添加至所述所述第二请求头信息中,生成第三访问请求。
在一些实施例中,所述基于所述第三访问请求,访问所述目标代理服务端,包括:
响应于接收到所述目标代理服务端基于所述第三访问请求所反馈的访问结果,对所述访问结果进行解析,确定所述用户所请求的实际访问数据、响应头信息和协议状态码;
基于所述用户所请求的实际访问数据、响应头信息和协议状态码,生成响应结果,并将所述响应结果反馈给所述用户。
在一些实施例中,存储所述目标代理服务端的服务访问凭证的步骤包括:
接收所述目标代理服务端发送的服务访问凭证,并存储;
所述服务访问凭证为所述目标代理服务端在所述用户登录时基于所述用户标识生成的键值对;或者,所述服务访问凭证为所述目标代理服务端基于自身身份信息生成的唯一授权凭证。
第二方面,本公开实施例还提供了一种网关服务设备,被配置为获取不同用户分别发起的、针对代理服务端的第一访问请求;对各个所述第一访问请求进行统一的网关鉴权,并针对任意一个验证通过的第一访问请求,创建所述第一访问请求对应的目标代理服务端的第二访问请求;基于各个所述第二访问请求,分别获取与所述第二访问请求对应的服务访问凭证;所述服务访问凭证为预先存储的所述目标代理服务端的访问凭证;基于所述第二访问请求和与之对应的所述服务访问凭证,访问所述目标代理服务端。
第三方面,本公开实施例还提供了一种数据访问系统,包括多个前端服务端,网关服务设备和多个代理服务端;
所述前端服务端,被配置为向所述网关服务端发起针对代理服务端的第一访问请求;
所述网关服务设备,被配置为响应于接收到各个用户分别发起的、针对代理服务端的第一访问请求,对各个所述第一访问请求进行统一的网关鉴权,并针对任意一个验证通过的第一访问请求,创建所述第一访问请求对应的目标代理服务端的第二访问请求;基于各个所述第二访问请求,分别获取与所述第二访问请求对应的服务访问凭证;所述服务访问凭证为预先存储的所述目标代理服务端的访问凭证;基于所述第二访问请求和与之对应的所述服务访问凭证,访问所述目标代理服务端。
第四方面,本公开实施例还提供了一种计算机非瞬态可读存储介质,该计算机非瞬态可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面中任一项所述的数据访问方法的步骤。
附图说明
图1为本公开实施例提供的一种数据访问方法的流程图;
图2为本公开实施例提供的数据访问方法的流程示意图;
图3为本公开实施例提供的一种数据访问系统的示意图;
图4为本公开实施例提供的数据访问系统的访问流程示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
在本公开中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在对本公开具体内容进行说明之前,对本公开涉及到的特殊名词做具体性说明。
1、Spring框架,是一个从实际开发中抽取出来的框架,其完成了大量开发中的通用步骤。Spring框架包括轻量级核心框架和灵活的MVC Web应用框架。基于该Spring框架可以实现大部分Java的实际应用开发。
2、Spring Boot是一种全新Java框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该Spring Boot框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot框架提供了构建Web应用程序的全功能MVC模块。MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(javaBean:封装数据)分开构成了MVC。Spring MVC分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
3、JSON Web Token(JWT)是一种跨域身份验证解决方案,具体通过客户端保存数据,而服务器根本不保存会话数据,每个请求都被发送回服务器。JWT的原则是在服务器身份验证之后,将生成一个JSON对象并将其发送回用户。之后,当用户与服务器通信时,客户在请求中发回JSON对象。服务器仅依赖于这个JSON对象来标识用户。为了防止用户篡改数据,服务器将在生成对象时添加签名。JWT的数据结构包括JWT头、有效载荷和签名的一个长字串。其中,JWT头部分是一个描述JWT元数据的JSON对象;有效载荷部分,是JWT的主体内容部分,也是一个JSON对象,包含需要传递的数据。签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。
4、Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
5、URL,Uniform Resource Locator,统一资源定位系统,是因特网的万维网服务程序上用于指定信息位置的表示方法。通常用于表示请求访问网页的地址。
6、HTTP,HyperText Transfer Protocol,超文本传输协议,是一个简单的请求-响应协议。
7、W3C,World Wide Web Consortium,万维网联盟,是Web技术领域的一种技术标准机构,支撑互联网技术的应用。
8、GET、POST、PUT、DELETE、HEAD、PATCH和OPTIONS为HTTP协议的请求类型。
9、在WEB开发中,query和params是两个经常用到的概念,是用来传递数据的方式,但是有一些不同之处。params是URL的一部分,通常用于传递资源的标识符或者唯一标识符。例如,一个博客网站的文章详情页面的URL可能是/blog/posts/123,其中的123就是params,表示这个页面展示的是博客文章的ID为123的那篇。query则是URL中的另一部分,用于传递一些查询信息,比如搜索关键词、排序方式、分页等等。在URL中,query通常以?开头,然后是一些键值对,用&符号连接。例如,一个博客网站的文章列表页面的URL可能是:/blog/posts?sort=created_at&order=desc&page=2,其中的sort、order、page就是query的信息,表示按照创建时间降序排列,显示第二页的文章列表。
10、from表单是一个包含表单元素的区域,用于向服务器传输数据,从而实现用户与WEB服务器的交互。其中,表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表(select)等等。可以使用