CN116069515A - 请求处理方法及装置、电子设备及存储介质 - Google Patents
请求处理方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116069515A CN116069515A CN202111272678.1A CN202111272678A CN116069515A CN 116069515 A CN116069515 A CN 116069515A CN 202111272678 A CN202111272678 A CN 202111272678A CN 116069515 A CN116069515 A CN 116069515A
- Authority
- CN
- China
- Prior art keywords
- script
- parameters
- interface
- target service
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000013515 script Methods 0.000 claims abstract description 304
- 238000000034 method Methods 0.000 claims description 114
- 238000012545 processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 abstract description 16
- 239000008186 active pharmaceutical agent Substances 0.000 description 104
- 238000004422 calculation algorithm Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请公开了一种请求处理方法及装置、电子设备及存储介质,所述请求处理方法应用于应用程序编程接口API网关,包括:接收针对目标服务的服务调用请求;获取与所述服务调用请求对应的脚本;基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;基于所述接口参数调用所述目标服务。如此,基于脚本进行接口参数计算,可以更便捷地提高API网关与不同底层服务接口的兼容性,从而拓展API网关能力范围。而且基于数据地图类为脚本提供运行所需的信息内容,可以大大降低脚本自身可获得数据的有限性。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种请求处理方法及装置、电子设备及存储介质。
背景技术
目前的信息系统中,底层子系统通过应用程序编程接口(ApplicationProgramming Interface,API)网关将自身的数据和能力对外进行开放,例如使用表现层状态传递(Representational State Transfer,REST)方式对外提供,方便使用者通过API网关调用各个已接入API网关的API,从而获取底层服务。然而现实场景中存在很多开发时间较早的子系统,它们使用不同的接口规范,如调用入参要求和位置、签名算法等等,或者一些子系统在集成过程中,需要网关完成一定的业务数据处理,从而导致API网关常规的参数映射等功能无法满足复杂的数据处理需求。
现有技术中一般通过如下几种方案来解决:将底层API的特殊参数需求转到用户端实现,要求用户以能满足底层API要求的格式调用API;或者通过接入函数计算系统实现业务逻辑,并应用到API网关调用流程中;或者为子系统开发独立的北向网关,在网关中实现接口规范、数据处理等工作。但上述现有技术存在用户端执行难度高、适用场景少或者部署成本较高和网关架构复杂等缺陷。
发明内容
有鉴于此,本发明提供一种请求处理方法及装置、电子设备及存储介质。
本发明的技术方案是这样实现的:
第一方面,本发明提供一种请求处理方法,应用于应用程序编程接口API网关,所述方法包括:
接收针对目标服务的服务调用请求;
获取与所述服务调用请求对应的脚本;
基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
基于所述接口参数调用所述目标服务。
进一步地,所述基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数,包括:
调用所述API网关中预设的数据地图类中记录的脚本执行方法和/或脚本执行参数;所述脚本执行方法用于指示所述脚本的执行规则;所述脚本执行参数包括执行所述脚本所需调用的参数;
基于所述脚本执行方法和/或脚本执行参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数。
进一步地,所述获取与所述服务调用请求对应的脚本,包括:
根据所述服务调用请求,确定所述目标服务对应的API信息;
获取所述API信息中记录的脚本信息对应的脚本;
或者,
获取所述服务调用请求命中的触发条件匹配的脚本。
进一步地,所述方法还包括:
响应于对脚本内容的编辑操作,将编辑后的脚本存储在脚本库中。
进一步地,所述基于所述脚本执行方法和/或脚本执行参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数,包括:
基于所述脚本执行方法、所述脚本执行参数以及所述服务调用请求携带的请求参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述请求参数至少包括以下之一:用户信息、API配置参数以及目标服务配置参数。
进一步地,所述基于所述脚本执行方法、所述脚本执行参数以及所述服务调用请求携带的请求参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数,包括:
根据所述服务调用请求携带的请求参数对所述脚本中对应的参数赋值;
基于所述脚本执行方法和所述脚本执行参数,执行赋值后的脚本;
根据赋值后的脚本的执行结果,确定接入所述目标服务的接口所需的接口参数。
进一步地,所述方法还包括:
根据所述API网关的配置规则,拼装所述接口参数和所述服务调用请求携带的请求参数;
所述基于所述接口参数调用所述目标服务,包括:
基于所述接口参数和所述请求参数拼装后的数据,通过所述API网关调用目标服务。
进一步地,所述方法还包括:
在目标服务调用完成后,将所述接口参数存储在所述数据地图类中;所述接口参数用于本次目标服务调用之后的基于所述脚本调用所述目标服务时获取;
或者,在目标服务调用完成后,将所述接口参数存储在系统中;所述系统用于调用所述接口参数以记录所述目标服务的调用情况。
第二方面,本发明提供一种请求处理装置,应用于应用程序编程接口API网关,所述装置包括:
接收单元,用于接收针对目标服务的服务调用请求;
获取单元,用于获取与所述服务调用请求对应的脚本;
执行单元,用于基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
调用单元,用于基于所述接口参数调用所述目标服务。
第三方面,本发明提供一种电子设备,所述电子设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
处理器运行所述计算机程序时,执行前述一个或多个技术方案所述方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令;计算机可执行指令被处理器执行后,能够实现前述一个或多个技术方案所述方法。
本发明提供的请求处理方法,应用于应用程序编程接口API网关,包括:接收针对目标服务的服务调用请求;获取与所述服务调用请求对应的脚本;基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;基于所述接口参数调用所述目标服务。如此,通过调用脚本计算得到接口参数,提高API网关对于不同接口规范和参数需求的底层服务接口的接入能力,可以大大提高API网关的兼容性,从而拓展API网关的能力范围。而且无需部署新的网关或函数计算平台,部署成本较低,应用方式更加灵活。另外,基于数据地图类存储并提供脚本运行所需的信息,可以有效抑制脚本自身可获取数据的有限性,从而提高脚本运行以及API网关调用的灵活性和便捷性。
附图说明
图1为本发明实施例提供的请求处理方法的流程示意图;
图2为本发明实施例提供的请求处理方法的流程示意图;
图3为本发明实施例提供的请求处理方法的流程示意图;
图4为本发明实施例提供的请求处理方法的流程示意图;
图5为本发明实施例提供的请求处理方法的流程示意图;
图6为本发明实施例提供的请求处理装置的结构示意图;
图7为本发明实施例提供的请求处理方法的流程示意图;
图8为本发明实施例提供的请求处理方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
如图1所示,本发明实施例提供一种请求处理方法,应用于应用程序编程接口API网关,所述方法包括:
S110:接收针对目标服务的服务调用请求;
S120:获取与所述服务调用请求对应的脚本;
S130:基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
S140:基于所述接口参数调用所述目标服务。
这里,目标服务可以包括由具备业务能力及数据资源的子系统提供的业务处理等服务,服务调用请求可以为用户或设备在需要获取一个或多个子系统提供的服务时下发的调用请求。其中,服务调用请求中可以携带需要调用的目标服务的类型、目标服务所在子系统的标识信息等内容。
数据地图类(Datamap)为系统中或者API网关中预先设置的用于存储执行脚本所需信息的数据容器,这里,信息可包括数据和/或方法,以在通过脚本执行业务计算时,提供所需调用的系统数据等数据支撑,以及获取该系统数据的方法和执行脚本的方法等方法支撑。
在一个实施例中,数据地图类中的数据存储可包括以下至少之一:请求数据、用户数据、API信息、系统参数、自定义参数、目标服务请求数据。数据地图类中的方法存储可包括:根据目标服务对应的API接口的实际需求开发的方法,例如签名算法、自定义加密算法等;和/或,公知的开放的算法,例如获取远程字典服务(Remote Dictionary Server,Redis)数据的方法、base64加密算法、信息摘要(Message-Digest Algorithm,MD5)加密算法等。
示例性地,数据地图类中的数据、方法等信息可以在封装后进行保存,以抑制调用过程中向脚本引入大量Java归档(Java Archive,jar)数据包,从而提高脚本响应及处理速度。
在本发明实施例中,API网关通过接入目标服务所在子系统的API接口,建立与子系统的连接,从而实现调用目标服务。因而接口参数为接入目标服务的接口即子系统API接口所需的参数,例如,可以为目标服务所在子系统的API接口规范中所指示的签名数据,或者其他类型的参数等。脚本为执行业务计算以得到所需的接口参数的可执行文件,例如,脚本可以为基于Java虚拟机的敏捷开发语言Groovy的脚本,从而可以与系统开发语言具有更好地兼容性。
示例性地,目标服务所在子系统或者目标服务对应的API接口规范中使用了特殊的签名算法,则接口参数可以为通过该签名算法得到的签名数据。因而脚本可以用于执行该签名算法的计算逻辑,以得到接入该目标服务的接口所需的接口参数。
在一个实施例中,获取与服务调用请求对应的脚本,可以为根据服务调用请求携带的目标服务类型,或者,根据服务调用请求携带的目标服务标识信息、目标服务所在子系统标识信息等内容,确定对应的脚本。
在另一个实施例中,API网关还可以用于对脚本的调试、编辑等,例如在API网关的管理控制平台进行,无需单独设立脚本调试页面。
在又一个实施例中,获取与服务调用请求对应的脚本后还可以包括:将字符串类型的脚本转化为类。例如,通过执行以下代码:
“ClassLoader parent=Thread.currentThread().getContextClassLoader();
GroovyClassLoader loader=new GroovyClassLoader(parent);
Class groovyClass=GroovyClassLoader.parseClass(groovyStr)”
从而实现将字符串类型的Groovy等类型脚本转换为class类型。
在一个实施例中,基于所述接口参数调用所述目标服务,可以为通过接口参数访问目标服务所在的子系统并接入目标服务对应的API接口,进而通过接口参数和/或服务调用请求携带的请求参数调用所需的目标服务。
如此,通过设立和调用脚本进行接口参数的计算,可以充分扩展API网关针对复杂多样的业务计算逻辑的处理能力,提高API网关针对不同接口规范和参数需求的底层服务接口的接入能力,从而拓展API网关的兼容性和能力范围。而且无需另外建立和接入函数计算平台、单独的API网关等,部署成本较低,也无需用户端执行业务计算,应用方式更加灵活友好。另外,基于数据地图类存储并提供脚本运行所需的方法、参数等信息,可以有效提供业务计算的数据支撑和方法支撑,抑制脚本自身可获取数据的有限性,从而提高脚本运行以及API网关调用的灵活性和便捷性。
在一些实施例中,如图2所示,所述S130,可包括:
S131:调用所述API网关中预设的数据地图类中记录的脚本执行方法和/或脚本执行参数;所述脚本执行方法用于指示所述脚本的执行规则;所述脚本执行参数包括执行所述脚本所需调用的参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
S132:基于所述脚本执行方法和/或脚本执行参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数。
在本发明实施例中,脚本执行方法可以包括获取脚本执行参数的方法,例如获取Redis数据的方法,用于指示脚本获取对应的脚本执行参数。脚本执行方法还可以包括根据实际需求开发的方法,例如目标服务所在子系统的接口规范指示的签名算法、自定义加密算法等,用于指示脚本执行以获取接口参数。
在一个实施例中,S131可包括:根据脚本对应的脚本类型或者脚本标识等,在数据地图类中查找调用对应的脚本执行方法和/或脚本执行参数。如此,可以为不同业务计算需求下的不同脚本快速提供对应的方法及数据支撑。
在另一个实施例中,基于脚本执行方法和脚本执行参数执行脚本,可以为基于脚本执行方法中的数据获取方法,获取脚本执行所需的系统数据;将脚本执行参数和系统数据写入脚本,并基于脚本执行方法中的接口参数计算方法执行写入数据后的脚本,得到接口参数。
如此,通过API网关中预设的数据地图类Datamap存储各脚本对应的脚本执行方法和脚本执行参数,在利用不同脚本获取接入不同目标服务接口的接口参数时,提供所需的方法和数据支撑,方便脚本获取服务调用请求和系统中的必要数据。而且,无需在脚本中引入大量记录数据和算法的jar包,而是独立存储在数据地图类中,从而降低脚本负载量,进一步提高API网关运行的灵活性。
在一些实施例中,所述S120,可包括:
根据所述服务调用请求,确定所述目标服务对应的API信息;
获取所述API信息中记录的脚本信息对应的脚本;
或者,
获取所述服务调用请求命中的触发条件匹配的脚本。
在本发明实施例中,脚本可以与接口参数关联,则获取脚本可以根据待调用目标服务所在子系统中的API信息确定,其中,API信息可以为目标服务对应的API接口规范或者API定义内容。API信息中可以记录有可用于计算对应的接口参数的脚本信息,例如脚本编号等。根据脚本信息可以查询调用对应的脚本。
在一个实施例中,脚本可以不与接口参数关联,则还可以根据服务调用请求是否命中预设的脚本触发条件,获取服务调用请求命中的触发条件对应的脚本。示例性地,触发条件可以设置为待调用的目标服务是否符合本脚本所能执行的业务计算对应的服务,则获取服务调用请求命中的触发条件匹配的脚本可包括:获取服务调用请求对应的目标服务属于触发条件中记录的服务的脚本。需要说明的是,触发条件不仅限于上述内容,具体内容可根据实际需求设置。
如此,脚本的获取调用可以匹配目标服务API信息指定的脚本,也可以基于触发条件智能调用与请求匹配的脚本,从而使脚本的获取过程更加智能灵活。
在一些实施例中,所述方法还包括:
响应于对脚本内容的编辑操作,将编辑后的脚本存储在脚本库中。
这里,系统管理人员或用户可以对脚本的内容进行编辑,例如可以在API网关或者API管理控制平台进行脚本的增删改查等操作。而且,由于脚本为根据服务调用请求进行即时调用,因此在接收到对脚本内容的编辑操作后,可以通过将编辑后的脚本对脚本库进行更新。在下一次基于该脚本进行接口参数计算时可以直接调用编辑后的脚本,即可在API已发布的情况下无需重启API网关等,实现API业务计算逻辑的热发布。基于此,获取与所述服务调用请求对应的脚本,可以在脚本库中获取对应的脚本。
在一个实施例中,将编辑后的脚本存储在脚本库中后,同时将编辑后的脚本缓存至Redis数据中。如此,在批量处理针对同一目标服务的调用请求时,可以直接从缓存的Redis中获取编辑后的脚本,无需向脚本库进行重复的调用,从而提高服务调用响应速度。
在一些实施例中,如图3所示,所述S132,可包括:
S1321:基于所述脚本执行方法、所述脚本执行参数以及所述服务调用请求携带的请求参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述请求参数至少包括以下之一:用户信息、API配置参数以及目标服务配置参数。
在本发明实施例中,获取服务调用请求中携带的请求参数,请求参数可以包括以下至少之一:表征用户身份的用户信息数据、需要通过API网关调用的API配置参数、需要调用的目标服务的配置参数、相关的系统参数等。
在一个实施例中,所述S1321可包括:基于服务调用请求携带的请求参数对数据地图类中对应的参数进行赋值;将数据地图类与脚本绑定,基于数据地图类中的脚本执行方法、脚本执行参数和赋值后的参数执行所述脚本。
在另一个实施例中,S1321还可包括:基于请求参数对脚本执行参数中的目标服务调用参数进行赋值,并基于脚本执行方法中的数据获取方法获取脚本执行所需的系统数据;将所述复制后的目标服务调用参数、系统数据和脚本执行参数中的自定义参数等其他参数写入脚本,基于脚本执行方法中的接口参数计算方法执行脚本,得到接口参数。
如此,先将请求参数对数据地图类中对应的参数进行初始化,使得数据地图类在初始化后符合当前脚本的执行规范,然后执行脚本,可以统一数据地图类中各信息内容与脚本的绑定时间,抑制请求参数、脚本执行方法和脚本执行参数分别独立地进入脚本执行流程,从而提高脚本执行的统一性。
在一些实施例中,所述S1321,可包括:
根据所述服务调用请求携带的请求参数对所述脚本中对应的参数赋值;
基于所述脚本执行方法和所述脚本执行参数,执行赋值后的脚本;
根据赋值后的脚本的执行结果,确定接入所述目标服务的接口所需的接口参数。
在本发明实施例中,通过请求参数对脚本中对应的参数赋值,并基于脚本执行方法和脚本执行参数,将数据地图类引入脚本,实现数据地图类与脚本的参数绑定。
示例性地,可以通过执行以下代码:
“Binding binding=new Binding();
binding.setVariable("dataMap",dataMap)”
从而实现数据地图类与脚本的参数绑定。
在一个实施例中,在接收到服务调用请求后,可以先根据请求参数对数据地图类中对应的参数进行赋值,以实现数据地图类的初始化。在基于服务调用请求获取到对应的脚本后,将初始化后的数据地图类引入脚本,包括将赋值后的参数赋值给脚本中对应的参数。
在另一个实施例中,赋值后脚本的执行结果,可以作为接口参数直接用于目标服务接口的接入,也可以根据目标服务对应的API信息,对执行结果进行进一步计算处理,例如与请求参数进行合并等,得到接口参数。
在又一个实施例中,所述方法还可以包括:在执行所述脚本之前,将脚本转化为可执行脚本,例如,通过以下代码来实现:
“Script script=InvokerHelper.createScript(groovyClass,binding)”。
在一些实施例中,如图4所示,所述方法还包括:
S101:根据所述API网关的配置规则,拼装所述接口参数和所述服务调用请求携带的请求参数;
所述S140,可包括:
S141:基于所述接口参数和所述请求参数拼装后的数据,通过所述API网关调用目标服务。
在本发明实施例中,由于接入目标服务API以及调用目标服务仍需使用请求参数,因此可以根据API网关的配置规则或者目标服务对应的API信息,对接口参数和请求参数进行拼装,形成调用目标服务的调用信息。
在一个实施例中,拼装接口参数和请求参数时,可以将接口参数置于在前的位置,将请求参数置于在后的位置。如此拼装后的数据在发送至目标服务的接口时,可以优先取出接口参数以获取接入目标服务API接口的许可,进而再通过请求参数进行目标服务的调用。如此,可以更加便于先后执行API接口的接入和目标服务的调用,从而提高服务调用整体效率。
在一个实施例中,拼装接口参数和请求参数,可以包括根据接口参数和请求参数,生成目标统一资源定位地址(Uniform Resource Locator,URL)、超文本传输协议(HyperText Transfer Protocol,HTTP)方法、请求头、查询类query参数、请求体body等,并基于生成的上述内容生成调用目标服务的调用信息。
在另一个实施例中,在接收服务调用请求后,基于请求参数对数据地图类中对应的参数进行赋值,则S101可包括:根据API网关的配置规则,在数据地图类中基于请求参数赋值后的参数与接口参数进行拼装。
在又一个实施例中,根据请求参数对所述脚本中对应的参数赋值,则S101可包括:根据API网关的配置规则,在脚本中基于请求参数赋值后的参数与接口参数进行拼装。基于此,可以大大降低再次向服务调用请求提取请求参数所耗费的时间,基于之前的赋值和绑定步骤后的参数即可完成数据拼装。
如此,根据不同的配置规则进行拼装,可以实现对不同底层子系统的API接口规范的适应能力,抑制单独的接口参数无法被目标服务的接口认可导致服务调用失败。
在一些实施例中,如图5所示,所述方法还包括:
S150:在目标服务调用完成后,将所述接口参数存储在所述数据地图类中;所述接口参数用于本次目标服务调用之后的基于所述脚本调用所述目标服务时获取;
S160:或者,在目标服务调用完成后,将所述接口参数存储在系统中;所述系统用于调用所述接口参数以记录所述目标服务的调用情况。
在本发明实施例中,可以将计算得到的接口参数保存在数据地图类中,以在批量调用同一目标服务,或者,下一次调用的目标服务与本次相同时,可以直接在数据地图类中取出该接口参数进行目标服务调用,大大缩短重复性的目标服务调用所耗费的时间。另外,还可以将接口参数记录在系统内,以供系统生成本次服务调用的历史调用记录。
在一个实施例中,接收到服务调用请求后,可以向系统内查询历史调用记录,以确定服务调用请求对应的目标服务与时间最接近的上一次调用的服务是否一致。若一致,则可以直接在系统内或者数据地图类中调用上一次调用所使用的接口参数,作为本次服务调用的接口参数。
如此,接口参数在用于服务调用后可以持续保存,应用于后续的重复利用或历史记录生成中,从而使得接口参数的利用价值可以得到最大化,有效提高API网关整体工作效率。
如图6所示,本发明实施例提供一种请求处理装置,应用于应用程序编程接口API网关,所述装置包括:
接收单元10,用于接收针对目标服务的服务调用请求;
获取单元20,用于获取与所述服务调用请求对应的脚本;
执行单元30,用于基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
调用单元40,用于基于所述接口参数调用所述目标服务
在一些实施例中,所述执行单元30,具体用于:
调用所述API网关中预设的数据地图类中记录的脚本执行方法和/或脚本执行参数;所述脚本执行方法用于指示所述脚本的执行规则;所述脚本执行参数包括执行所述脚本所需调用的参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
基于所述脚本执行方法和/或脚本执行参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数。
在一些实施例中,所述获取单元20,具体用于:
根据所述服务调用请求,确定所述目标服务对应的API信息;
获取所述API信息中记录的脚本信息对应的脚本;
或者,
获取所述服务调用请求命中的触发条件匹配的脚本。
在一些实施例中,所述装置还包括:
编辑单元,用于响应于对脚本内容的编辑操作,将编辑后的脚本存储在脚本库中。
在一些实施例中,所述执行单元30,具体用于:
基于所述脚本执行方法、所述脚本执行参数以及所述服务调用请求携带的请求参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述请求参数至少包括以下之一:用户信息、API配置参数以及目标服务配置参数。
在一些实施例中,所述执行单元30,具体用于:
根据所述服务调用请求携带的请求参数对所述脚本中对应的参数赋值;
基于所述脚本执行方法和所述脚本执行参数,执行赋值后的脚本;
根据赋值后的脚本的执行结果,确定接入所述目标服务的接口所需的接口参数。
在一些实施例中,所述装置还包括:
拼装单元,用于根据所述API网关的配置规则,拼装所述接口参数和所述服务调用请求携带的请求参数;
所述调用单元40,具体用于:基于所述接口参数和所述请求参数拼装后的数据,通过所述API网关调用目标服务。
在一些实施例中,所述装置还包括:
存储单元,用于在目标服务调用完成后,将所述接口参数存储在所述数据地图类中;所述接口参数用于本次目标服务调用之后的基于所述脚本调用所述目标服务时获取;
或者,在目标服务调用完成后,将所述接口参数存储在系统中;所述系统用于调用所述接口参数以记录所述目标服务的调用情况。
以下结合上述任一实施例提供一个具体示例:
如图7所示,本发明实施例将API网关的API实现逻辑与Groovy动态脚本相结合,在API的请求处理中,增加Groovy动态脚本的执行单元,使API具备实现复杂逻辑计算的能力。常规API网关的API可实现请求透传、参数映射、添加常量参数、添加系统参数等能力。而本发明实施例实现的API接口,可以额外实现复杂的逻辑计算。例如,用户可以使用Groovy脚本编写签名算法,在接口调用过程中,API网关处理正常的参数映射外,通过执行Groovy脚本计算签名并赋值到对应的底层接口参数中,最终完成接口调用。同时,该Groovy脚本是动态的,在API已发布的状态下,可对Groovy脚本进行编辑并实时生效。
如图8所示,本发明实施例主要分为脚本数据支撑、脚本管理和调用实现三部分。
1、脚本数据支撑
脚本数据支撑是指为脚本的运行提供必要的数据支撑和方法支撑。
a.数据支撑
脚本要实现业务计算,就离不开调用的参数和平台数据的支持。以计算签名为例,签名的计算需要使用调用的请求参数和调用底层接口使用的应用程序(Application,APP)信息,故需要Groovy脚本有获取这些数据的方法。本方案提供一个数据地图类Datamap,用于存储各项数据和提供获取各项数据的方法。Datamap中保存的数据包含请求数据、用户数据、API信息、系统参数、自定义参数、目标服务请求数据等。
b.方法支撑
方法支撑有两个部分,一个是自定义的方法,一个是公共的方法。
自定义的方法:根据实际需求开发的方法,如签名算法、自定义加密算法等。
公共的方法:一些开放的、公共的方法,如获取Redis数据的方法、base64加密算法、MD5加密算法等,将这些方法在Datamap中进行封装,避免在Groovy中引入大量jar包。
c.Datamap在调用链中的使用
Datamap作为网关请求处理的数据中心,贯穿请求始终。
初始化:在网关接受请求时,请求过滤器根据请求的用户和API信息对Datamap进行初始化,基础的用户、API、系统参数等信息在这一步进行赋值。后将Datamap和请求一起传入后续处理流程中。
赋值:网关对目标服务的请求信息同样保存在Datamap中,在网关请求处理单元,基于网关的API配置将拼装对目标服务的请求信息,包括目标URL、http方法、请求头、query参数、body等。
Groovy动态脚本操作:脚本中获取当前请求的Datamap实例即可通过Datamap存取数据,使用Datamap提供的方法进行数据处理,最终数据大部分体现在对目标服务的请求参数中,但是同时支持另外两种数据使用方法:1、在多脚本间传递数据,即在脚本1中计算数值存入Datamap,由脚本2获取并使用;2、将数据保存至系统中,供系统使用。如将调用次数记入Redis。通过该方法可以实现自定义的请求统计或者流控。可见脚本对Datamap的灵活运用可极大的拓展网关的功能
销毁:Datamap伴随请求始终,在请求响应结束后销毁。
2、脚本管理
脚本管理模块集成到API管理控制台中,其主要实现三块内容:
a.脚本的编辑
API管理控制台提供脚本的增删改查等功能,脚本使用Groovy语言,在编辑脚本时,基于Groovy语言规则对脚本进行代码规范校验,完成编辑的脚本保存到数据库中同时缓存至Redis。
b.脚本的调试
API网关在API调试功能中实现Groovy脚本的调试,无需单独设立脚本调试页面。
c.脚本的引用
API网关在API创建过程中,底层服务入参添加“是否动态参数”属性,是代表该参数的值会在调用过程中,通过Groovy脚本计算得来。定义是参数选择关联的Groovy脚本。
脚本也可以设定为不关联动态参数,在调用底层服务前自动执行的模式。设计人员可以根据需求决定脚本的触发时机。
3、调用实现
API网关的调用过程没有变化,只有底层服务请求的参数映射有所不同。主要提现在动态参数的赋值过程,下面是动态参数的赋值过程:
a.根据API定义内容中的Groovy脚本编号,从redis中获取Groovy脚本。
b.加载脚本
将字符串类型的Groovy脚本转化为class:
ClassLoader parent=Thread.currentThread().getContextClassLoader();
GroovyClassLoader loader=new GroovyClassLoader(parent);
Class groovyClass=GroovyClassLoader.parseClass(groovyStr)。
c.绑定参数
Binding binding=new Binding();
binding.setVariable("dataMap",dataMap)。
d.转化为可执行脚本
Script script=InvokerHelper.createScript(groovyClass,binding)。
e.执行脚本返回结果,为动态参数赋值
dynamicParam=script.run()。
本发明实施例还提供一种电子设备,所述电子设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,处理器运行所述计算机程序时,执行前述一个或多个技术方案所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被处理器执行后,能够实现前述一个或多个技术方案所述方法。
本实施例提供的计算机存储介质可为非瞬间存储介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
在一些情况下,上述任一两个技术特征不冲突的情况下,可以组合成新的方法技术方案。
在一些情况下,上述任一两个技术特征不冲突的情况下,可以组合成新的设备技术方案。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种请求处理方法,其特征在于,应用于应用程序编程接口API网关,所述方法包括:
接收针对目标服务的服务调用请求;
获取与所述服务调用请求对应的脚本;
基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
基于所述接口参数调用所述目标服务。
2.根据权利要求1所述的方法,其特征在于,所述基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数,包括:
调用所述API网关中预设的数据地图类中记录的脚本执行方法和/或脚本执行参数;所述脚本执行方法用于指示所述脚本的执行规则;所述脚本执行参数包括执行所述脚本所需调用的参数;
基于所述脚本执行方法和/或脚本执行参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数。
3.根据权利要求1所述的方法,其特征在于,所述获取与所述服务调用请求对应的脚本,包括:
根据所述服务调用请求,确定所述目标服务对应的API信息;
获取所述API信息中记录的脚本信息对应的脚本;
或者,
获取所述服务调用请求命中的触发条件匹配的脚本。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于对脚本内容的编辑操作,将编辑后的脚本存储在脚本库中。
5.根据权利要求2所述的方法,其特征在于,所述基于所述脚本执行方法和/或脚本执行参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数,包括:
基于所述脚本执行方法、所述脚本执行参数以及所述服务调用请求携带的请求参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述请求参数至少包括以下之一:用户信息、API配置参数以及目标服务配置参数。
6.根据权利要求5所述的方法,其特征在于,所述基于所述脚本执行方法、所述脚本执行参数以及所述服务调用请求携带的请求参数执行所述脚本,得到接入所述目标服务的接口所需的接口参数,包括:
根据所述服务调用请求携带的请求参数对所述脚本中对应的参数赋值;
基于所述脚本执行方法和所述脚本执行参数,执行赋值后的脚本;
根据赋值后的脚本的执行结果,确定接入所述目标服务的接口所需的接口参数。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述API网关的配置规则,拼装所述接口参数和所述服务调用请求携带的请求参数;
所述基于所述接口参数调用所述目标服务,包括:
基于所述接口参数和所述请求参数拼装后的数据,通过所述API网关调用目标服务。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在目标服务调用完成后,将所述接口参数存储在所述数据地图类中;所述接口参数用于本次目标服务调用之后的基于所述脚本调用所述目标服务时获取;
或者,在目标服务调用完成后,将所述接口参数存储在系统中;所述系统用于调用所述接口参数以记录所述目标服务的调用情况。
9.一种请求处理装置,其特征在于,应用于应用程序编程接口API网关,所述装置包括:
接收单元,用于接收针对目标服务的服务调用请求;
获取单元,用于获取与所述服务调用请求对应的脚本;
执行单元,用于基于所述API网关中预设的数据地图类执行所述脚本,得到接入所述目标服务的接口所需的接口参数;所述数据地图类至少用于存储执行所述脚本所需的信息;
调用单元,用于基于所述接口参数调用所述目标服务。
10.一种电子设备,其特征在于,所述电子设备包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器运行所述计算机程序时,执行权利要求1至8任一项所述请求处理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令;所述计算机可执行指令被处理器执行后,能够实现如权利要求1至8任一项所述请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111272678.1A CN116069515A (zh) | 2021-10-29 | 2021-10-29 | 请求处理方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111272678.1A CN116069515A (zh) | 2021-10-29 | 2021-10-29 | 请求处理方法及装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116069515A true CN116069515A (zh) | 2023-05-05 |
Family
ID=86180665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111272678.1A Pending CN116069515A (zh) | 2021-10-29 | 2021-10-29 | 请求处理方法及装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069515A (zh) |
-
2021
- 2021-10-29 CN CN202111272678.1A patent/CN116069515A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190324772A1 (en) | Method and device for processing smart contracts | |
CN107562513B (zh) | 一种基于java的智能合约生命周期的管理方法 | |
US8978023B2 (en) | Canonical mechanism for securely assembling features into a mobile application | |
US10908926B2 (en) | Plug-in management wrappers | |
CN109542506B (zh) | 一种可灵活配置接口和快速交付服务的系统 | |
CN105490860A (zh) | 部署应用程序运行环境的方法、装置及系统 | |
CN111901294A (zh) | 一种构建在线机器学习项目的方法及机器学习系统 | |
CN108229148B (zh) | 一种基于Android虚拟机的沙箱脱壳方法及系统 | |
CN114586011A (zh) | 将所有者指定的数据处理流水线插入到对象存储服务的输入/输出路径 | |
CN112395039A (zh) | 一种Kubernetes集群的管理方法和装置 | |
CN111598575A (zh) | 业务流程控制方法、装置、电子设备和可读存储介质 | |
US11610155B2 (en) | Data processing system and data processing method | |
CN114281263A (zh) | 容器集群管理系统的存储资源处理方法、系统和设备 | |
CN111399860A (zh) | 轻应用部署方法、装置、计算机设备和存储介质 | |
US20210019155A1 (en) | Optimizing managed runtime applications for serverless environments | |
CN115269040B (zh) | 一种租户业务应用的拓展方法、装置及系统 | |
CN116107623A (zh) | 一种软件开发方法、装置及电子设备 | |
CN115774742A (zh) | 私有云的数据存储新增方法、装置、设备、介质及产品 | |
CN116069515A (zh) | 请求处理方法及装置、电子设备及存储介质 | |
CN115665265A (zh) | 请求处理方法、装置、设备、存储介质及系统 | |
CN114721745B (zh) | 一种浏览器加载使用本地插件的方法、装置与计算设备 | |
CN114721699B (zh) | 一种镜像升级方法、装置、电子设备及存储介质 | |
CN117032834B (zh) | 一种价值流插件运行方法、装置、设备及存储介质 | |
CN115543486B (zh) | 面向无服务器计算的冷启动延迟优化方法、装置和设备 | |
CN110879747B (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 |