CN115185712B - 数据交互方法、装置、电子设备和存储介质 - Google Patents
数据交互方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115185712B CN115185712B CN202211092622.2A CN202211092622A CN115185712B CN 115185712 B CN115185712 B CN 115185712B CN 202211092622 A CN202211092622 A CN 202211092622A CN 115185712 B CN115185712 B CN 115185712B
- Authority
- CN
- China
- Prior art keywords
- module
- sub
- data interaction
- execution
- name
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及计算机技术领域,本发明提供一种数据交互方法、装置、电子设备和存储介质,所述方法包括:接收前端发送的数据交互请求;基于数据交互请求,确定子模块名,并基于子模块名确定子模块对象;子模块对象为子模块的实例,子模块继承于父类模块;将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果;父类对象为父类模块的实例;将执行结果返回至前端。本发明基于子模块名,即可将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果,实现业务与功能完全解耦,避免硬编码导致程序报错的问题,提升了开发效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据交互方法、装置、电子设备和存储介质。
背景技术
在移动开发中,为了追求开发效率以及可移植的便利性,一些展示性强的页面会选择用H5技术(即第5代HTML)开发,为了在H5中得到Native的体验,需要把Native功能暴露给H5使用,有时甚至把安全网络请求也放在Native端,在这样的环境下导致Native代码混乱不堪,耦合严重,尤其网络方面导致多层回调嵌套。
目前,H5调用Native的方式主要是方法劫持,即利用 JS 的一些系统方法调用会存在 Java 的事件回调,然后在回调中进行事件劫持,从而执行客户端方法。然而,方法劫持方案中onJsConfirm或者onJsPrompt最终监听的都是H5中window.console或者window.alert方法,这两个方法在H5编写代码时经常使用非常容易发生冲突;代码耦合度高,所有的代码实现全部在onJsConfirm与其他回调函数中,代码结构混乱,如果网络功能也由Native实现,则进入“死亡回调”中,OnJsConfirm回调中处理网络回调数据,使用起来复杂度较高。
发明内容
本发明提供一种数据交互方法、装置、电子设备和存储介质,用以解决现有技术中数据交互所对应的代码耦合度高且复杂度较高的缺陷。
本发明提供一种数据交互方法,包括:
接收前端发送的数据交互请求;
基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;
将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述父类对象为所述父类模块的实例;
将所述执行结果返回至所述前端。
根据本发明提供的一种数据交互方法,所述基于所述数据交互请求,确定子模块名,包括:
基于所述数据交互请求中携带的服务名,以及服务名与模块名之间的映射关系,确定子模块名。
根据本发明提供的一种数据交互方法,所述基于所述子模块名确定子模块对象,包括:
基于所述子模块名,确定子模块;
在所述子模块未进行实例化的情况下,基于反射机制对所述子模块进行实例化,得到所述子模块对象。
根据本发明提供的一种数据交互方法,所述数据交互请求中携带有执行动作以及所述执行动作对应的参数列表;
所述基于所述父类对象中的执行函数,得到执行结果,包括:
基于所述父类对象中的执行函数,应用反射机制,得到所述执行动作对应的执行函数;
所述执行动作对应的执行函数,应用所述参数列表,得到所述执行结果。
根据本发明提供的一种数据交互方法,所述将所述子模块对象转换为父类对象,之后还包括:
在执行结果为执行出错的情况下,应用所述数据交互请求中携带的第一回调函数,将出错信息返回至所述前端。
根据本发明提供的一种数据交互方法,所述接收前端发送的数据交互请求,之前还包括:
在项目启动的情况下,将服务名和子模块名之间的映射关系保存至哈希表。
根据本发明提供的一种数据交互方法,所述将所述执行结果返回至所述前端,包括:
基于所述数据交互请求中携带的第二回调函数,将所述执行结果返回至所述前端。
本发明还提供一种数据交互装置,包括:
接收单元,用于接收前端发送的数据交互请求;
确定单元,用于基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;
执行单元,用于将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述父类对象为所述父类模块的实例;
返回单元,用于将所述执行结果返回至所述前端。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据交互方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据交互方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据交互方法。
本发明提供的数据交互方法、装置、电子设备和存储介质,基于子模块名,即可将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果,实现业务与功能完全解耦,避免硬编码导致程序报错的问题,提升了开发效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的数据交互方法的流程示意图;
图2是本发明提供的又一数据交互方法的流程示意图;
图3是本发明提供的数据交互平台的结构示意图;
图4是本发明提供的管理模块初始化方法的流程示意图;
图5是本发明提供的子模块执行方法的流程示意图;
图6是本发明提供的数据交互装置的结构示意图;
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,H5调用Native的方式通常分为注入映射与方法劫持两种。注入映射主要是使用官方提供的 addJavascriptInterface() 方法将 Java 对象和 JS 对象进行映射;方法劫持则是利用 JS 的一些系统方法调用会存在 Java 的事件回调,然后在回调中进行事件劫持,从而执行客户端方法。
然而,注入映射方案有严重的安全问题,如在Android4.2系统上存在远程执行安全漏洞。方法劫持方案中onJsConfirm或者onJsPrompt最终监听的都是H5中window.console或者window.alert方法,这两个方法在H5编写代码时经常使用非常容易发生冲突;代码耦合度高,所有的代码实现全部在onJsConfirm与其他回调函数中,代码结构混乱,如果网络功能也由Native实现,则进入“死亡回调”中,OnJsConfirm回调中处理网络回调数据,使用起来复杂度较高。
对此,本发明提供一种数据交互方法。图1是本发明提供的数据交互方法的流程示意图,如图1所示,该方法可以应用于后台,如Android,该方法包括如下步骤:
步骤110、接收前端发送的数据交互请求。
此处,前端可以理解为网站前台部分,机运行在PC端,移动端等浏览器上展现给用户浏览的网页。前端可以通过HTML、CSS、JavaScript进行开发,例如,在页面的布局时,HTML将元素进行定义,CSS对展示的元素进行定位,再通过JavaScript实现相应的效果和交互,以实现前端开发。
数据交互请求指用户在前端的页面进行操作(如点击、拖曳等)时所生成的请求,数据交互请求中可以携带有执行动作、参数列表、回调函数等信息。在接收到数据交互请求后,需要在后台执行数据交互请求中的执行动作,并将执行结果返回至前端,以使前端展示执行结果。
步骤120、基于数据交互请求,确定子模块名,并基于子模块名确定子模块对象;子模块对象为子模块的实例,子模块继承于父类模块。
具体地,数据交互请求中可以携带有子模块名,若请求中携带有子模块名,则可以直接基于子模块名确定子模块对象。若请求中携带有服务名,则可以基于服务名与模块名之间的映射关系,确定服务名对应的子模块名,进而基于子模块名确定子模块对象。
其中,子模块对象为子模块的实例化对象,子模块可以理解为执行数据交互请求中执行动作对应的实现类,且子模块继承于父类模块。该父类模块下加载有多个不同的子模块。由于子模块继承于父类模块,从而可以在各模块中对不同的执行函数进行编码,并通过父类模块进行统一调用,实现了代码解耦。
步骤130、将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果;父类对象为父类模块的实例。
具体地,父类对象为父类模块的实例,由于子模块继承于父类模块,从而可以将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果。其中,执行函数可以理解为数据交互请求中执行动作对应的执行方法,父类对象为父类模块的实例化对象。
步骤140、将执行结果返回至前端。
具体地,在得到执行结果后,可以通过回调函数(如callback)将执行结果返回至前端,从而前端可以展示执行结果,以实现后台与前端之间的数据交互。
由此可见,本发明实施例相较于注入映射方案,不需要反复调用addJavascriptInterface,实现了代码解耦,且避免远程执行安全漏洞,实现前端与后台之间的数据交互。相较于方法劫持方案,本发明实施例不需要在onJsPrompt中做处理逻辑,能够跟随生命周期自动注销,更加简单快捷实现前端与后台之间的数据交互。也就是说,本发明实施例能够为开发者省去大量繁琐操作,基于子模块名即可自动执行,接近于模板代码,提升开发效率。此外,本发明实施例实现业务与功能完全解耦,降低硬编码导致程序报错的问题。
本发明实施例提供的数据交互方法,基于子模块名,即可将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果,实现业务与功能完全解耦,避免硬编码导致程序报错的问题,提升了开发效率。
作为一种可选实施例,如图2所示,前端可以基于JS构建得到,后台可以基于Android构建得到,首先后台注册插件并回调生命周期,然后后台根据网址(loadURL)加载H5页面至前端,并接收前端发送的数据交互请求(其中,数据交互请求中可以包括H5执行Native方法)。后台在接收到数据交互请求后,根据注册表找到对应子模块,以及根据执行动作(action)找到对应方法,进而可以根据子模块、类、参数、反射执行对应方法,并得到执行结果(如可以通过JSPromptResult返回执行结果),接着将执行结果返回至前端(如通过WebChromClient将执行结果返回至前端)。
由此可见,本发明实施例利用反射自动执行Native端对应的功能,提高整体的开发效率,其可以适用Android、IOS双端使用;搭配组件化,所有Native功能均可复用。扩展性强,方便流程化管理,只需要关注插件文档即可。统一错误处理,调用没有实现的子模块与方法也不会导致程序崩溃并会返回友好提示。
与现有技术中的注入映射方案和方法劫持方案相比,本发明实施例不需要反复调用addJavascriptInterface,实现了代码解耦,且能够更加简单快捷实现前端与后台之间的数据交互,为开发者省去大量繁琐操作,即H5端只需传入Plugin及Action即可自动执行,接近于模板代码,提升开发效率。业务与功能完全解耦,降低硬编码导致程序报错。也就是本发明实施例既没有安全漏洞问题,也可以按照子模块或功能进行分层。
基于上述实施例,基于数据交互请求,确定子模块名,包括:
基于数据交互请求中携带的服务名,以及服务名与子模块名之间的映射关系,确定子模块名。
具体地,服务名(service name)对应一个数据库,也即服务名对应的是数据库级别的名字。数据交互请求中携带有服务名,基于服务名与子模块名之间的映射关系,可以确定服务名对应的子模块名。其中,可以将服务名与子模块名之间的映射关系保存至哈希表(如hashmap),从而可以基于服务名在哈希表中快速查找得到对应的子模块名。
基于上述任一实施例,基于子模块名确定子模块对象,包括:
基于子模块名,确定子模块;
在子模块未进行实例化的情况下,基于反射机制对子模块进行实例化,得到子模块对象。
具体地,数据交互请求中可以携带有子模块名,从而可以基于请求中携带的子模块名,确定子模块。
考虑到基于子模块名确定的子模块可能是未进行实例化的对象,从而在确定子模块后,若子模块未进行实例化,则可以基于反射机制对子模块进行实例化,得到子模块对象。如可以基于Java反射机制对子模块进行实例化,得到子模块对象。
基于上述任一实施例,数据交互请求中携带有执行动作以及执行动作对应的参数列表;
基于父类对象中的执行函数,得到执行结果,包括:
基于父类对象中的执行函数,应用反射机制,得到执行动作对应的执行函数;
执行动作对应的执行函数,应用参数列表,得到执行结果。
具体地,数据交互请求中携带有执行动作以及执行动作对应的参数列表。基于父类对象中的执行函数,应用反射机制,得到执行动作对应的执行函数,从而执行动作对应的执行函数可以应用参数列表,执行相应的执行动作,得到执行结果。
基于上述任一实施例,将子模块对象转换为父类对象,之后还包括:
在执行结果为执行出错的情况下,应用数据交互请求中携带的第一回调函数,将出错信息返回至前端。
具体地,在执行结果为执行出错的情况下,表明子模块没有实现,此时应用数据交互请求中携带的第一回调函数将出错信息返回至前端,从而实现友好提示,以便统一错误处理,避免程序崩溃。其中,第一回调函数可以为callback Context,还可以为其它回调函数,本发明实施例对此不作具体限定。
基于上述任一实施例,接收前端发送的数据交互请求,之前还包括:
在项目启动的情况下,将服务名和子模块名之间的映射关系保存至哈希表。
具体地,在项目(Activity)启动的情况下,将服务名和子模块名之间的映射关系保存至哈希表,从而在获取服务名后,可以从哈希表中快速获取对应的子模块名。
可选地,本发明实施例可以将子模块名(如class name)保存到hashmap中,并用对应的service name名字作为key值。
基于上述任一实施例,将执行结果返回至前端,包括:
基于数据交互请求中携带的第二回调函数,将执行结果返回至前端。
具体地,数据交互请求中携带有第二回调函数,在得到执行结果后,将执行结果返回至前端。如第二回调函数可以为callback,通过callback回调,将执行结果返回给onJsPrompt中,最终由JsPromptResult返回给前端。
基于上述任一实施例,本发明还提供一种数据交互平台结构示意图,如图3所示,启动每个活动组件(Activity)的时候都会将配置文件(Config)中的所有子模块(plugin)加载到管理模块(PluginManager)。在第一次loadUrl时,初始化管理模块(PluginManager)并加载子模块(plugin),管理模块(PluginManager)在加载子模块(plugin)的时候并不是马上实例化子模块(plugin),而是只是将子模块(plugin)的class name保存到hashmap中,用service name作为key值。当前端(JS端)请求后台(Android)数据交互(如请求API)时,管理模块(PluginManager)会从hashmap中查找到子模块(plugin),如果该子模块(plugin)还未实例化,利用java反射机制实例化该子模块(plugin),并执行子模块(plugin)的执行方法(execute方法)。
如图4所示,用户点击进入前端页面,前端的活动组件(Activity)向配置文件(Config)请求获取注册列表,以使配置文件(Config)返回对应的注册列表至活动组件(Activity)。在活动组件(Activity)接收到注册列表后,将注册列表发送至管理模块(PluginManager),以使管理模块(PluginManager)遍历注册列表,查看模块是否可用,并反射实例调用模块initalize方法,完成初始化。
如图5所示,用户调用Native方法,前端中的视图组件(WebChromrClient)回调OnJsPrompt,管理模块(PluginManager)获取执行方法(exec方法),管理模块(PluginManager)根据模块名获取对应的子模块,以基于父类模块(BasePlugin)中的执行函数,得到执行结果,同时模块将执行结果返回至视图组件(WebChromrClient)以进行显示。
下面对本发明提供的数据交互装置进行描述,下文描述的数据交互装置与上文描述的数据交互方法可相互对应参照。
基于上述任一实施例,本发明还提供一种数据交互装置,如图6所示,该装置包括:
接收单元610,用于接收前端发送的数据交互请求;
确定单元620,用于基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;
执行单元630,用于将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述父类对象为所述父类模块的实例;
返回单元640,用于将所述执行结果返回至所述前端,以实现与所述前端的数据交互。
本发明实施例相较于注入映射方案,不需要反复调用addJavascriptInterface,实现了代码解耦,且避免远程执行安全漏洞,实现前端与后台之间的数据交互。相较于方法劫持方案,本发明实施例不需要在onJsPrompt中做处理逻辑,能够跟随生命周期自动注销,更加简单快捷实现前端与后台之间的数据交互。也就是说,本发明实施例能够为开发者省去大量繁琐操作,基于子模块名即可自动执行,接近于模板代码,提升开发效率,即H5端只需传入Plugin及Action即可自动执行,接近于模板代码,提升开发效率。此外,本发明实施例实现业务与功能完全解耦,降低硬编码导致程序报错的问题。
本发明实施例提供的数据交互装置,基于子模块名,即可将子模块对象转换为父类对象,并基于父类对象中的执行函数,得到执行结果,实现业务与功能完全解耦,避免硬编码导致程序报错的问题,提升了开发效率。
此外,本发明实施例利用反射自动执行Native端对应的功能,提高整体的开发效率,其可以适用Android、IOS双端使用;搭配组件化,所有Native功能均可复用。扩展性强,方便流程化管理,只需要关注插件文档即可。统一错误处理,调用没有实现的子模块与方法也不会导致程序崩溃并会返回友好提示。
基于上述任一实施例,所述基于所述数据交互请求,确定子模块名,包括:
基于所述数据交互请求中携带的服务名,以及服务名与模块名之间的映射关系,确定子模块名。
基于上述任一实施例,所述基于所述子模块名确定子模块对象,包括:
基于所述子模块名,确定子模块;
在所述子模块未进行实例化的情况下,基于反射机制对所述子模块进行实例化,得到所述子模块对象。
基于上述任一实施例,所述数据交互请求中携带有执行动作以及所述执行动作对应的参数列表;
所述基于所述父类对象中的执行函数,得到执行结果,包括:
基于所述父类对象中的执行函数,应用反射机制,得到所述执行动作对应的执行函数;
所述执行动作对应的执行函数,应用所述参数列表,得到所述执行结果。
基于上述任一实施例,所述将所述子模块对象转换为父类对象,之后还包括:
在执行结果为执行出错的情况下,应用所述数据交互请求中携带的第一回调函数,将出错信息返回至所述前端。
基于上述任一实施例,所述接收前端发送的数据交互请求,之前还包括:
在项目启动的情况下,将服务名和子模块名之间的映射关系保存至哈希表。
基于上述任一实施例,所述将所述执行结果返回至所述前端,包括:
基于所述数据交互请求中携带的第二回调函数,将所述执行结果返回至所述前端。
图7是本发明提供的电子设备的结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、存储器(memory)720、通信接口(Communications Interface)730和通信总线740,其中,处理器710,存储器720,通信接口730通过通信总线740完成相互间的通信。处理器710可以调用存储器720中的逻辑指令,以执行数据交互方法,该方法包括:接收前端发送的数据交互请求;基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述父类对象为所述父类模块的实例;将所述执行结果返回至所述前端。
此外,上述的存储器720中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的数据交互方法,该方法包括:接收前端发送的数据交互请求;基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述父类对象为所述父类模块的实例;将所述执行结果返回至所述前端。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的数据交互方法,该方法包括:接收前端发送的数据交互请求;基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述父类对象为所述父类模块的实例;将所述执行结果返回至所述前端。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种数据交互方法,其特征在于,包括:
接收前端发送的数据交互请求;所述数据交互请求指用户在前端的页面进行操作时所生成的请求;
基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;
将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述执行函数为所述数据交互请求中执行动作对应的执行方法;所述父类对象为所述父类模块的实例;
将所述执行结果返回至所述前端;
所述数据交互请求中携带有执行动作以及所述执行动作对应的参数列表;
所述基于所述父类对象中的执行函数,得到执行结果,包括:
基于所述父类对象中的执行函数,应用反射机制,得到所述执行动作对应的执行函数;
所述执行动作对应的执行函数,应用所述参数列表,得到所述执行结果;
所述基于所述数据交互请求,确定子模块名,包括:
基于所述数据交互请求中携带的服务名,以及服务名与模块名之间的映射关系,确定子模块名;
所述基于所述子模块名确定子模块对象,包括:
基于所述子模块名,确定子模块;
在所述子模块未进行实例化的情况下,基于反射机制对所述子模块进行实例化,得到所述子模块对象;
所述将所述子模块对象转换为父类对象,之后还包括:
在执行结果为执行出错的情况下,应用所述数据交互请求中携带的第一回调函数,将出错信息返回至所述前端。
2.根据权利要求1所述的数据交互方法,其特征在于,所述接收前端发送的数据交互请求,之前还包括:
在项目启动的情况下,将服务名和子模块名之间的映射关系保存至哈希表。
3.根据权利要求1所述的数据交互方法,其特征在于,所述将所述执行结果返回至所述前端,包括:
基于所述数据交互请求中携带的第二回调函数,将所述执行结果返回至所述前端。
4.一种数据交互装置,其特征在于,包括:
接收单元,用于接收前端发送的数据交互请求;所述数据交互请求指用户在前端的页面进行操作时所生成的请求;
确定单元,用于基于所述数据交互请求,确定子模块名,并基于所述子模块名确定子模块对象;所述子模块对象为子模块的实例,所述子模块继承于父类模块;
执行单元,用于将所述子模块对象转换为父类对象,并基于所述父类对象中的执行函数,得到执行结果;所述执行函数为所述数据交互请求中执行动作对应的执行方法;所述父类对象为所述父类模块的实例;
返回单元,用于将所述执行结果返回至所述前端;
所述数据交互请求中携带有执行动作以及所述执行动作对应的参数列表;
所述基于所述父类对象中的执行函数,得到执行结果,包括:
基于所述父类对象中的执行函数,应用反射机制,得到所述执行动作对应的执行函数;
所述执行动作对应的执行函数,应用所述参数列表,得到所述执行结果;
所述基于所述数据交互请求,确定子模块名,包括:
基于所述数据交互请求中携带的服务名,以及服务名与模块名之间的映射关系,确定子模块名;
所述基于所述子模块名确定子模块对象,包括:
基于所述子模块名,确定子模块;
在所述子模块未进行实例化的情况下,基于反射机制对所述子模块进行实例化,得到所述子模块对象;
所述将所述子模块对象转换为父类对象,之后还包括:
在执行结果为执行出错的情况下,应用所述数据交互请求中携带的第一回调函数,将出错信息返回至所述前端。
5.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3任一项所述数据交互方法。
6.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述数据交互方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211092622.2A CN115185712B (zh) | 2022-09-08 | 2022-09-08 | 数据交互方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211092622.2A CN115185712B (zh) | 2022-09-08 | 2022-09-08 | 数据交互方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115185712A CN115185712A (zh) | 2022-10-14 |
CN115185712B true CN115185712B (zh) | 2022-12-27 |
Family
ID=83522701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211092622.2A Active CN115185712B (zh) | 2022-09-08 | 2022-09-08 | 数据交互方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185712B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461575A (zh) * | 2014-12-26 | 2015-03-25 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
CN105893061A (zh) * | 2016-06-12 | 2016-08-24 | 杭州勒芒科技有限公司 | 应用程序开发方法及系统 |
CN106775768A (zh) * | 2017-01-13 | 2017-05-31 | 深圳市路通网络技术有限公司 | Native代码调用系统、方法及APP混合开发系统 |
CN114942796A (zh) * | 2022-05-05 | 2022-08-26 | 北京达佳互联信息技术有限公司 | 插件编译及调用方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170078452A1 (en) * | 2014-05-07 | 2017-03-16 | Optum, Inc. | Web native bridge |
CN111443901B (zh) * | 2018-12-27 | 2024-02-09 | 三六零科技集团有限公司 | 一种基于Java反射的业务扩展方法及装置 |
CN113806104A (zh) * | 2021-08-02 | 2021-12-17 | 北京房江湖科技有限公司 | 接口访问请求处理方法、api网关、服务器及系统 |
-
2022
- 2022-09-08 CN CN202211092622.2A patent/CN115185712B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461575A (zh) * | 2014-12-26 | 2015-03-25 | 北京华电万通科技有限公司 | 一种网页脚本语言跨移动操作系统平台原生接口调用的装置及方法 |
CN105893061A (zh) * | 2016-06-12 | 2016-08-24 | 杭州勒芒科技有限公司 | 应用程序开发方法及系统 |
CN106775768A (zh) * | 2017-01-13 | 2017-05-31 | 深圳市路通网络技术有限公司 | Native代码调用系统、方法及APP混合开发系统 |
CN114942796A (zh) * | 2022-05-05 | 2022-08-26 | 北京达佳互联信息技术有限公司 | 插件编译及调用方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115185712A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9444899B2 (en) | Use of internet information services logging to collect user information in an asynchronous manner | |
CN107168960B (zh) | 一种业务执行方法及装置 | |
US9645989B2 (en) | Techniques to generate custom electronic forms using custom content | |
US9342333B2 (en) | Backend custom code extensibility | |
CN109240697B (zh) | 调用处理方法及装置、存储介质 | |
CN108829398B (zh) | 一种移动端页面交互实现方法及装置 | |
CN111443901B (zh) | 一种基于Java反射的业务扩展方法及装置 | |
CN109684192B (zh) | 基于数据处理的本地测试方法、设备、存储介质及装置 | |
CN108021445B (zh) | 内存优化方法、装置、系统及计算机可读存储介质 | |
CN108804120B (zh) | 一种页面构建方法、装置、设备及存储介质 | |
US11443011B2 (en) | Page objects library | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN110874278A (zh) | 外部系统的嵌入方法、工作流系统、设备及存储介质 | |
CN111752820A (zh) | gRPC接口的压力测试方法、计算机设备和存储介质 | |
CN115185712B (zh) | 数据交互方法、装置、电子设备和存储介质 | |
CN110795137B (zh) | 权限配置方法、装置、系统、电子设备及可读介质 | |
CN114721740B (zh) | 消息触发方法、装置、设备及存储介质 | |
CN112491940A (zh) | 代理服务器的请求转发方法及装置、存储介质及电子设备 | |
CN114253441B (zh) | 目标功能的启用方法及装置、存储介质、电子装置 | |
CN111090515A (zh) | 一种访问控制方法、装置、终端设备及存储介质 | |
CN114422166B (zh) | 一种网页访问方法、装置、电子设备、介质及产品 | |
CN113805878B (zh) | 插件工程化方法、装置、计算机系统和介质 | |
CN115269066B (zh) | 接口调用方法、设备及存储介质 | |
CN117472716A (zh) | 非入侵式应用日志采集方法、装置、设备及存储介质 | |
CN118467612A (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 |