CN112905919B - 后端应用调用方法、装置、计算机设备和可读存储介质 - Google Patents

后端应用调用方法、装置、计算机设备和可读存储介质 Download PDF

Info

Publication number
CN112905919B
CN112905919B CN202110278295.9A CN202110278295A CN112905919B CN 112905919 B CN112905919 B CN 112905919B CN 202110278295 A CN202110278295 A CN 202110278295A CN 112905919 B CN112905919 B CN 112905919B
Authority
CN
China
Prior art keywords
metadata
dubbo
url
end application
database
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
Application number
CN202110278295.9A
Other languages
English (en)
Other versions
CN112905919A (zh
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.)
Hangzhou Tuya Information Technology Co Ltd
Original Assignee
Hangzhou Tuya Information 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 Hangzhou Tuya Information Technology Co Ltd filed Critical Hangzhou Tuya Information Technology Co Ltd
Priority to CN202110278295.9A priority Critical patent/CN112905919B/zh
Publication of CN112905919A publication Critical patent/CN112905919A/zh
Application granted granted Critical
Publication of CN112905919B publication Critical patent/CN112905919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents

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)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种后端应用调用方法、装置、计算机设备和可读存储介质,其中,该方法包括:在后端应用启动时,第三方组件将后端应用与url的映射关系写入到数据库中;其中,后端应用接入第三方组件,第三方组件以注解形式指定后端应用的元数据对应的url;接收用户的http请求,并解析得到http请求中的url;根据http请求的url进行路径匹配,在数据库中匹配得到url对应的后端应用的元数据;根据所述后端应用的元数据,进行dubbo调用;dubbo调用的返回值返回后,根据所述元数据中返回值的信息,通过反射转化成http请求的返回值。整个过程无需进行任何手动配置,且解决了无法自动感知后端服务变动以及网关泛化调用元数据获取难题。

Description

后端应用调用方法、装置、计算机设备和可读存储介质
技术领域
本申请涉及物联网技术领域,特别是涉及一种后端应用调用方法、装置、 计算机设备和可读存储介质。
背景技术
前端服务用于处理客户端的请求,在传统的计算机系统中,客户端请求被 分层实现,前端处理用户交互操作的请求。前端服务一般运行在浏览器或者应 用软件等终端软件中。当前端与后台进行数据通讯时,前端通过网关会向后端 发起请求。该请求的实现一般直接由后端提供服务。
现有的技术主要是通过用户去管理台手动输入zookeeper地址让网关感知到 后端dubbo provider的存在。后端的服务提供者需要每次在发布接口后,去网关 管理台手动输入服务的注册地址。传统的做法需要后端provider提供者手动的配 置服务,无法自动感知服务的变动,同时也没有提供自动获取dubbo泛化调用 需要的元数据的能力。
目前针对相关技术中的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种后端应用调用方法、装置、计算机设备和可读存 储介质,以至少解决相关技术中无法自动感知后端服务变动的问题。
第一方面,本申请实施例提供了一种后端应用调用方法,所述后端应用接 入第三方组件,所述第三方组件以注解形式指定所述后端应用对应的url;包括:
在接收到用户的http请求后,对所述http请求进行解析,得到所述http请 求的url;
根据所述http请求的url进行路径匹配,在数据库中匹配得到所述url对应 的后端应用的元数据;所述数据库中包括:在所述后端应用启动时,所述第三 方组件写入的所述后端应用的元数据与url的映射关系;
根据所述后端应用的元数据,进行dubbo调用;
dubbo调用的返回值返回后,根据所述元数据中返回值的信息,通过反射转 化成http请求的返回值。
在其中一些实施例中,在所述根据所述http请求的url进行路径匹配之前, 所述方法还包括:
在后端应用启动时,判断所述后端应用是否依赖所述第三方组件;
若依赖,则所述第三方组件遍历spring容器,获取dubbo接口List;
若当前dubbo接口List中无dubbo接口,则返回启动失败信息;
若当前dubbo接口List中有dubbo接口,则遍历所述dubbo接口对应的后 端应用的元数据,并将元数据写入到元数据List中;
对所述元数据List进行权限校验,若校验通过,则将所述后端应用的元数 据与url的映射关系写入到数据库中。
在其中一些实施例中,所述对元数据List进行权限校验包括:
根据所述元数据List,获取后端应用的应用名;
将url作为主key从所述数据库中拉取对应的记录;
若所述数据库中存在所述url对应的记录,则判断所述记录中的应用名是否 和所述应用名相同;若不同,则返回错误信息。
在其中一些实施例中,所述对元数据List进行权限校验包括:
在后端应用启动时,获取所述后端应用的应用名;
从数据库中获取所述应用名对应的dubbo接口,并和当前接口List进行比 较;
若数据库中存在所述dubbo接口,当前接口List中不存在,则将数据库中 所述dubbo接口对应的数据删除;
若数据库中不存在所述dubbo接口,当前接口List中存在,则将所述dubbo 接口以url作为主key,写入到所述数据库中;
若所述数据库中和所述当前接口List中均存在所述dubbo接口,则比较所 述dubbo接口中的元数据,若所述元数据不同,则将所述dubbo接口的元数据 更新到数据库中。
在其中一些实施例中,所述将元数据写入到元数据List中包括:
判断所述元数据中的参数名称是否编译擦除;
若未获取到参数名称,则返回错误信息;
若获取到参数名称,则判断所述参数名称中是否有VO对象,若无,则将 元数据写入到元数据List中;
若有,则校验所述VO对象是否满足Field规则,若满足,则将元数据写入 到元数据List中。
在其中一些实施例中,所述后端应用对应的元数据包括:函数名、dubbo接 口名、函数参数、函数参数类型和函数返回值。
第二方面,本申请实施例提供了一种网关的应用方法,所述方法包括:
开启http服务;
接收到用户http请求后,根据请求的方法(GET,POST,PUT)和请求的url 组装成pattern,在上述的数据库中查询是否有对应的pattern;
若没有,则返回错误;
若有,则获取所述pattern对应的元数据;
根据元数据中的参数的名字,从所述http请求的header,uri,body中获取 参数的值,然后进行dubbo泛化调用;
dubbo返回后,根据元数据中的返回值的信息,通过反射转化成标准的http 请求的返回值。
第三方面,本申请实施例提供了一种后端应用调用装置,所述装置包括:
第三方组件,用于以注解形式指定所述后端应用对应的url;
写入模块,用于在后端应用启动时,所述第三方组件将所述后端应用的元 数据与url的映射关系写入到数据库中;
解析模块,用于在接收到用户的http请求后,解析得到所述http请求中的 url;
匹配模块,用于根据所述http请求的url进行路径匹配,在所述数据库中匹 配得到所述url对应的后端应用的元数据;
调用模块,用于根据所述后端应用的元数据,将所述http请求转换成对应 的dubbo协议,进行dubbo调用;
返回模块,用于将dubbo调用的返回值转换成http协议的返回值并返回至 用户。
第四方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以 及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执 行所述计算机程序时实现如上述第一方面所述的后端应用调用方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计 算机程序,该程序被处理器执行时实现如上述第一方面所述的后端应用调用方 法。
相比于相关技术,本申请实施例提供的后端应用调用方法,所述后端应用 接入第三方组件,所述第三方组件以注解形式指定所述后端应用对应的url;在 后端应用启动时,所述第三方组件将所述后端应用的元数据与url的映射关系写 入到数据库中;接收用户的http请求,并解析得到所述http请求中的url;根据 所述http请求的url进行路径匹配,在所述数据库中匹配得到所述url对应的后 端应用的元数据根据所述后端应用的元数据,进行dubbo调用;dubbo调用的返 回值返回后,根据所述元数据中返回值的信息,通过反射转化成http请求的返 回值,解决了相关技术中无法自动感知后端服务变动的问题,且可以自动获取 dubbo泛化调用需要的元数据,整个过程无需进行任何手动配置。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请 的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分, 本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限 定。在附图中:
图1是本申请实施例提供的后端应用调用方法的流程图;
图2为本申请实施例提供的网关应用方法的流程图;
图3是根据本申请实施例的后端应用调用装置的结构示意图;
图4是本申请实施例提供的计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用 以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通 技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本 申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于 本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些 附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过 程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关 的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些 设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的 内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或 特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短 语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的 实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施 例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属 技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一 个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申 请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖 不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、 产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤 或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单 元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理 的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本 申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系, 表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在 A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或” 的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的 对象,不代表针对对象的特定排序。
图1是根据本申请实施例的后端应用调用方法的流程图,如图1所示,该 流程包括如下步骤:
步骤110,在接收到用户的http请求后,对http请求进行解析,得到所述 http请求的url;
统一资源定位系统(uniform resource locator,URL)是因特网的万维网服务 程序上用于指定信息位置的表示方法。当浏览器向Web服务器发出请求时,它 向服务器传递了一个数据块,也就是http请求信息,http请求信息由3部分组成: (1)请求方法URI协议/版本(2)请求头(Request Header)(3)请求正文。 http请求的第一行是“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1, 以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协 议和协议的版本。
URI在于I(Identifier)是统一资源标示符,可以唯一标识一个资源。URL在 于Locater,一般来说(URL)统一资源定位符,可以提供找到该资源的路径, 比如http://www.zhihu.com/question/21950864,但URL又是URI,因为它可以标 识一个资源,所以URL又是URI的子集。
步骤120,根据所述http请求的url进行路径匹配,在数据库中匹配得到所 述url对应的后端应用的元数据;所述数据库中包括:在所述后端应用启动时, 所述第三方组件写入的所述后端应用的元数据与url的映射关系;其中,第三方 组件可以为插件。在其中一些实施例中,所述后端应用对应的元数据包括:函 数名、dubbo接口名、函数参数、函数参数类型和函数返回值。
步骤130,根据所述后端应用的元数据,进行dubbo调用;
dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过 高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接 口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
步骤140,dubbo调用的返回值返回后,根据所述元数据中返回值的信息, 通过反射转化成http请求的返回值。
传统地,后端应用服务需手动配置服务信息,后端应用的服务提供者需要 在每次发布接口后,去网关管理台手动输入后端应用服务的注册地址。且网关 泛化调用元数据需要人工手动去获取,自动化程度较低。
与现有方案相比,本申请通过第三方组件让后端服务提供者可以通过编码 的方式直接将dubbo接口信息暴漏给前端网关,整个过程无需进行任何手动配 置。第三方组件是后端服务使用的,当后端服务启动的时候,第三方组件会自 动的将接口的元数据和对应的url写入到数据库中,网关收到http请求后,会根 据url去数据库中查找对应的元数据。解决网关泛化调用元数据获取难题,通过 第三方组件自动检索dubbo接口的元数据,并将元数据以及元数据与dubbo接 口的映射关系写入数据库。前端网关收到restful调用的时候可以去数据库中获 取对应的url的dubbo接口元数据。
在其中一些实施例中,所述在后端应用启动时,在所述根据所述http请求 的url进行路径匹配之前,所述方法还包括:
在后端应用启动时,判断所述后端应用是否依赖所述第三方组件;
若依赖,则所述第三方组件遍历spring容器,获取dubbo接口List;
若当前dubbo接口List中无dubbo接口,则返回启动失败;
若当前dubbo接口List中有dubbo接口,则遍历所述dubbo接口对应的后 端应用的元数据,并将元数据写入到元数据List中;
对所述元数据List进行权限校验,若校验通过,则将所述后端应用的元数 据与url的映射关系写入到数据库中。
在其中一些实施例中,对元数据List进行权限校验包括:
根据所述元数据List,获取后端应用的应用名;
将url作为主key从所述数据库中拉取对应的记录;
若所述数据库中存在所述url对应的记录,则判断所述记录中的应用名是否 和所述应用名相同;若不同,则返回错误信息。
在其中一些实施例中,所述对所述元数据List进行权限校验包括:
在后端应用启动时,获取所述后端应用的应用名;
从数据库中获取所述应用名对应的dubbo接口,并和当前接口List进行比 较;
若数据库中存在所述dubbo接口,当前接口List中不存在,则将数据库中 所述dubbo接口对应的数据删除;
若数据库中不存在所述dubbo接口,当前接口List中存在,则将所述dubbo 接口以url作为主key,写入到所述数据库中;
若所述数据库中和所述当前接口List中均存在所述dubbo接口,则比较所 述dubbo接口中的元数据,若所述元数据不同,则将所述dubbo接口的元数据 更新到数据库中。
用户通过将后端应用程序接入插件,指定接口API对应的url和method (GET,POST,PUT)。method:url作为(pattern),是全局唯一的。
启动应用,自动判断是否依赖插件,如果依赖,插件开始处理接口数据。
插件遍历spring容器,收集dubbo接口的名称List。
若当前无dubbo接口,直接返回启动失败,告知用户无dubbo服务。
遍历dubbo接口的函数元数据,包括函数名,函数入参类型,函数入参名, 函数返回值类型,函数返回值名,并将信息保存在元数据List中。
判断元数据List是否为空,如果为空返回启动失败。
判断应用中指定的pattern是否有重复的,如果有返回错误。
根据spring.application.name或者接口名com.tuya.xx(xx代表应用名),获 取应用名,如果应用名为空则返回错误。
根据pattern作为主key从数据库中拉取对应的记录。
如果数据库中有该记录,判断该pattern对应的应用名是否和该应用相同, 如果不同,则说明该pattern已被注册使用,返回错误。
从数据库中获取该应用对应的所有的pattern,然后和本次做比较。
如果数据库中存在该应用对应的pattern,但本次接口List中没有,证明是 用户下线该接口,将数据库中对应的数据删除。
如果数据库中没有该应用对应的pattern,但本次接口List中有,证明是新 增接口,将该接口以pattern作为主key,写入数据库中。
如果数据库中和本次接口List中都有,则比较接口的元数据,如果元数据 不同,证明是更新接口,将该接口元数据更新到数据库中。
API权限校验具体如下:在当前应用API列表key查询Redis的元数据List, 抓取dubbo接口中的AppName,判断Redis的元数据List的接口中AppName 是否为空,若不为空,则进一步判断AppName是否都是当前应用的AppName, 若出现别的AppName,则启动失败,若只出现自己的AppName,则判断自身应 用是否是第一次注册元数据。若Redis的元数据List的接口中AppName为空, 则判断自身应用是否是第一次注册元数据。若是第一次注册启动,则跳过当前 API权限校验,校验完成。若不是第一次注册启动,则找出上次注册的元数据,比对上次注册的元数据与当前元数据,得到差异集合。若差异集合不为空,则 去除差异APIkey,校验完成。在校验完成后,更新自身应用API-key的Zset, 更新公共所有的API-key的Zset,更新对应的API元数据详情。
在其中一些实施例中,将元数据写入到元数据List中包括:
判断所述元数据中的参数名称是否编译擦除;
若未获取到参数名称,则返回错误信息;
若获取到参数名称,则判断所述参数名称中是否有VO对象,若无,则将 元数据写入到元数据List中;
若有,则校验所述VO对象是否满足Field规则,若满足,则将元数据写入 到元数据List中。
VO对象是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻 辑使用的,它存活的目的就是为数据提供一个生存的地方。
Field规则包括:(1)VO对象是否为接口、抽象类:no interface or no abstract;(2)VO对象Field是否为空:class field not empty;(3)field为List、Map等 泛化类型:字段类型不支持jdk的集合类型,后续找机会支持;(4)数组field 只接受JDK自身,不包括集合类型。
本申请还提供一种网关的应用方法,如图2所示,所述方法包括:
开启http服务;
接收到用户http请求后,根据请求的方法(GET,POST,PUT)和请求的url 组装成pattern,在上述实施例提供的数据库中查询是否有对应的pattern;
若没有,则返回错误信息;
若有,则获取所述pattern对应的元数据;
根据元数据中的参数的名字,从所述http请求的header,uri,body中获取 参数的值,然后进行dubbo泛化调用;
Dubbo调用的返回值返回后,根据元数据中返回值的信息,通过反射转化 成http请求的返回值。
本实施例中,后端java服务接入插件(第三方组件),该插件通过注解形式 让用户可以指定自己接口对应的前端URL地址,插件会在程序启动前扫描该接 口的函数名,接口名,函数参数,函数参数类型,函数返回值等信息,然后将 URL和接口的对应关系写入到数据库(Mysql)中。网关收到restful请求的时候, 会去数据库中获取该url对应的接口,函数,函数入参等原始信息,通过泛化调 用后端dubbo接口。网关侧无需进行任何配置,可自动根据URL匹配后端接口, 并进行调用。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如 一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻 辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步 骤。
本实施例还提供了一种后端应用调用装置,该装置用于实现上述实施例及 优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、 “单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实 施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的 实现也是可能并被构想的。
图3是根据本申请实施例的后端应用调用装置的结构框图,如图3所示, 该装置包括:
第三方组件310,用于以注解形式指定所述后端应用对应的url;
写入模块320,用于在后端应用启动时,通过第三方组件将所述后端应用的 元数据与url的映射关系写入到数据库中;
解析模块330,用于接收用户的http请求,并解析得到所述http请求中的 url;
匹配模块340,用于根据所述http请求的url进行路径匹配,在所述数据库 中匹配得到所述url对应的后端应用的元数据;
调用模块350,用于根据所述后端应用的元数据,将所述http请求转换成对 应的dubbo协议,进行dubbo调用;
返回模块360,用于将dubbo调用的返回值转换成http协议的返回值并返回 至用户。
本申请通过第三方组件让后端服务提供者可以通过编码的方式直接将接口 信息暴漏给前端网关,整个过程无需进行任何手动配置。第三方组件是后端服 务使用的,当后端服务启动的时候,第三方组件会自动的将接口的元数据和对 应的url写入到数据库中,网关收到http请求后,会去数据库中根据url查找对 应的元数据。解决网关泛化调用元数据获取难题,通过第三方组件自动检索 dubbo接口的元数据,并将其写入数据库。前端网关收到restful调用的时候可以 去数据库中获取对应的url的dubbo接口元数据。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以 通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言, 上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合 的形式分别位于不同的处理器中。
另外,结合图1描述的本申请实施例后端应用调用方法可以由计算机设备 来实现。图4为根据本申请实施例的计算机设备的硬件结构示意图。
计算机设备可以包括处理器41以及存储有计算机程序指令的存储器42。
具体地,上述处理器41可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施 本申请实施例的一个或多个集成电路。
其中,存储器42可以包括用于数据或指令的大容量存储器。举例来说而非 限制,存储器42可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱 动器、固态驱动器(Solid State Drive,简称为SSD)、闪存、光盘、磁光盘、磁 带或通用串行总线(UniversalSerial Bus,简称为USB)驱动器或者两个或更多 个以上这些的组合。在合适的情况下,存储器42可包括可移除或不可移除(或 固定)的介质。在合适的情况下,存储器42可在数据处理装置的内部或外部。 在特定实施例中,存储器42是非易失性(Non-Volatile)存储器。在特定实施例 中,存储器42包括只读存储器(Read-Only Memory,简称为ROM)和随机存 取存储器(Random Access Memory,简称为RAM)。在合适的情况下,该ROM 可以是掩模编程的ROM、可编程ROM(ProgrammableRead-Only Memory,简 称为PROM)、可擦除PROM(ErasableProgrammable Read-Only Memory,简称 为EPROM)、电可擦除PROM(ElectricallyErasable Programmable Read-Only Memory,简称为EEPROM)、电可改写ROM(ElectricallyAlterable Read-Only Memory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组 合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-AccessMemory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储 器(Fast Page Mode DynamicRandom Access Memory,简称为FPMDRAM)、扩 展数据输出动态随机存取存储器(ExtendedDate Out Dynamic Random Access Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器42可以用来存储或者缓存需要处理和/或通信使用的各种数据文件, 以及处理器42所执行的可能的计算机程序指令。
处理器41通过读取并执行存储器42中存储的计算机程序指令,以实现上 述实施例中的任意一种后端应用调用方法。
在其中一些实施例中,计算机设备还可包括通信接口43和总线40。其中, 如图4所示,处理器41、存储器42、通信接口43通过总线40连接并完成相互 间的通信。
通信接口43用于实现本申请实施例中各模块、装置、单元和/或设备之间的 通信。通信接口43还可以实现与其他部件例如:外接设备、图像/数据采集设备、 数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
总线40包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。总 线40包括但不限于以下至少之一:数据总线(Data Bus)、地址总线(Address Bus)、 控制总线(Control Bus)、扩展总线(Expansion Bus)、局部总线(Local Bus)。 举例来说而非限制,总线40可包括图形加速接口(Accelerated Graphics Port, 简称为AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,简称为EISA)总线、前端总线(Front Side Bus,简称为FSB)、 超传输(Hyper Transport,简称为HT)互连、工业标准架构(Industry Standard Architecture,简称为ISA)总线、无线带宽(InfiniBand)互连、低引脚数(Low Pin Count,简称为LPC)总线、存储器总线、微信道架构(Micro ChannelArchitecture,简称为MCA)总线、外围组件互连(Peripheral Component Interconnect,简称为PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附 件(Serial AdvancedTechnology Attachment,简称为SATA)总线、视频电子标 准协会局部(Video ElectronicsStandards Association Local Bus,简称为VLB)总 线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总 线40可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但 本申请考虑任何合适的总线或互连。
该计算机设备可以基于获取到的程序指令,执行本申请实施例中的后端应 用调用方法,从而实现结合图1描述的后端应用调用方法。
另外,结合上述实施例中的后端应用调用方法,本申请实施例可提供一种 计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令; 该计算机程序指令被处理器执行时实现上述实施例中的任意一种后端应用调用 方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对 上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技 术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的 普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改 进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权 利要求为准。

Claims (9)

1.一种后端应用调用方法,其特征在于,所述后端应用接入第三方组件,所述第三方组件以注解形式指定所述后端应用对应的url;所述方法包括:
在接收到用户的http请求后,对所述http请求进行解析,得到所述http请求的url;
根据所述http请求的url进行路径匹配,在数据库中匹配得到所述url对应的后端应用的元数据;所述数据库包括:在所述后端应用启动时,所述第三方组件写入的所述后端应用的元数据与url的映射关系;
根据所述后端应用的元数据,进行dubbo调用;
dubbo调用的返回值返回后,根据所述元数据中返回值的信息,通过反射转化成http请求的返回值;
在所述根据所述http请求的url进行路径匹配之前,所述方法还包括:在后端应用启动时,所述第三方组件将所述后端应用的元数据与url的映射关系写入到数据库中,具体包括:
在后端应用启动时,判断所述后端应用是否依赖所述第三方组件;
若依赖,则所述第三方组件遍历spring容器,获取dubbo接口List;
若当前dubbo接口List中无dubbo接口,则返回启动失败;
若当前dubbo接口List中有dubbo接口,则遍历所述dubbo接口对应的后端应用的元数据,并将元数据写入到元数据List中;
对所述元数据List进行权限校验,若校验通过,则将所述后端应用的元数据与url的映射关系写入到所述数据库。
2.根据权利要求1所述的方法,其特征在于,所述对所述元数据List进行权限校验包括:
根据所述元数据List,获取后端应用的应用名;
将url作为主key从所述数据库中拉取对应的记录;
若所述数据库中存在所述url对应的记录,则判断所述记录中的应用名是否和所述应用名相同;若不同,则返回错误信息。
3.根据权利要求1所述的方法,其特征在于,所述对所述元数据List进行权限校验包括:
在后端应用启动时,获取所述后端应用的应用名;
从数据库中获取所述应用名对应的dubbo接口,并和当前接口List进行比较;
若数据库中存在所述dubbo接口,当前接口List中不存在,则将数据库中所述dubbo接口对应的数据删除;
若数据库中不存在所述dubbo接口,当前接口List中存在,则将所述dubbo接口以url作为主key,写入到所述数据库中;
若所述数据库中和所述当前接口List中均存在所述dubbo接口,则比较所述dubbo接口中的元数据,若所述元数据不同,则将所述dubbo接口的元数据更新到所述数据库中。
4.根据权利要求1所述的方法,其特征在于,所述将元数据写入到元数据List中包括:
判断所述元数据中的参数名称是否编译擦除;
若未获取到参数名称,则返回错误信息;
若获取到参数名称,则判断所述参数名称中是否有VO对象,若无,则将元数据写入到元数据List中;
若有,则校验所述VO对象是否满足Field规则,若满足,则将元数据写入到元数据List中。
5.根据权利要求1所述的方法,其特征在于,所述后端应用对应的元数据包括:函数名、dubbo接口名、函数参数、函数参数类型和函数返回值。
6.一种网关的应用方法,其特征在于,所述方法包括:
开启http服务;
接收到用户http请求后,根据请求的方法(GET,POST,PUT)和请求的url组装成pattern,在权利要求1所述的数据库中查询是否有对应的pattern;
若没有,则返回错误信息;
若有,则获取所述pattern对应的元数据;
根据元数据中的参数的名字,从所述http请求的header、uri和body中获取参数的值,然后进行dubbo泛化调用;
dubbo调用的返回值返回后,根据元数据中返回值的信息,通过反射将dubbo调用的返回值转化成http请求的返回值。
7.一种后端应用调用装置,其特征在于,所述装置包括:
第三方组件,用于以注解形式指定所述后端应用对应的url;
写入模块,用于在后端应用启动时,通过所述第三方组件将所述后端应用与url的映射关系写入到数据库中;所述写入模块具体用于:
在后端应用启动时,判断所述后端应用是否依赖所述第三方组件;若依赖,则所述第三方组件遍历spring容器,获取dubbo接口List;若当前dubbo接口List中无dubbo接口,则返回启动失败;若当前dubbo接口List中有dubbo接口,则遍历所述dubbo接口对应的后端应用的元数据,并将元数据写入到元数据List中;对所述元数据List进行权限校验,若校验通过,则将所述后端应用的元数据与url的映射关系写入到所述数据库。
解析模块,用于接收用户的http请求,并解析得到所述http请求中的url;
匹配模块,用于根据所述http请求的url进行路径匹配,在所述数据库中匹配得到所述url对应的后端应用的元数据;
调用模块,用于根据所述后端应用的元数据,将所述http请求转换成对应的dubbo协议,进行dubbo调用;
返回模块,用于将dubbo调用的返回值转换成http协议的返回值并返回至用户。
8.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一项所述的方法。
CN202110278295.9A 2021-03-15 2021-03-15 后端应用调用方法、装置、计算机设备和可读存储介质 Active CN112905919B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110278295.9A CN112905919B (zh) 2021-03-15 2021-03-15 后端应用调用方法、装置、计算机设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110278295.9A CN112905919B (zh) 2021-03-15 2021-03-15 后端应用调用方法、装置、计算机设备和可读存储介质

Publications (2)

Publication Number Publication Date
CN112905919A CN112905919A (zh) 2021-06-04
CN112905919B true CN112905919B (zh) 2023-02-10

Family

ID=76106416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110278295.9A Active CN112905919B (zh) 2021-03-15 2021-03-15 后端应用调用方法、装置、计算机设备和可读存储介质

Country Status (1)

Country Link
CN (1) CN112905919B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003348A (zh) * 2021-11-26 2022-02-01 中国银行股份有限公司 运行期Dubbo协议转换方法及装置
CN114024901B (zh) * 2022-01-05 2022-04-19 中邮消费金融有限公司 一种消息隔离转发方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109151091A (zh) * 2018-09-21 2019-01-04 福建南威软件有限公司 一种支持dubbo协议调用的API网关服务

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740779B2 (en) * 2013-10-01 2017-08-22 AsterionDB, Inc. System, method and program instructions for tying together a media URL and multimedia in a database
US9231915B2 (en) * 2013-10-29 2016-01-05 A 10 Networks, Incorporated Method and apparatus for optimizing hypertext transfer protocol (HTTP) uniform resource locator (URL) filtering
CN108055248B (zh) * 2017-11-30 2020-12-25 平安科技(深圳)有限公司 基于dubbo框架的远程调用方法、服务器及存储介质
CN109189681A (zh) * 2018-08-23 2019-01-11 彩讯科技股份有限公司 基于ajax的数据仿真方法、客户端及系统
CN111953659B (zh) * 2020-07-21 2023-02-07 北京思特奇信息技术股份有限公司 一种http请求模拟处理的方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109151091A (zh) * 2018-09-21 2019-01-04 福建南威软件有限公司 一种支持dubbo协议调用的API网关服务

Also Published As

Publication number Publication date
CN112905919A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
US9832076B2 (en) Resource change management in machine to machine network
CN112905919B (zh) 后端应用调用方法、装置、计算机设备和可读存储介质
CN107360261B (zh) 一种http请求处理方法、装置及电子设备
CN109344066B (zh) 一种浏览器页面的测试方法、系统及终端
CN109831494A (zh) 用户数据管理方法及设备
CN113360519A (zh) 数据处理方法、装置、设备和存储介质
CN111427613A (zh) 一种应用程序接口api管理方法和装置
CN111225018A (zh) 一种请求报文处理方法、装置和电子设备
US10979515B1 (en) Resource discovery agent computing device, software application, and method
CN111831915A (zh) 响应数据查询请求的方法、装置、电子设备及存储介质
CN112115103B (zh) 文件地址显示方法、装置、电子设备及可读存储介质
CN111367500A (zh) 数据的处理方法和装置
CN115454849A (zh) 一种软件测试方法、装置、电子设备及存储介质
CN115599668A (zh) 一种接口测试用例生成方法、装置及电子设备
CN112068899B (zh) 插件加载方法、装置、电子设备及存储介质
CN110706378B (zh) 一种记录门锁状态的方法、终端、系统和计算机可读介质
CN109254855B (zh) 一种参数传输协议的注册方法、装置及电子设备
CN113342423B (zh) 一种配置文件更新方法及装置
CN111125232A (zh) 一种公有云资产信息接入的方法及装置
CN110851254A (zh) 基于微服务的设备生产方法、装置、服务器和存储介质
CN115514806B (zh) 一种离散服务集群的感知发现方法及系统
CN114567621B (zh) 一种客户端自适应的响应内容控制系统、方法及存储介质
CN114449052B (zh) 一种数据压缩方法、装置、电子设备及存储介质
CN111538510B (zh) 一种应用程序安装包的确定方法、装置及电子设备
CN117635081B (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