CN112015384A - 一种接口映射方法和装置 - Google Patents

一种接口映射方法和装置 Download PDF

Info

Publication number
CN112015384A
CN112015384A CN201910457773.5A CN201910457773A CN112015384A CN 112015384 A CN112015384 A CN 112015384A CN 201910457773 A CN201910457773 A CN 201910457773A CN 112015384 A CN112015384 A CN 112015384A
Authority
CN
China
Prior art keywords
interface
native
webpage end
information
webpage
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
Application number
CN201910457773.5A
Other languages
English (en)
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910457773.5A priority Critical patent/CN112015384A/zh
Publication of CN112015384A publication Critical patent/CN112015384A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种接口映射方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:原生端接收网页端传输的接口标识,获取与接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;传输注册接口信息至网页端,以在网页端将注册接口信息中的原生类和方法映射为格式对象和方法,建立原生端和网页端之间的接口映射关系。该实施方式在WebApp初始过程中,将原生接口能力自动映射至H5的JS中,使得Native开放接口的能力与JS融为一体,实现Native端和WebApp之间的接口映射;且无需工作人员手动输入接口协议,有效降低了WebApp调用Native协议的出错率,降低了工作人员的工作量,提高了开发人员的开发效率,使得前端开发更为方便高效。

Description

一种接口映射方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种接口映射方法和装置。
背景技术
将H5页面集成到APP应用中,通常会有部分H5页面的逻辑/功能需依赖Native(即,Java调用非Java代码的接口)提供的接口,因此需要H5与Native进行交互来实现调用。
现有H5与Native交互方式主要以类JSBridge、DSBridge技术做桥接:
1)Native调用JS,是通过使用evaluate JavaScript向JS注入JS语句来实现交互;
2)JS调用Native,则以Scheme://xxx/xxxx协议方式在Native中做拦截,对符合Scheme的URL(Uniform Resource Locator,统一资源定位符)做解析,并将所解析到的path、param等用来表示程序中的类、方法、参数等转换为执行方法(即,在程序中能够执行和调用唤起具体的功能)、回调调用接口能力。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
1)JS对于Native接口能力完全未知,只能通过Native的接口文档对照开发,操作十分不便,且对文档要求较高;
2)JS调用Native时多以拼接字符串形式调用,硬编码较多,开发人员在编码过程中如果出现拼写错误很难查找问题;
3)JS SDK的分类混乱,经常将很多接口混在一个JS对象内,导致Native和JS的接口不统一;
4)H5的调试无法看到实际Native提供对象的结构和接口,调试不能自动提示类和方法,且接口联调成本较高,需要双方开发频繁交流。
发明内容
有鉴于此,本发明实施例提供一种接口映射方法和装置,至少能够解决现有技术中对Native接口文档要求较高、H5对Native接口能力完全未知的问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种接口映射方法,包括:
原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
可选的,所述原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息,包括:
在加载所述网页端的过程中,所述原生端获取所述网页端中的接口标识,确定与所述接口标识相对应的接口;
获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;
接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息。
可选的,所述原生端接收所述网页端传输的接口标识,还包括:
所述原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
传输所述对外接口记录至所述网页端中,之后接收所述网页端所反馈的所述接口标识;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的。
可选的,在所述确定可对外提供服务的接口之后,还包括:
获取所确定接口的接口信息并进行注册,得到注册接口信息;
所述获取与所述接口标识相对应的接口信息并进行注册,包括:获取与所述接口标识相对应的注册接口信息。
可选的,所述在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,包括:
所述网页端通过预定转换方式,对所述原生类和方法进行格式转换,得到所述格式对象和方法,并将所述格式对象和方法存储至所述网页端的接口执行代码中。
为实现上述目的,根据本发明实施例的另一方面,提供了一种接口映射装置,包括:
信息注册模块,用于原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
信息映射模块,用于传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
可选的,所述信息注册模块,用于:
在加载所述网页端的过程中,所述原生端获取所述网页端中的接口标识,确定与所述接口标识相对应的接口;
获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;
接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息。
可选的,所述信息注册模块,还用于:
所述原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
传输所述对外接口记录至所述网页端中,之后接收所述网页端所反馈的所述接口标识;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的。
可选的,所述信息注册模块,还用于:获取所确定接口的接口信息并进行注册,得到注册接口信息;以及获取与所述接口标识相对应的注册接口信息。
可选的,所述信息映射模块,用于:所述网页端通过预定转换方式,对所述原生类和方法进行格式转换,得到所述格式对象和方法,并将所述格式对象和方法存储至所述网页端的接口执行代码中。
为实现上述目的,根据本发明实施例的再一方面,提供了一种接口映射电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的接口映射方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的接口映射方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:Native将WebApp所需的接口能力进行抽象分类和解耦,在后续WebApp加载过程中将原生能力接口自动化映射至H5的JS中,使Native开放的能力与JS融为一体,方便JS SDK对外提供能力的分类和封装并使多端接口一致,便于Native开发人员更专注于接口能力的开发,H5开发人员更专注于业务和应用的开发;同时提高两端开发人员的开发效率和调试联调的效率,降低出错率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种接口映射方法的主要流程示意图;
图2是本发明实施例提供的Native端映射至H5端的示意图;
图3根据本发明实施例的一种可选的接口映射方法的流程示意图;
图4是根据本发明实施例的另一种可选的接口映射方法的流程示意图;
图5是根据本发明实施例的一具体地接口映射方法的流程示意图;
图6是本发明实施例提供的调试界面的部分示意图;
图7是根据本发明实施例的一种接口映射装置的主要模块示意图;
图8是本发明实施例可以应用于其中的示例性系统架构图;
图9是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,操作系统目前的主流编程代码为Object-C(iOS系统)和Java(android系统),对于H5与Native交互的方案,主要适用于这两个系统,本发明主要以iOS系统为例进行说明。
对于本发明所涉及的词语,作解释如下:
接口映射:指把Native的类和类的调用方法,以同样的类名和方法名在H5端创建出来,以实现JS和Native所使用的类同名、方法同名,调用JS的功能就等同于调用Native的功能。
WebApp:由公司或团队开发的具有一定专项功能的小型H5应用,可以为一个网页也可以是一个网站。
JSBridge、DSbridge:开源框架,连接原生WebView和Javascript通信桥梁的JS代码。
接口文档:在项目开发中,web项目的前后端分离开发,App开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都需要一直维护。
参见图1,示出的是本发明实施例提供的一种接口映射方法的主要流程图,包括如下步骤:
S101:原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
S102:传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
上述实施方式中,对于步骤S101,主要作用于原生Native端。
在Native和WebApp H5页面的JS之间设有通信管理的JSBridge.js的中间层。JSBridge.js也可以称之为服务,但区别于服务端,只是一个中介桥梁负责记录和传递通信数据。
WebApp中页面的部分功能可能需要调用Native端的接口才可以实现;例如,调用相机接口拍摄图片、然后调用上传图片接口上传所拍摄的图片。
通常在开发WebApp的过程中,开发人员会分析哪些功能可以自己实现,哪些功能需要调用Native端的接口实现。因此在加载WebApp的过程中,WebApp会将这些接口的标识传输至Native端。
Native端中的接口有些可以对外提供服务,有些则不可以,通常WebApp所传输的接口标识都是可对外提供服务接口的标识。
为区分接口服务,对于可对外提供服务接口进行注册,以区分于其他接口。例如iOS系统中,由于Obj-C中类继承关系较深可能会掺杂过多无用接口方法,所注册类的开放接口方法以“JSInterface_”开头命名做区分(接口包括Native原生类和方法)。
其中,Native端中注册的Native类都是已经分类好的某类原生功能的集合,例如DeviceInfo、Camera、Photo、Network、Share。
进一步的,还可以根据WebApp的标识、接口标识和JSInterface_,对类和调用方法进行注册。但同一接口可能被多个APP所调用,为降低后续注册接口信息对系统资源的占用率,本发明主要选择上述方式,即以”JSInterface_”开头命名做区分。
更进一步的,不同App所实现的功能不同,可以针对各App建立相应的注册接口信息表,并暂存于Native的内存中以做后续映射使用。另外,该种方式还便于后续App的功能更新,此时直接更新该注册接口信息表即可。
对于步骤S102,WebApp的页面数据通常存储在服务端中,因此需从服务端中加载与页面相关联的页面信息,例如html、css、images、js(webapp.js、jsbridge.js/dsbridge.js、mappingN.js)。
对于WebApp,其页面显示是基于Native端的WebView进行的。因此,可以基于所获取的页面信息对该WebView进行属性配置,包括url、宽高、导航栏样式等。
另外,mappingN.js(一种映射类用的JS)主要用于做映射类使用,是基于JSbridge的通信机制和功能来实现的,主要有create创建对象和addMethod添加对象方法功能。
Native端传输至WebApp的注册接口信息,主要以字符串形式发送。
WebApp对于所接收到的字符串,可以利用所加载到的mappingN.js中的create方法创建JS对象(即格式对象)、addMethod方法添加JS对象方法来完成所有类的自动化映射,具体地:var mN=mapping.create…..
参见图2,示出了Native和H5之间的类和方法映射:
1)在Native中创建一段JS执行程序的字符串-(id)JSInterface_deviceInfo:(id)args:(id)args;
2)Native将这个字符串传输至WebApp;
3)WebApp通过mappingN.js执行映射后,得到function deviceInfo(args){},以此完成接口映射。
如下所示为图2中JMEH5ApiDeviceInfo类映射的部分核心代码:
NSString*jsString=[NSString stringWithFormat:@"var mN=
mappingN.create();mappingN.addMethod(mN,'JMEH5ApiDeviceInfo','deviceInfo');mappingN.addMethod(mN,'JMEH5ApiDeviceInfo','getUDID');"];
[selfevaluateJavaScript:[NSString stringWithFormat:@"%@",jsString]completionHandler:^(id_Nullable obj,NSError*_Nullable error){}]
进一步的,所采用的映射方式中,有关接口的类和调用方法的名称不变。以Native端中类-camera、调用方法-open为例,对现有方式和本发明进行比对:
1)现有传统方式中,WebApp中类可能为camera1、方法为shoot,各自定义的分类命名都不统一;
2)本发明中JS的类和方法都是映射过来的,分类命名都是统一的,都是类-camera、调用方法-open。
因此,在完成Native端和WebApp的接口映射之后,WebApp中的JS SDK(SoftwareDevelopment Kit,软件开发工具包)调用JS对应的Object和method,即等同于调用了Native端的原生接口能力,使得Native开放的能力与JS融为一体。
进一步的,SDK封装了用于调用Native端操作的应用程序接口。JS SDK也可以做二次的封装,将JS对象和方法封装在对外应用方提供的接口内进行交互。
更进一步的,WebApp的功能是基于其代码进行实现的,对于需调用Native端的接口代码,可以先设置为空缺,例如,接口1(),括号中需基于Native端的接口信息进行补充。
因此,在上述获取接口的类的调用方法后,可以基于所转换的JS对象和方法后对这部分空白代码进行更新,具体地,替换更新。
这种复制粘贴方式,替代了现有工作人员需按照Native端接口文档要求手工逐字输入接口协议的方式,有效避免了协议输入错误的情况,同时减少了开发人员分析错误、更正错误以及重新调试的次数,降低了工作人员的工作量。
上述实施例所提供的方法,在WebApp初始过程中,将原生接口能力自动化映射至H5的JS中,使得Native开放的接口能力与JS融为一体,实现Native端和WebApp之间的接口映射。且该方式无需工作人员手动输入接口协议,有效降低了WebApp调用Native协议的出错率,降低了工作人员的工作量,提高了开发人员的开发效率,使得前端开发更为方便高效。
参见图3,示出的是本发明实施例提供的一种可选的接口映射方法的主要流程图,包括如下步骤:
S301:在加载网页端的过程中,原生端获取所述网页端中的接口标识,确定与所述接口标识相对应的接口;
S302:获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;其中,接口信息包括原生类和方法;
S303:接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息;
S304:传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
上述实施方式中,对于步骤S304可参见图1所示描述,在此不再赘述。
上述实施方式中,对于步骤S301和S302,这两个过程发生在App初始化之前,Native端已根据WebApp端的接口需求,进行接口信息注册,但还未将这所注册的接口信息传输至WebApp中。
这里对于WebApp的加载,可以是下载安装包并在设备上安装的过程,或者是应用功能更新后的重新启动,还可以是响应于用户点击打开操作时候的加载,本发明在此不做限制。
WebApp代码中,有关调用Native端接口的代码可以是空白的,需要基于Native端的类和调用方法进行补充的。因此,在WebApp的加载过程中,WebApp会将这些接口的标识传输至Native端。
Native端根据接口标识,确定相应的接口,并将这些接口的信息进行注册,以将其与其他接口进行区分。例如,类-camera、调用方法-open在注册后得到JSInterface_camera、open的字符串。
进一步的,为便于后续针对WebApp注册接口信息的直接获取,可以将所注册的这些注册接口信息与WebApp对应即可。
对于步骤S303,WebApp在开始初始化后,即JS初始化JSInit(界面初始化工作),会将该初始化信息传输至Native端,以告知Native端开始接口信息准备工作。
Native端响应该消息,同样开始nativeInit初始化工作,为传输注册接口信息做准备工作。
对于WebApp,其主要分有业务层和引擎层:
1)业务层,为业务人员根据业务需求进行开发的部分
在WebApp的业务中心(或应用管理后台),开发人员可以根据业务需求对所调用的所有接口进行区分打标签,例如接口1-调用App本身的功能、接口2-调用手机功能,并存储至App内便于后续传输至Native端。
2)引擎层,为获取注册接口信息、进行页面渲染等
引擎处理中心不涉及业务处理,因此是不知道WebApp需要调用Native端哪些接口的,这里的引擎中心仅仅是从Native端中获取与该webApp相对应的注册接口信息即可。
上述实施里所提供的方法,通过WebApp的业务层将接口标识传输至Native端,后续通过引擎层从Native端获取与之相对应的注册接口信息。整体是在WbeApp的不同层级进行的,较之同一层级既确定接口标识又获取注册接口信息的方式,可以有效提高整体运行效率;若后续系统异常时,也便于问题排查。
参见图4,示出的是本发明实施例提供的另一种可选的接口映射方法的主要流程图,包括如下步骤:
S401:原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
S402:传输所述对外接口记录至所述网页端中,之后接收所述网页端所反馈的所述接口标识;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的;
S403:获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
S404:传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
上述实施方式中,步骤S403可参见图1和图3所示描述,步骤S404可参见图1所示步骤S102的描述,在此不再赘述。
上述实施方式中,对于步骤S401,Native端中的接口有些可以对外提供服务,例如照相机接口,而有些则不可以,例如日历接口。
针对该种情况,为提高后续接口确定以及接口信息获取效率,Native端对于能够对外提供服务的接口,可以构建对外接口记录,实现接口分类。
对于步骤S402,之前有提到在WebApp开发阶段,开发人员会根据其业务需求确定需调用Native端哪些接口。
除此人为分析方式之外,还可以在加载WebApp阶段,WebApp通过比其接口记录和Native端的对外接口记录,确定哪些接口能力可以由Native端提供。
除上述WebApp的对比方式之外,还可以是Native端自动获取WebApp的接口记录,并将其与自身的对外接口记录进行比对,确定可以为WebApp提供哪些接口能力。
进一步的,Native端中的对外服务接口或多或少都会被App所调用。
因此,在确定可对外提供服务的接口之后,还可以直接将这些接口的接口信息都进行注册,得到与每个接口相对应的注册接口信息。这样后续在需要注册接口信息的场景,可以直接基于接口标识获取,省略了信息再注册的操作。
上述实施例所提供的方法,Native端将对外接口记录传输至WebApp中,以及后续将注册接口信息传输至WebApp中,实现WebApp获取Native端接口能力的效果。
参见图5,示出的是本发明实施例提供的一具体地接口映射方法的主要流程图,包括如下步骤:
S501:原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
S502:在加载网页端的过程中,将所述对外接口记录传输至所述网页端中;
S503:接收所述网页端传输的接口标识,确定与所述接口标识相对应的接口;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的;
S504:获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;其中,接口信息包括原生类和方法;
S505:接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息并传输至所述网页端;
S506:所述网页端通过预定转换方式,对所述注册接口信息中的原生类和方法进行格式转换,得到格式对象和方法;
S507:所述网页端将所述格式对象和对象存储至所述网页端的接口执行代码中,建立原生端和网页端之间的接口映射关系。
上述实施方式中,对于步骤S501~S505可参见上述图1~图4所示描述,在此不再赘述。
上述实施方式中,对于步骤S506和S507,WebApp在开发过程中,对于需调用Native端接口的代码可以设置为空白。只有在接收到Native端传输的JS字符串,并将其转换为JS对象和方法后,才可以对这部分空白代码进行更新,具体地,覆盖式更新。
程序JS字符串是在Native端生成的,在传输至WebApp后被JS执行就会调用MappingN.js,以完成真正的映射关系,最终是在WebApp端生效的。
需要说明的是,在步骤S507之前WebApp中所显示的页面都是空白的,表示页面的加载过程。只有在步骤S507之后才显示一个完整页面,包括页面数据、页面配置信息等。
在完成Native端和WebApp之间的接口映射之后,可以进行接口调用和WebApp中的H5页面JS调试:
1)接口调用
当用户在WebApp的页面中点击某个配置选项,需要调用Native端的接口时候,WebApp会传输接口调用请求至Native端;
Native端响应该接口调用请求,通过runtime的方式对类和方法进行自动检索,找到对应的类和方法并直接调用,完成与WebApp之间的自动交互;其中,runtime是iOS系统object-c中的运行时。
例如,程序中类-camera、方法-open,将这两个字符串输入到object-c中的一个底层接口中,就自动调用了Native内存中相应的类和方法,执行照相机的打开操作。
2)WebApp中H5页面的JS调试
调试的意义在于检查JS和Native之间的交互是否高效连通,所传输的数据是否正确,是否能够正常调用接口能力。
调试页面可以自动提示出JS的类和方法(即Native类和方法),但调试界面中的JMEJSSDK.Native.JMEH5ApiDeviceInfo.getUDID所提示出的名称是通过映射后才能看到的,这点区别于现有调试界面。
参见图6,为Apple afari浏览器的部分调试H5工具。该调试界面中,还可以查看Object内的结构,提高了两方开发人员的开发和调试联调效率。
WebApp中的JS SDK调用JS对应的Object及method,即等同于直接调用Native端的原生接口能力,保持了多端统一(iOS/android),可以使用Native.JMEH5ApiDeviceInfo.getUDID(data,callback)方式调用映射方法。
本发明实施例所提供的方法,与现有方式进行比对具有以下有益效果:
1)Native端通过将对外接口记录、注册接口信息传输至WebApp中,以便页面中JS获取Native中的接口能力,无需native提供接口文档;
2)将WebApp中的业务层和逻辑层分离,业务层确定所需调用Native的接口,引擎层获取注册接口信息,分工明确;若后续WebApp出现异常,也便于问题发现和及时解决;
3)在WebApp页面初始化时就创建好映射到JS的JS对象和调用方法,并与Native中的对象方法同名,以将Native提供的接口能力完全透明给JS,JS调用自身的方法就等同于调用了Native中的对应方法;
4)利用原生代码可以注入js脚本语句至WebView的原理,使得Native开放的接口能力与WebApp页面的JS融为一体,方便JS SDK对外提供接口能力的分类和封装,并使多端(iOS/android)接口一致;
5)便于Native开发人员更专注于接口能力的开发,H5开发人员更专注于业务和应用的开发;同时减少两端开发人员的交流次数,提高调试联调效率,降低出错率,同时有利于快速的定位问题。
参见图7,示出了本发明实施例提供的一种接口映射装置700的主要模块示意图,包括:
信息注册模块701,用于原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
信息映射模块702,用于传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
本发明实施装置中,所述信息注册模块701,用于:
在加载所述网页端的过程中,所述原生端获取所述网页端中的接口标识,确定与所述接口标识相对应的接口;
获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;
接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息。
本发明实施装置中,所述信息注册模块701,还用于:
所述原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
传输所述对外接口记录至所述网页端中,之后接收所述网页端所反馈的所述接口标识;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的。
本发明实施装置中,所述信息注册模块701,还用于:
获取所确定接口的接口信息并进行注册,得到注册接口信息;以及获取与所述接口标识相对应的注册接口信息。
本发明实施装置中,所述信息映射模块702,用于:
所述网页端通过预定转换方式,对所述原生类和方法进行格式转换,得到所述格式对象和方法,并将所述格式对象和方法存储至所述网页端的接口执行代码中。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述中已经详细说明了,故在此重复内容不再说明。
图8示出了可以应用本发明实施例的示例性系统架构800。
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805(仅仅是示例)。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的接口映射方法一般由服务器805执行,相应地,接口映射装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括信息注册模块、信息映射模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,信息注册模块还可以被描述为“对接口信息进行注册的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
用于传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
本发明实施例的技术方案,与现有方式比对具有以下有益效果:
1)Native端通过将对外接口记录、注册接口信息传输至WebApp中,以便页面中JS获取Native中的接口能力,无需native提供接口文档;
2)将WebApp中的业务层和逻辑层分离,业务层确定所需调用Native的接口,引擎层获取注册接口信息,分工明确;若后续WebApp出现异常,也便于问题发现和及时解决;
3)在WebApp页面初始化时就创建好映射到JS的JS对象和调用方法,并与Native中的对象方法同名,以将Native提供的接口能力完全透明给JS,JS调用自身的方法就等同于调用了Native中的对应方法;
4)利用原生代码可以往WebView中注入js脚本语句的原理,使得Native开放的接口能力与WebApp页面的JS融为一体,方便JS SDK对外提供接口能力的分类和封装,并使多端(iOS/android)接口一致;
5)便于Native开发人员更专注于接口能力的开发,H5开发人员更专注于业务和应用的开发,同时减少两端开发人员的交流次数,提高调试联调效率,降低出错率,同时有利于快速的定位问题。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种接口映射方法,其特征在于,包括:
原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
2.根据权利要求1所述的方法,其特征在于,所述原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息,包括:
在加载所述网页端的过程中,所述原生端获取所述网页端中的接口标识,确定与所述接口标识相对应的接口;
获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;
接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息。
3.根据权利要求1所述的方法,其特征在于,所述原生端接收所述网页端传输的接口标识,还包括:
所述原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
传输所述对外接口记录至所述网页端中,之后接收所述网页端所反馈的所述接口标识;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的。
4.根据权利要求1或3所述的方法,其特征在于,在所述确定可对外提供服务的接口之后,还包括:
获取所确定接口的接口信息并进行注册,得到注册接口信息;
所述获取与所述接口标识相对应的接口信息并进行注册,包括:获取与所述接口标识相对应的注册接口信息。
5.根据权利要求1所述的方法,其特征在于,所述在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,包括:
所述网页端通过预定转换方式,对所述原生类和方法进行格式转换,得到所述格式对象和方法,并将所述格式对象和方法存储至所述网页端的接口执行代码中。
6.一种接口映射装置,其特征在于,包括:
信息注册模块,用于原生端接收网页端传输的接口标识,获取与所述接口标识相对应的接口信息并进行注册,得到注册接口信息;其中,接口信息包括原生类和方法;
信息映射模块,用于传输所述注册接口信息至所述网页端,以在所述网页端将所述注册接口信息中的原生类和方法映射为格式对象和方法,建立所述原生端和所述网页端之间的接口映射关系。
7.根据权利要求6所述的装置,其特征在于,所述信息注册模块,用于:
在加载所述网页端的过程中,所述原生端获取所述网页端中的接口标识,确定与所述接口标识相对应的接口;
获取所述接口的接口信息并进行注册,以生成与所述网页端的标识相对应的注册接口信息;
接收所述网页端传输的初始化信息,根据所述网页端的标识,获取与所述网页端相对应的注册接口信息。
8.根据权利要求6所述的装置,其特征在于,所述信息注册模块,还用于:
所述原生端分析所有接口的特征,确定可对外提供服务的接口,生成对外接口记录;
传输所述对外接口记录至所述网页端中,之后接收所述网页端所反馈的所述接口标识;其中,所述接口标识为所述网页端通过比对所述对外接口记录和所述网页端的接口记录得到的。
9.根据权利要求6或8所述的装置,其特征在于,所述信息注册模块,还用于:
获取所确定接口的接口信息并进行注册,得到注册接口信息;以及
获取与所述接口标识相对应的注册接口信息。
10.根据权利要求6所述的装置,其特征在于,所述信息映射模块,用于:
所述网页端通过预定转换方式,对所述原生类和方法进行格式转换,得到所述格式对象和方法,并将所述格式对象和方法存储至所述网页端的接口执行代码中。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201910457773.5A 2019-05-29 2019-05-29 一种接口映射方法和装置 Pending CN112015384A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910457773.5A CN112015384A (zh) 2019-05-29 2019-05-29 一种接口映射方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910457773.5A CN112015384A (zh) 2019-05-29 2019-05-29 一种接口映射方法和装置

Publications (1)

Publication Number Publication Date
CN112015384A true CN112015384A (zh) 2020-12-01

Family

ID=73501390

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910457773.5A Pending CN112015384A (zh) 2019-05-29 2019-05-29 一种接口映射方法和装置

Country Status (1)

Country Link
CN (1) CN112015384A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515767A (zh) * 2021-08-02 2021-10-19 杭州粉象家科技有限公司 一种基于混合模式移动应用的接口请求管理方法及装置
CN113778566A (zh) * 2021-01-29 2021-12-10 北京京东拓先科技有限公司 原生应用调用方法、装置、电子设备和计算机可读介质
CN114090135A (zh) * 2021-11-24 2022-02-25 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778566A (zh) * 2021-01-29 2021-12-10 北京京东拓先科技有限公司 原生应用调用方法、装置、电子设备和计算机可读介质
CN113515767A (zh) * 2021-08-02 2021-10-19 杭州粉象家科技有限公司 一种基于混合模式移动应用的接口请求管理方法及装置
CN113515767B (zh) * 2021-08-02 2024-01-23 杭州粉象家科技有限公司 一种基于混合模式移动应用的接口请求管理方法及装置
CN114090135A (zh) * 2021-11-24 2022-02-25 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置
CN114090135B (zh) * 2021-11-24 2024-05-24 北京金堤科技有限公司 具有纠错功能且支持跨平台调用组件的方法和装置

Similar Documents

Publication Publication Date Title
CN108345531B (zh) 一种测试方法、装置及系统
CN110198247B (zh) 接口测试方法及系统
CN111176626B (zh) 跨编程语言的代码调用方法及装置、介质、设备
CN111338623B (zh) 一种开发用户界面的方法、装置、介质和电子设备
CN112015384A (zh) 一种接口映射方法和装置
CN111221572B (zh) 一种自动适配运行环境的方法、装置、介质和设备
CN104821954A (zh) 一种跨平台远程过程调用方法
CN110806945B (zh) 接口对接方法、装置和计算机可读介质
CN113821352A (zh) 一种远程服务的调用方法和装置
CN110659021B (zh) 一种移动端内微应用的开发及测试系统
CN114500481A (zh) 业务请求处理方法、系统和装置
KR102123750B1 (ko) 네트워크 서비스 요청
CN116561013B (zh) 基于目标服务框架的测试方法、装置、电子设备和介质
CN113220339A (zh) 一种页面生成方法和装置
CN107239265B (zh) Java函数与C函数的绑定方法及装置
CN110489326B (zh) 基于ids的httpapi调试方法装置、介质和设备
WO2023083071A1 (zh) 视图交互方法、装置、电子设备及计算机可读介质
CN116781586A (zh) 一种gRPC流量解析方法、装置、设备及介质
CN111414154A (zh) 前端开发的方法、装置、电子设备和存储介质
US20120124562A1 (en) Application Programming Interface Naming Using Collaborative Services
CN110825622A (zh) 软件测试方法、装置、设备和计算机可读介质
CN115080109A (zh) 基于混合开发的多云端环境联调方法、装置、系统和设备
CN113704079B (zh) 基于Protobuf的接口测试方法和装置
CN112783903B (zh) 生成更新日志的方法和装置
CN113468041A (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