将WebAPP转换为API服务接口的方法

文档序号:1577644 发布日期:2020-01-31 浏览:18次 >En<

阅读说明:本技术 将WebAPP转换为API服务接口的方法 (Method for converting WebAPP into API service interface ) 是由 成超 殷际峰 于 2019-09-24 设计创作,主要内容包括:本发明公开了将WebAPP转换为API服务接口的方法,涉及软件领域,其中,方法通过利用Phantomjs和Selenium模拟用户进行WebAPP的操作动作,将获取的操作动作及操作内容转换为API服务接口的输入参数,对操作动作返回的结果进行解析,将解析结果作为API服务接口的输出参数。本发明无需对在线WebApp项目代码进行修改,只需要基于在线WebApp进行封装,并将用户的操作自动转换成API服务接口的输入参数和输出参数,对原WebApp无入侵性,能快速将网页端WebApp应用转换为API服务接口,其优势在于,在无需要投入大量研发团队开发OPEN-API平台情况下,能够快速实现将WebApp转换为API服务接口,实现与与第三方平台的合作对接,降低了开发成本,增加了WebApp的应用场景。(The invention discloses a method for converting WebAPP into an API service interface, which relates to the field of software, wherein the method comprises the steps of simulating the operation action of WebAPP by a user through Phantomjs and Selenium, converting the obtained operation action and operation content into input parameters of the API service interface, analyzing the result returned by the operation action, and taking the analyzed result as the output parameters of the API service interface. The method and the device have the advantages that under the condition that a large amount of research and development teams are not required to develop an OPEN-API platform, the WebApp can be quickly converted into the API service interface, the cooperative docking with a third-party platform is realized, the development cost is reduced, and the application scene of the WebApp is increased.)

将WebAPP转换为API服务接口的方法

技术领域

本发明涉及软件领域,尤其是一种将WebAPP转换为API服务接口的方法。

背景技术

如今WebAPP的应用十分广泛,WebApp是使用网页技术实现的App,从一个简单的帮助消费者计算汽车租借费用的网页,到为商业人员和度假者提供全套旅游服务的大型复杂的 Web站点,都属于WebApp,总的来说,Web App就是运行于网络和标准浏览器上,基于网页技术开发实现特定功能的应用。但是现阶段有大量的WebApp对外提供的只有网页端应用,并没有开发对应的移动端平台应用,如果需要与第三方平台对接时,仅有网页端应用,无法完成后续合作。因此需要提出一种快速将网页端WebApp应用转换为API服务接口的方法,以完成与第三方平台的合作对接。

发明内容

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的目的是 提供一种快速将网页端WebApp应用转换为API服务接口的方法。

本发明所采用的技术方案是:

第一方面,本发明实施例提供将WebAPP转换为API服务接口的方法,包括:

获取所述API服务接口的输入参数,所述输入参数包括:操作动作和操作内容;

利用Phantomjs和Selenium模拟用户根据所述操作内容执行所述操作动作;

对所述操作动作返回的结果页面数据进行转化得到响应结果;

对所述响应结果进行解析,得到解析结果作为所述API服务接口的输出参数;

所述响应结果包括以下一种或多种:Json格式对象、Xml格式对象、Html格式对象、Byte字节流数据对象和图片对象。

进一步地,所述Phantomjs实时获取用户身份信息,保存并维护所述用户身份信息,所 述用户身份信息包括:Cookie和Token。

进一步地,对所述Json格式对象进行解析具体为:基于Python Json库转换所述Json格 式对象并生成的预设输出格式的Json数据作为解析结果。

进一步地,对所述Xml格式对象进行解析具体为:基于BeautifulSoup XML解析器解析 所述Xml格式对象并生成的预设输出格式的Json数据作为解析结果。

进一步地,对所述Html格式对象进行解析具体为:基于BeautifulSoup html引擎解析页 面元素并生成的预设输出格式Json数据作为解析结果。

进一步地,对所述Byte字节流数据对象进行解析具体为:根据编码转换成字符串,然 后将所述字符串转换成预设输出格式的Json数据作为解析结果。

进一步地,对所述图片对象进行解析具体为:将所述图片的名称上传到图片服务器生成 对应图片的url地址作为解析结果,所述url地址格式为Json数据格式。

第二方面,本发明实施例还提供一种将WebAPP转换为API服务接口的装置,包括:

获取输入参数模块:用于获取所述API服务接口的输入参数,所述输入参数包括:操作 动作和操作内容;

模拟用户操作动作模块:用于利用Phantomjs和Selenium模拟用户根据所述操作内容执 行所述操作动作;

获取响应结果模块:用于对所述操作动作返回的结果页面数据进行转化得到响应结果;

结果解析输出模块:用于对所述响应结果进行解析,得到解析结果作为所述API服务接 口的输出参数,所述响应结果包括以下一种或多种:Json格式对象、Xml格式对象、Html 格式对象、Byte字节流数据对象和图片对象。

第三方面,本发明实施例提供一种一种将WebAPP转换为API服务接口的设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如第一方面任一 项所述的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储 有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方 法。

本发明实施例的有益效果是:

本发明实施例通过利用Phantomjs和Selenium模拟用户进行WebAPP的操作动作,并获 取操作动作及操作内容作为API服务接口的输入参数,对操作动作返回的结果页面数据进行 转化得到响应结果,最后对响应结果进行解析,得到解析结果作为API服务接口的输出参数, 其中,响应结果包括:Json格式对象、Xml格式对象、Html格式对象、Byte字节流数据对 象和图片对象。本发明实施例无需对在线WebApp项目代码进行修改,只需要基于在线 WebApp进行封装,提取作为API服务接口的输入参数和输出参数,对源码无入侵性,实现了快速将网页端WebApp应用转换为API服务接口,使得在无需要投入大量研发团队开发OPEN-API平台情况下,仅有网页端应用的WebApp能够快速实现webapp的API接口服务 与第三方平台的合作对接,降低了开发成本,扩大了WebApp的应用范围。

可广泛应用于需要将WebApp应用转换为API服务接口的软件领域。

附图说明

图1是本发明中将WebAPP转换为API服务接口方法的一具体实施例的实现流程图;

图2是本发明中将WebAPP转换为API服务接口方法的一具体实施例的流程图;

图3是本发明中将WebAPP转换为API服务接口装置的一具体实施例的结构框图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明 的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图, 并获得其他的实施方式。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人 员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施 例的目的,不是旨在于限制本发明。

下面介绍本发明的一些专有名词:

APP:指安装在智能终端上的软件。

API:Application Programming Interface应用程序编程接口,是一些预先定义的函数,目 的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源 码,或理解内部工作机制的细节。

WebKit:是一个开源的浏览器引擎。

Xml:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有 结构性的标记语言。

Html:超文本标记语言(Hyper Text Markup Language),标准通用标记语言下的一个应用。 不是一种编程语言,而是一种标记语言(markup language)。

实施例一:

本发明实施例一提供一种将WebAPP转换为API服务接口的方法,图1为本发明实施例 提供的将WebAPP转换为API服务接口方法的实现流程图,如图1所示,该方法包括以下步骤:

S1:获取操作动作及操作内容作为API服务接口的输入参数。

例如:需要模拟用户提交根据日期查询的请求,则用户会在WebApp界面点选日期,此 时日期和点击查询动作则作为操作动作和操作内容作为要封装的API服务接口的输入参数, 具体的,利用无头浏览器自动输入传入的日期,并模拟点击相应的查询按钮(产生点击查询 按钮动作)和日期,将其定义为输入参数。

S2:利用Phantomjs和Selenium模拟用户根据操作内容执行操作动作。

其中,Phantomjs是一个基于webkit内核的无头浏览器,即没有UI界面的浏览器,指内 部的点击、翻页等人为相关操作需要程序设计实现的一个浏览器。Selenium是浏览器自动化 测试框架,是一个用于Web应用程序测试的工具,主要功能为:测试Web应用程序与浏览 器的兼容性,即测试应用程序是否能够很好的工作在不同浏览器和操作系统之上。

本实施例中,Selenium测试工具直接运行在Phantomjs无头浏览器中,产生的效果就像 真正的用户在操作应用程序一般,具体是:Selenium可以根据测试指令,利用Phantomjs模 拟用户在浏览器的操作动作,例如:自动加载页面、查询点击操作、判断网站上某些动作是 否发生等,并执行相应的动作,例如模拟用户的点击动作等。

S3:对操作动作返回的结果页面数据进行转化得到响应结果,结果页面数据指对应的操 作动作和操作内容在WebApp中返回的结果,例如上述的日期查询,则返回对应的日期。

S4:对响应结果进行解析,得到解析结果作为API服务接口的输出参数,其中,本实施 例中响应结果包括:Json格式对象、Xml格式对象、Html格式对象、Byte字节流数据对象和图片对象。

进一步地,本实施例中还通过Phantomjs实时获取用户身份信息,保存并维护用户身份 信息,这里的用户身份信息包括:Cookie和Token,具体的Phantomjs将用户身份信息维护 在相应的Cookie和Token池中。

其中,Cookie指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端 上的数据(通常经过加密),其包含有关用户的信息,无论何时用户链接到服务器,Web站 点都可以访问该用户的Cookie信息。

Token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。 当用户第一次登录后,服务器生成一个Token并将此Token返回给客户端,以后客户端只需 带上这个Token前来请求数据即可,无需再次带上用户名和密码。

简单Token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名, 为防止token泄露将token的前几位以哈希算法压缩成的一定长度的十六进制字符串)。

在一种具体实施方式中,可通过以下方式获得Token。

结合phantomjs#获取当前页面Cookie

driver.get_cookies();#用于解析cookie中是否包含token元素,包含则自动根据参数名取出对 应的token值

例如利用无头浏览器解析到cookie中含有token,其值为dhjhsd123dsffsaffsfaffdfaf,则将其 提取出来。

本实施例步骤S4中,对不同的响应结果进行解析的过程如下所述。

1)对Json格式对象进行解析具体为:基于Python Json库转换Json格式对象并生成的 预设输出格式的Json数据作为解析结果。

Json(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript(欧 洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表 示数据,具有简洁和清晰的层次结构,是一种数据交换语言,易于机器解析和生成。Python Json库通常用于在Web客户端和服务器数据交换,即把字符串类型的数据转换成Python基 本数据类型或者将Python基本数据类型转换成字符串类型。

本实施例中,作为WebAPP的API服务接口,其输出参数格式采用Json格式,其中预设输出格式指按照转换需求定义的Json数据格式,例如与API服务接口进行对接的第三方平台的输入格式要求等。

2)对Xml格式对象进行解析具体为:基于BeautifulSoup XML解析器解析Xml格式对 象并生成的预设输出格式的Json数据作为解析结果。

其中,BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档等,通过Beautiful Soup能够节省数小时甚至数天的工作时间。

本实施例中,采用BeautifulSoup的XML解析器解析Xml格式,并将其转换成转换需求定义的Json数据格式作为API服务接口的输出参数。

3)对Html格式对象进行解析具体为:基于BeautifulSoup html引擎解析页面元素并生 成的预设输出格式Json数据作为解析结果。其中,Html包括:静态页面和动态页面。

4)对Byte字节流数据对象进行解析具体为:根据编码转换成字符串,然后将字符串转 换成预设输出格式的Json数据作为解析结果。

5)对图片对象进行解析具体为:将图片的名称上传到图片服务器生成对应图片的url(统 一资源定位符,即域名)地址作为解析结果,其中,输出的图片url地址格式为预设输出格 式Json数据。

本实施例中,基于无头浏览器模拟请求的API服务接口,其响应速度取决于对应的WebApp的加载速度,此过程中涉及到的无头浏览器的打开和关闭,耗费资源比较严重,如果WebApp打开速度慢,则转换之后的API服务接口的响应速度也相对会慢,可通过基于无头浏览器池,增加接口的并发数量,当源WebApp网页加载速度不够快时,使用预加载技术实现提速,使得资源提前加载,以应对高并发情况。另外,纯粹的无头浏览器请求耗时较长,因此可以结合无头浏览器和维护的Token池减少请求时长。

如图2所示,为本实施例一种具体实施方式的流程图,从图中可以看出,该流程包括以 下步骤:

1)输入参数并发起服务接口转换请求。

2)判断当前输入的参数是否合理。

3)如果合理,则将输入的参数转化成Phantomjs的脚本命令。

4)从浏览器池获取Phantomjs线程访问WebAPP,并执行脚本动作。

5)判断脚本动作是否执行成功,如果执行成功则判断响应结果的数据格式,如:Json 格式对象、Xml格式对象、Html格式对象、Byte字节流数据对象和图片对象等;如果执行 不成功,则将失败的结果解析成Json格式对象,并将失败页面的截图返回成URL格式。

6)根据响应结果的格式,解析成不同的输出参数。

下面以某打车平台的WebAPP网页(html5版本)转换成API服务接口为实例进行说明, 即将打车页面封装成打车接口,包括步骤:

1)用户传入参数,包括:出发地A,目的地B。

2)后台获取到出发地A和目的地B,具体是:通过phantomjs加载打车平台html5首页, 通过find_element_by_xpath(用于识别页面元素)获取到出发地和目的地输入框,通过 send_keys(用于向元素中输入字符串)方法发送输入文本的请求。

3)通过phantomjs的find_element_by_xpath获取叫车按钮元素,获取调用按钮点击方法, 通过后台线程出发实际的叫车请求,并在后台自动运行,等待返回结果。

4)如果叫车请求被响应后,后台线程会通过get_screenshot_as_file保存当前成功的截图 结果,同时通过BeatufiulSoup解析打车响应后的html页面静态数据,与截图结果同时作为 输出参数的一部分

5)最终的输出参数是:将截图图片的URL和静态html页面解析结果,进行分别转换成预设输出格式的Json数据格式,以restful接口形式返回调用方。

上述详细描述了将一个打车平台的WebAPP网页转换成API服务接口的过程,可以理解 的是,所有html5应用的平台都可以用此方式实现自动转换成API接口。

进一步地,在一种具体实施方式中,使用到的工具类如下所述,例如:

接口参数解析转换通用工具类,用于将接口参数转换成动态执行phantomjs脚本;

登录态维护phantomjs浏览器池,用于预加载网页,加快请求解析速度;

解析器,例如xml解析器、html解析器、byte字节流解析器和其他解析器等;

通用转化工具类,用于将解析文件转换成Json数据。

本实施例利用Phantomjs和Selenium模拟用户进行WebAPP的操作动作,并获取操作动 作及操作内容作为API服务接口的输入参数,对操作动作返回的结果页面数据进行转化得到 响应结果,最后对响应结果进行解析,得到解析结果作为API服务接口的输出参数,其中, 响应结果包括:Json格式对象、Xml格式对象、Html格式对象、Byte字节流数据对象和图 片对象。

实施例二:

本实施例提供一种将WebAPP转换为API服务接口的装置,用于执行如实施例一所述的 方法,如图3所示,为本实施例的将WebAPP转换为API服务接口的装置结构框图,包括:

获取输入参数模块10:用于获取API服务接口的输入参数,输入参数包括:操作动作 和操作内容;

模拟用户操作动作模块20:用于利用Phantomjs和Selenium模拟用户根据操作内容执行 所述操作动作;

获取响应结果模块30:用于对操作动作返回的结果页面数据进行转化得到响应结果;

结果解析输出模块40:用于对响应结果进行解析,得到解析结果作为所述API服务接 口的输出参数,响应结果包括以下一种或多种:Json格式对象、Xml格式对象、Html格式对象、Byte字节流数据对象和图片对象。

另外,本发明还提供一种将WebAPP转换为API服务接口的设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如实施例一所述 的方法。

另外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执 行指令,其中计算机可执行指令用于使计算机执行如实施例一所述的方法。

本发明无需对在线WebApp项目代码进行修改,只需要基于在线WebApp进行封装,提 取作为API服务接口的输入参数和输出参数,对源码无入侵性,实现了快速将网页端WebApp 应用转换为API服务接口,使得在无需要投入大量研发团队开发OPEN-API平台情况下,仅 有网页端应用的WebApp能够快速实现webapp的API接口服务与第三方平台的合作对接, 降低了开发成本,扩大了WebApp的应用范围。可广泛应用于需要将WebApp应用转换为API服务接口的软件领域。

以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对 本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所 记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或 者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本 发明的权利要求和说明书的范围当中。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于提供文档的回顾处理的计算机实现的方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!