CN117827165A - 一种代码生成方法、装置、电子设备及存储介质 - Google Patents

一种代码生成方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117827165A
CN117827165A CN202211199772.3A CN202211199772A CN117827165A CN 117827165 A CN117827165 A CN 117827165A CN 202211199772 A CN202211199772 A CN 202211199772A CN 117827165 A CN117827165 A CN 117827165A
Authority
CN
China
Prior art keywords
interface
target
type
data
page
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
CN202211199772.3A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211199772.3A priority Critical patent/CN117827165A/zh
Publication of CN117827165A publication Critical patent/CN117827165A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种代码生成方法、装置、电子设备及存储介质,该方法包括:响应于页面加载事件,在确定所述页面加载事件对应的目标页面为预设页面时,基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口;对所述目标接口的接口返回数据进行监测,并向所述目标页面注入对应所述目标接口的目标控件;在监测到所述目标接口的接口返回数据时,将所述接口返回数据存储至目标存储空间;响应于对所述目标页面中所述目标控件的触发操作,对所述目标存储空间中的所述接口返回数据进行解析,生成目标编程语言类型的目标代码。本申请不受接口文档所使用框架的限制,提高了接口文档页面对应Typescript类型代码的生成效率和灵活性并降低了生成成本。

Description

一种代码生成方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种代码生成方法、装置、电子设备及存储介质。
背景技术
TypeScript是JavaScript的超集,即在JavaScript的语法基础上,增加了变量类型静态校验的功能,通过变量类型静态校验,有效降低了项目代码的漏洞(bug)。目前,开发人员在使用Typescript进行开发的过程中,常常需要根据后端的接口文档(一般为JavaScript数据格式)进行Typescript类型的定义。
相关技术中,在自动生成接口文档页面对应的Typescript类型代码时通常需要针对不同的接口文档系统单独开发相对应的Typescript类型代码生成方式,导致接口文档对应Typescript类型代码的生成效率低、成本高且灵活性差。
发明内容
为了解决现有技术的问题,本申请实施例提供了一种代码生成方法、装置、电子设备及存储介质。所述技术方案如下:
一方面,提供了一种代码生成方法,所述方法包括:
响应于页面加载事件,在确定所述页面加载事件对应的目标页面为预设页面时,基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口;
对所述目标接口的接口返回数据进行监测,并向所述目标页面注入对应所述目标接口的目标控件;
在监测到所述目标接口的接口返回数据时,将所述接口返回数据存储至目标存储空间;
响应于对所述目标页面中所述目标控件的触发操作,对所述目标存储空间中的所述接口返回数据进行解析,生成目标编程语言类型的目标代码。
另一方面,提供了一种代码生成装置,所述装置包括:
事件响应模块,用于响应于页面加载事件,在确定所述页面加载事件对应的目标页面为预设页面时,基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口;
监测注入模块,用于对所述目标接口的接口返回数据进行监测,并向所述目标页面注入对应所述目标接口的目标控件;
接口返回存储模块,用于在监测到所述目标接口的接口返回数据时,将所述接口返回数据存储至目标存储空间;
解析模块,用于响应于对所述目标页面中所述目标控件的触发操作,对所述目标存储空间中的所述接口返回数据进行解析,生成目标编程语言类型的目标代码。
在一个示例性的实施方式中,所述监测注入模块,包括:
重写模块,用于通过重写页面请求逻辑的响应方法,在所述页面请求逻辑中添加响应事件钩子函数;
其中,所述响应事件钩子函数用于被触发时产生指示监测到所述目标接口的接口返回数据的通知。
在一个示例性的实施方式中,所述装置还包括:
第一配置模块,用于响应于页面接口配置指令,展示页面接口配置界面;所述页面接口配置界面包括预设页面配置区域和待拦截接口配置控件;基于在所述预设页面配置区域的输入内容,确定所述预设页面;所述输入内容包括统一资源定位符;
第二配置模块,用于响应于对所述待拦截接口配置控件的触发操作,展示待拦截接口配置界面;所述待拦截接口配置界面包括接口区域和目标控件区域,所述接口区域用于输入待拦截接口的基础信息,所述目标控件区域用于输入目标控件的页面注入位置;
接口拦截配置信息生成模块,用于基于在所述待拦截接口配置界面的配置操作,生成所述预设页面对应的接口拦截配置信息;所述接口拦截配置信息包括基于所述待拦截接口配置控件配置的至少一个待拦截接口。
在一个示例性的实施方式中,所述事件响应模块在基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口时,具体用于确定所述预设页面对应的接口拦截配置信息中,处于激活状态的待拦截接口;将所述处于激活状态的待拦截接口确定为所述待拦截的目标接口。
在一个示例性的实施方式中,所述解析模块,包括:
数据对象解析模块,用于读取所述目标存储空间中的所述接口返回数据,将所述接口返回数据解析为数据对象;
第一解析子模块,用于基于所述数据对象的类型信息解析所述数据对象,所述第一解析子模块包括:
校验数据对象确定模块,用于在所述数据对象的类型信息指示为对象类型时,根据所述数据对象中的键数据判断所述数据对象是否为校验数据对象;
校验数据对象解析模块,用于在所述数据对象为校验数据对象,执行校验数据对象解析,以得到所述目标代码;所述校验数据对象解析基于所述校验数据对象中的预设字段对所述校验数据对象进行解析;
第二解析子模块,用于在所述数据对象为非校验数据对象时,遍历所述数据对象中的每个子数据对象,将遍历到的当前子数据对象作为所述数据对象,执行所述第一解析子模块。
在一个示例性的实施方式中,所述校验数据对象解析模块,包括:
描述字段查找模块,用于查找所述校验数据对象中的描述字段,若查找到所述描述字段,则基于注释模板和所述描述字段的内容,确定写入所述目标代码中的注释信息;
当前数据类型确定模块,用于基于所述校验数据对象中的type字段确定当前数据类型;
写入类型数据确定模块,用于基于所述当前数据类型,确定写入所述目标代码中的类型数据。
在一个示例性的实施方式中,所述写入类型数据确定模块,包括:
第一写入模块,用于在所述当前数据类型为基础类型时,将所述当前数据类型写入所述目标代码中;
第二写入模块,用于在所述当前数据类型为数组类型时,基于所述校验数据对象中的items字段确定items类型,基于所述items类型确定写入所述目标代码中的类型数据;
第三写入模块,用于在所述当前数据类型为对象类型,基于所述校验数据对象中的properties字段确定写入所述目标代码中的类型数据。
在一个示例性的实施方式中,所述第二写入模块,具体用于:
若所述items类型为数组类型,则将所述items字段按照元祖处理,遍历所述items字段中的每个元素,对遍历到的当前元素执行所述校验数据对象解析;
若所述items类型为对象类型,则将items字段中的每个元素按照固定格式处理,遍历所述items字段中的每个元素,对遍历到的当前元素执行所述校验数据对象解析。
在一个示例性的实施方式中,所述第三写入模块,具体用于:
遍历所述properties字段中的每个对象,对于遍历到的当前对象,将所述当前对象的键数据写入所述目标代码中,并对所述当前对象的值数据执行所述校验数据对象解析;
基于所述校验数据对象中的required字段,确定写入所述目标代码中的必要值信息。
在一个示例性的实施方式中,所述第一解析子模块,还包括:
第四写入模块,用于在所述数据对象的类型信息指示为基础类型时,将所述类型信息写入所述目标代码中;
在所述数据对象的类型信息指示为数组类型时,遍历数组中的每个元素,将遍历到的当前元素作为所述数据对象,执行所述第一解析子模块,得到所述数组对应的类型数据集合;
合并处理模块,用于在所述数组对应的类型数据集合中的类型数据均相同时,对所述类型数据集合进行合并处理,将合并处理后的类型数据写入所述目标代码中。
另一方面,提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述任一方面的代码生成方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如上述任一方面的代码生成方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一方面的代码生成方法。
本申请实施例通过响应于页面加载事件在确定页面加载事件对应的目标页面为预设页面时,基于该预设页面对应的接口拦截配置信息确定待拦截的目标接口,进而对该目标接口的接口返回数据进行监测并在目标页面注入对应该目标接口的目标控件,在监测到该目标接口的接口返回数据时将该接口返回数据存储至目标存储空间,进而响应于对目标页面中目标控件的触发操作,对目标存储空间中的上述接口返回数据进行解析生成目标编程语言类型的目标代码,从而不受接口文档所使用框架的限制,在自动高效生成接口文档页面对应目标编程语言类型的代码同时提高了Typescript类型代码生成的灵活性并降低了生成成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种代码生成方法的流程示意图;
图3是本申请实施例提供的页面接口配置界面的示意图;
图4是本申请实施例提供的待拦截接口配置界面的示意图;
图5是本申请实施例提供的插入chrome插件后的页面展示示意图;
图6是本申请实施例提供的web页面与服务器通信的流程示意图;
图7是本申请实施例提供的chrome插件注入js脚本以及该js脚本在页面作用的流程图;
图8是本申请实施例提供的在对目标存储空间中的接口返回数据进行解析的流程示意图;
图9是本申请实施例提供的校验数据对象解析的流程示意图;
图10是基于本申请实施例得到的TypeScript类型代码的示意图;
图11是本申请实施例提供的一种代码生成装置的结构框图;
图12是本申请实施例提供的一种电子设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面对本申请实施例中涉及的术语进行解释说明。
XMLHttpRequest:简称XHR,XHR对象用于与服务器交互,通过XHR可以在不刷新页面的情况下请求特定URL(Uniform Resource Locator,统一资源定位符),获取数据,从而允许网页在不影响用户操作的情况下,更新页面的局部内容。
Fetch:Fetch提供了一个JavaScript接口,用于访问和操纵HTTP管道的一些具体部分,例如请求和响应。它还提供了一个全局fetch()方法,该方法提供了一种简单、合理的方式来跨网络异步获取资源。
Json:即JavaScript Object Notation,JS对象简谱,是一种轻量级的数据交换格式,是目前互联网服务间进行数据交换最常见的一种交换格式,具有简洁、可读性好等特点。
Json Schema:Json Schema是Json的一种模式,用来定义Json数据约束的一个标准,用于描述与验证Json数据。具体的,Json Schema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包括成员、结构、类型、约束等。
TypeScript:一种开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成,是JavaScript的超集。
请参阅图1,其所示为本申请实施例提供的一种实施环境示意图,该实施环境包括终端110和服务器120,终端110与服务器120之间可以通过有线或者无线网络连接通信。
终端110包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。终端110可以通过浏览器显示页面,通常页面内容需要调用服务器中相应接口获取,而接口返回数据是基于相应接口的接口文档生成的,接口文档用于描述接口程序的内容,例如输入参数的格式、输出参数的格式等,因此浏览器显示的页面也可以称之为接口文档页面,也即与相应接口文档对应的页面。
服务器120可以为终端110中提供后台服务,服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
在一个示例性的实施方式中,终端110和服务器120均可以是区块链系统中的节点设备,能够将获取到以及生成的信息共享给区块链系统中的其他节点设备,实现多个节点设备之间的信息共享。区块链系统中的多个节点设备可以配置有同一条区块链,该区块链由多个区块组成,并且前后相邻的区块具有关联关系,使得任一区块中的数据被篡改时都能通过下一区块检测到,从而能够避免区块链中的数据被篡改,保证区块链中数据的安全性和可靠性。
本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
请参阅图2,其所示为本申请实施例提供的一种代码生成方法的流程示意图,该方法可以应用于图1中的终端。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201,响应于页面加载事件,在确定该页面加载事件对应的目标页面为预设页面时,基于该预设页面对应的接口拦截配置信息确定待拦截的目标接口。
其中,页面加载事件指示页面将要发生更新,通常在接收到页面更新操作指令时产生,其中页面更新操作可以包括修改页面URL(Uniform Resource Locator,统一资源定位符)、页面刷新以及页面回退等操作。
具体的实施中,可以重写页面history对象中的history.pushState和history.replaceState这两个方法,并在window注册相应的自定义事件,从而使得history.pushState和history.replaceState这两个方法执行后会触发上述自定义事件,通过监测上述自定义事件来接收页面URL变化的通知。而对于页面刷新以及页面回退操作,可以监测window.onpopstate事件,通过监测onpopstate事件来接收页面刷新以及页面回退的通知。
其中,页面加载事件对应的目标页面为更新后的页面,可以从页面加载事件中提取更新后页面的URL,进而可以确定该页面加载事件对应的目标页面。
其中,预设页面可以预先配置,具体可以配置预设页面的URL。通过将目标页面的URL与预设页面的URL进行比对,当二者一致时,可以确定页面加载事件对应的目标页面为预设页面;反之,当二者不一致时,可以确定页面加载事件对应的目标页面不是预设页面。
其中,预设页面对应的接口拦截配置信息表征至少一个待拦截接口以及每个待拦截接口对应的目标控件的页面注入位置。因此,基于预设页面对应的接口拦截配置信息可以确定出待拦截的目标接口。
在一个示例性的实施方式中,上述步骤S201之前该方法还可以包括配置预设页面以及该预设页面对应的接口拦截配置信息的相关步骤,具体的可以包括:
响应于页面接口配置指令,展示页面接口配置界面;该页面接口配置界面包括预设页面配置区域和待拦截接口配置控件;
基于在上述预设页面配置区域的输入内容,确定预设页面;其中,预设页面配置区域的输入内容包括统一资源定位符;
响应于对上述待拦截接口配置控件的触发操作,展示待拦截接口配置界面;该待拦截接口配置界面包括接口区域和目标控件区域,其中接口区域用于输入待拦截接口的基础信息,目标控件区域用于输入目标控件的页面注入位置;
基于在上述待拦截接口配置界面的配置操作,生成预设页面对应的接口拦截配置信息;其中,接口拦截配置信息包括基于待拦截接口配置控件配置的至少一个待拦截接口。
请参阅图3,其所示为本申请实施例提供的一种页面接口配置界面的示意图,其中,页面接口配置界面300包括预设页面配置区域301和待拦截接口配置控件302。在预设页面配置区域301可以输入预设页面的URL,如图3中的“www.example.com”,通过该区域的输入内容可以确定配置的预设页面。
通过触发页面接口配置界面300中的待拦截接口配置控件302可以展示待拦截接口配置界面,该触发操作可以包括点击、长按等操作。如图4所示为待拦截接口配置界面的示意图,待拦截接口配置界面400包括接口区域401和目标控件区域402,其中,接口区域401可以用于输入待拦截接口的基础信息,例如包括待拦截接口的接口名称、接口URL、接口字段等,其中接口URL可以采用正则表达式的方式进行配置,以提高对待拦截接口配置的灵活性。
目标控件区域402用于输入目标控件的页面注入位置,该页面注入位置可以为父级DOM(Document Object Model,文档对象模型)节点标识,如父级DOM节点的ID或类名(classname)等,可以理解的,目标控件区域402中还可以用于输入与目标控件相关的其他信息,如显示在目标控件上的文字描述等。
每次在待拦截接口配置界面400的配置操作可以实现对一个待拦截接口的配置,当需要配置多个待拦截接口时可以在完成一个待拦截接口的配置后,再次触发待拦截接口配置控件302以进入图4所示的待拦截接口配置界面进行另一个待拦截接口配置,从而可以得到预设页面对应的接口拦截配置信息,该接口拦截配置信息包括基于待拦截接口配置控件302配置的至少一个待拦截接口。
示例性的,页面接口配置界300中还可以包括待拦截接口列表区域303,该待拦截接口列表区域303基于预设页面对应的接口拦截配置信息展示配置的至少一个待拦截接口。可以理解的,还可以在待拦截接口列表区域303针对每个待拦截接口设置调整控件3031,通过该调整控件3031可以对相应待拦截接口的配置信息进行修改或者删除相应的待拦截接口。
上述实施方式,通过配置预设页面以及对应的待拦截接口可以根据实际需要指定拦截接口以及页面中目标控件的展示,提高了生成接口文档对应的目标编程语言类型的目标代码的灵活性。
在一个示例性的实施方式中,为了进一步提高本申请实施例的灵活性,在配置预设页面对应的接口拦截配置信息时可以设置每个待拦截接口的状态信息,该状态信息指示相应待拦截接口是否处于激活状态,如图4所示的待拦截接口配置界面400中还可以包括状态区域403,该状态区域403用于设置当前配置的待拦截接口的状态信息,例如状态区域403中设置一个激活状态开关,当激活状态开关为“off”时表示待拦截接口处于未激活状态,当激活状态开关为“on”时表示待拦截接口处于激活状态。
可以理解的,为了提高配置效率,还可以如图3所示在待拦截接口列表区域303中针对每个待拦截接口展示激活状态开关3032,从而在页面接口配置界300即可调整各待拦截接口的激活状态,有利于提高配置效率。
基于此,上述步骤S201在基于预设页面对应的接口拦截配置信息确定待拦截的目标接口时,可以包括:
确定预设页面对应的接口拦截配置信息中,处于激活状态的待拦截接口;
将处于激活状态的待拦截接口确定为待拦截的目标接口。
上述实施方式,通过基于预设页面的接口拦截配置信息中处于激活状态的待拦截接口来确定待拦截的目标接口,可以实现一次配置多次实施,提高了本申请技术方案实施的灵活性和效率。
S203,对目标接口的接口返回数据进行监测,并向目标页面注入对应该目标接口的目标控件。
其中,接口返回数据为预设数据结构的数据,如该预设数据结构为Json数据结构。
具体的,可以通过重写页面请求逻辑的响应方法,在该页面请求逻辑中添加响应事件钩子函数,其中,该响应事件钩子函数用于被触发时产生指示监测到目标接口的接口返回数据的通知,进而可以通过该响应事件钩子函数对目标接口的接口返回数据进行监测。
其中,页面请求逻辑可以是window.XMLHttpRequest和window.fetch,响应事件钩子函数可以基于接口拦截配置信息中该目标接口对应的接口URL信息生成。
其中,向目标页面注入对应该目标接口的目标控件时,可以从接口拦截配置信息中获取该目标接口对应目标控件的页面注入位置,进而基于该页面注入位置向目标页面注入目标控件,例如注入目标按钮。可以理解的,注入目标控件时若接口拦截配置信息中对应目标接口的目标控件还配置有相关的其他信息,如显示在目标控件上的文字描述等,那么还可以基于配置的相关其他信息确定注入的目标控件的可视化属性,如目标控件上显示的文字、目标控件的形状等等。
S205,在监测到目标接口的接口返回数据时,将该接口返回数据存储至目标存储空间。
其中,目标存储空间可以是浏览器与后台服务器建立的会话对应的本地会话存储空间(即SessionStorage)。
具体的实施中,当监测到目标接口的接口返回数据时,可以获取该接口返回数据并将该接口返回数据存储至SessionStorage。需要说明的是,由于与Web服务器交互的数据格式为JSON,因此接口返回的接口返回数据为JSON的字符串。
S207,响应于对目标页面中目标控件的触发操作,对目标存储空间中的上述接口返回数据进行解析,生成目标编程语言类型的目标代码。
其中,对于目标控件的触发操作可以是点击、长按等操作。
其中,目标编程语言类型可以是TypeScript类型。
示例性的,在生成目标编程语言类型的目标代码后,可以将该目标代码复制到剪贴板中并展示该剪贴板,从而开发人员无需手动拼接,提高了基于接口返回数据生成目标代码的效率和准确性。
本申请实施例的上述技术方案不限于接口文档的使用框架,支持个性化不同接口配置,同时提供了可视化入口,直接向接口文档页面注入目标控件(如按钮),简单触发目标控件即可基于接口的接口返回数据生成目标编程语言类型的代码,当目标编程语言类型为TypeScript类型时,可以大大提高TypeScript类型代码的生成效率、生成灵活性并降低了生成成本。
考虑到目前的浏览器中,页面通过XHR或fetch向服务器发送http请求,从而与服务器进行通信,而chrome插件提供了向页面中注入js的能力,因此,本申请实施例的代码生成方法可以实现为chrome插件,利用该chrome插件向页面注入用于实现本申请实施例的代码生成方法的js脚本,如图5所示为插入上述chrome插件后的页面展示示意图,其中包括了前述的页面接口配置界面。
图6所示为本申请实施例提供的web页面与服务器通信的流程示意图,其中利用了chrome插件向web页面注入了用于实现本申请实施例的代码生成方法的js脚本,进而可以在浏览器与服务器交互的过程中可以基于该js脚本执行本申请实施例的前述步骤S201至步骤S207的相关内容,生成ts代码(即TypeScript类型的代码)。
以目标编程语言类型是TypeScript类型为例,图7所示为chrome插件注入js脚本以及该js脚本在页面作用的流程图,具体为:1)在页面初始化时,本申请实施例中的chrome插件向页面注入js脚本,从而页面初始化时页面可以加载插件注入的js脚本;2)重写history.pushState、history.replaceState,并在window注册相应的自定义事件;3)监测页面的pushState、replaceState、popstate事件,当页面URL发生变化或者页面刷新、回退时,根据chrome插件所设置的配置,判断是否为预设页面;4)如果是预设页面,则重写window.XMLHttpRequest和window.fetch,根据chrome插件配置对所需拦截的接口进行监测,并在页面注入相应的按钮;5)在监测到所需拦截接口的返回数据时获取该返回数据(为json数据),存储进sessionStorage;6)如果不是预设页面,则重置window.XMLHttpRequest和window.fetch为初始状态;7)当用户点击注入的按钮时,读取sessionStorage中的上述json数据,解析生成ts类型(TypeScript类型)代码。
上述实施方式利用chrome插件可向页面注入代码的特性,通过覆盖XHR、Fecth对象,结合插件对拦截接口的配置对拦截相应接口的响应内容,并进行解析处理生成typescript类型,不受接口文档的使用框架限制,通过向接口文档页面无负担注入导出按钮,点击按钮一键复制相关代码至剪切板,适用性广泛,简单配置后即可使用,无需对现有接口文档系统进行二次开发。
在一个示例性的实施方式中,上述步骤S207在对目标存储空间中的接口返回数据进行解析生成目标编程语言类型的目标代码时可以如图8所示包括以下步骤:
S801,读取目标存储空间中的接口返回数据,将该接口返回数据解析为数据对象。
具体的实施中,接口的接口返回数据是JSON格式的字符串,可以使用JSON.parse()方法将JSON格式的字符串转换为JavaScript对象(即数据对象)。
S803,基于上述数据对象的类型信息解析该数据对象。
具体的,JavaScript对象的类型信息可以包括对象类型即Object、基础类型(如字符串string、数字number、布尔值boolean、null)和数组类型即Array。
具体的,可以使用Object.prototype.toString.call()对数据对象的数据类型进行判定以得到数据对象的类型信息,进而可以基于数据对象的类型信息解析数据对象。
在解析数据对象时,若数据对象的类型信息指示为对象类型即Object,则可以执行以下步骤S805;若数据对象的类型信息指示为基础类型即字符串string、数字number、布尔值boolean、null中的任意一种时,可以执行以下步骤S811;若数据对象的类型信息指示为数组类型即Array,则可以执行以下步骤S813~S815。
S805,根据数据对象中的键数据判断该数据对象是否为校验数据对象。
其中,校验数据对象为Jsonschema。
具体的,可以查找数据对象的键数据即key值中是否包含Jsonschema的关键字,若查找到Jsonschema的关键字则可以确定该数据对象为校验数据对象即为Jsonschema;反之,若未查找到Jsonschema的关键字则可以确定该数据对象为非校验数据对象即不是Jsonschema。
具体的,若确定数据对象为校验数据对象,则可以进入以下步骤S807;反之,若确定数据对象为非校验数据对象,则可以执行以下步骤S809。
S807,执行校验数据对象解析,以得到目标代码。
其中,校验数据对象解析基于校验数据对象中的预设字段对校验数据对象进行解析,以得到目标代码。
S809,遍历数据对象中的每个子数据对象,将遍历到的当前子数据对象作为步骤S803中的数据对象,并执行步骤S803。
S811,将数据对象的类型信息写入待生成的目标代码中。
S813,遍历数组中的每个元素,将遍历到的当前元素作为步骤S803中的数据对象,并执行步骤S803,在遍历结束时得到该数组对应的类型数据集合。
可以理解的,数组对应的类型数据集合中包括数组中每个元素对应的类型数据。
S815,判断该数组对应的类型数据集合中的类型数据是否均相同,若相同则执行步骤S817;反之,则可以执行步骤S819。
S817,若上述数组对应的类型数据集合中的类型数据均相同,则对该类型数据集合进行合并处理,将合并处理后的类型数据写入待生成的目标代码中。
具体的,合并处理可以是将类型数据集合处理为type[]格式。
S817,若上述数组对应的类型数据集合中的类型数据不完全相同,则不对该类型数据集合进行合并处理,直接将该类型数据集合写入待生成的目标代码中。
在一个示例性的实施方式中,上述步骤S807在实施时可以包括图9中的以下步骤:
S901,查找校验数据对象中的描述字段,若查找到描述字段,则基于注释模板和描述字段的内容,确定写入目标代码中的注释信息。
具体的,查找校验数据对象中是否有描述字段即description字段,如果有则基于注释模板和description字段的内容,确定写入到待生成的目标代码中的注释信息并写入。
S903,基于校验数据对象中的type字段确定当前数据类型。
S905,基于上述当前数据类型,确定写入目标代码中的类型数据。
具体的实施中,上述步骤S905在基于上述当前数据类型,确定写入目标代码中的类型数据时可以包括:
S907,若当前数据类型为基础类型,则将当前数据类型写入待生成的目标代码中。
其中,基础类型包括字符串(string)、数字(number)、布尔值(boolean)、null,那么在当前数据类型为上述基础类型中的任意一个时,将该当前数据类型直接写入到待生成的目标代码中。
S909,若当前数据类型为数组类型,则基于校验数据对象中的items字段确定items类型,基于items类型确定写入待生成的目标代码中的类型数据。
其中,数组类型即Array,若当前数据类型为Array,则读取校验数据对象中的items字段,使用Object.prototype.toString.call()判断items字段的类型(即items类型),从而基于items类型来确定写入待生成的目标代码中的类型数据。
在一个示例性的实施方式中,继续参见图9,上述步骤S909在基于items类型确定写入待生成的目标代码中的类型数据时,可以包括:
S9091,若items类型为数组类型(即Array),则将items字段按照元祖处理,遍历items字段中的每个元素,对遍历到的当前元素执行校验数据对象解析也即将遍历到的当前元素作为前述步骤S807中的校验数据对象,并递归执行前述步骤S807。
S9093,若items类型为对象类型(即Object),则将items字段中的每个元素按照固定格式处理,遍历items字段中的每个元素,对遍历到的当前元素执行所述校验数据对象解析也即将遍历到的当前元素作为前述步骤S807中的校验数据对象,并递归执行前述步骤S807。
S911,若当前数据类型为对象类型,则基于校验数据对象中的properties字段确定写入待生成的目标代码中的类型数据。
其中,对象类型即Object。
具体的,若当前数据类型为Object,则读取校验数据对象中的properties字段和required字段。对于properties字段,遍历properties字段中的每个对象,对于遍历到的当前对象,将当前对象的键数据即key值写入到待生成的目标代码中,并对当前对象的值数据即value执行校验数据对象解析也即将当前对象的值数据作为前述步骤S807中的校验数据对象,并递归执行前述步骤S807;
对于required字段,根据required字段读取是否为必要值,进而确定写入到待生成的目标代码中的必要信息。
如图10所示为基于本申请实施例得到的TypeScript类型代码的示意图,可见基于上述实施方式,在数据对象为校验数据对象即Jsonschema时执行校验数据对象解析,可以生成以对象为最小颗粒度的Typescript类型的代码,提高了所生成Typescript类型的代码的精确性。
与上述几种实施例提供的代码生成方法相对应,本申请实施例还提供一种代码生成装置,由于本申请实施例提供的代码生成装置与上述几种实施例提供的代码生成方法相对应,因此前述代码生成方法的实施方式也适用于本实施例提供的代码生成装置,在本实施例中不再详细描述。
请参阅图11,其所示为本申请实施例提供的一种代码生成装置的结构示意图,该装置具有实现上述方法实施例中代码生成方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图11所示,该代码生成装置1100可以包括:
事件响应模块1110,用于响应于页面加载事件,在确定该页面加载事件对应的目标页面为预设页面时,基于该预设页面对应的接口拦截配置信息确定待拦截的目标接口;
监测注入模块1120,用于对该目标接口的接口返回数据进行监测,并向该目标页面注入对应该目标接口的目标控件;
接口返回存储模块1130,用于在监测到该目标接口的接口返回数据时,将该接口返回数据存储至目标存储空间;
解析模块1140,用于响应于对该目标页面中该目标控件的触发操作,对该目标存储空间中的该接口返回数据进行解析,生成目标编程语言类型的目标代码。
在一个示例性的实施方式中,该监测注入模块1120,包括:
重写模块,用于通过重写页面请求逻辑的响应方法,在该页面请求逻辑中添加响应事件钩子函数;
其中,该响应事件钩子函数用于被触发时产生指示监测到该目标接口的接口返回数据的通知。
在一个示例性的实施方式中,该装置还包括:
第一配置模块,用于响应于页面接口配置指令,展示页面接口配置界面;该页面接口配置界面包括预设页面配置区域和待拦截接口配置控件;基于在该预设页面配置区域的输入内容,确定该预设页面;该输入内容包括统一资源定位符;
第二配置模块,用于响应于对该待拦截接口配置控件的触发操作,展示待拦截接口配置界面;该待拦截接口配置界面包括接口区域和目标控件区域,该接口区域用于输入待拦截接口的基础信息,该目标控件区域用于输入目标控件的页面注入位置;
接口拦截配置信息生成模块,用于基于在该待拦截接口配置界面的配置操作,生成该预设页面对应的接口拦截配置信息;该接口拦截配置信息包括基于该待拦截接口配置控件配置的至少一个待拦截接口。
在一个示例性的实施方式中,该事件响应模块1110在基于该预设页面对应的接口拦截配置信息确定待拦截的目标接口时,具体用于:确定该预设页面对应的接口拦截配置信息中,处于激活状态的待拦截接口;将该处于激活状态的待拦截接口确定为该待拦截的目标接口。
在一个示例性的实施方式中,该解析模块1140,包括:
数据对象解析模块,用于读取该目标存储空间中的该接口返回数据,将该接口返回数据解析为数据对象;
第一解析子模块,用于基于该数据对象的类型信息解析该数据对象,该第一解析子模块包括:
校验数据对象确定模块,用于在该数据对象的类型信息指示为对象类型时,根据该数据对象中的键数据判断该数据对象是否为校验数据对象;
校验数据对象解析模块,用于在该数据对象为校验数据对象,执行校验数据对象解析,以得到该目标代码;该校验数据对象解析基于该校验数据对象中的预设字段对该校验数据对象进行解析;
第二解析子模块,用于在该数据对象为非校验数据对象时,遍历该数据对象中的每个子数据对象,将遍历到的当前子数据对象作为该数据对象,执行该第一解析子模块。
在一个示例性的实施方式中,该校验数据对象解析模块,包括:
描述字段查找模块,用于查找该校验数据对象中的描述字段,若查找到该描述字段,则基于注释模板和该描述字段的内容,确定写入该目标代码中的注释信息;
当前数据类型确定模块,用于基于该校验数据对象中的type字段确定当前数据类型;
写入类型数据确定模块,用于基于该当前数据类型,确定写入该目标代码中的类型数据。
在一个示例性的实施方式中,该写入类型数据确定模块,包括:
第一写入模块,用于在该当前数据类型为基础类型时,将该当前数据类型写入该目标代码中;
第二写入模块,用于在该当前数据类型为数组类型时,基于该校验数据对象中的items字段确定items类型,基于该items类型确定写入该目标代码中的类型数据;
第三写入模块,用于在该当前数据类型为对象类型,基于该校验数据对象中的properties字段确定写入该目标代码中的类型数据。
在一个示例性的实施方式中,该第二写入模块,具体用于:
若该items类型为数组类型,则将该items字段按照元祖处理,遍历该items字段中的每个元素,对遍历到的当前元素执行该校验数据对象解析;
若该items类型为对象类型,则将items字段中的每个元素按照固定格式处理,遍历该items字段中的每个元素,对遍历到的当前元素执行该校验数据对象解析。
在一个示例性的实施方式中,该第三写入模块,具体用于:
遍历该properties字段中的每个对象,对于遍历到的当前对象,将该当前对象的键数据写入该目标代码中,并对该当前对象的值数据执行该校验数据对象解析;
基于该校验数据对象中的required字段,确定写入该目标代码中的必要值信息。
在一个示例性的实施方式中,该第一解析子模块,还包括:
第四写入模块,用于在该数据对象的类型信息指示为基础类型时,将该类型信息写入该目标代码中;
在该数据对象的类型信息指示为数组类型时,遍历数组中的每个元素,将遍历到的当前元素作为该数据对象,执行该第一解析子模块,得到该数组对应的类型数据集合;
合并处理模块,用于在该数组对应的类型数据集合中的类型数据均相同时,对该类型数据集合进行合并处理,将合并处理后的类型数据写入该目标代码中。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的任意一种代码生成方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行,即上述电子设备可以包括计算机终端、服务器或者类似的运算装置。以运行在终端上为例,图12是本申请实施例提供的运行一种代码生成方法的电子设备的硬件结构框图,具体来讲:
终端可以包括RF(Radio Frequency,射频)电路1210、包括有一个或一个以上计算机可读存储介质的存储器1220、输入单元1230、显示单元1240、传感器1250、音频电路1260、WiFi(wireless fidelity,无线保真)模块1270、包括有一个或者一个以上处理核心的处理器1280、以及电源1290等部件。本领域技术人员可以理解,图12中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路1210可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器1280处理;另外,将涉及上行的数据发送给基站。通常,RF电路1210包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路1210还可以通过无线通信与网络和其他终端通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器1220可用于存储软件程序以及模块,处理器1280通过运行存储在存储器1220的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述终端的使用所创建的数据等。此外,存储器1220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1220还可以包括存储器控制器,以提供处理器1280和输入单元1230对存储器1220的访问。
输入单元1230可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元1230可包括触敏表面1231以及其他输入设备1232。触敏表面1231,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面1231上或在触敏表面1231附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面1231可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1280,并能接收处理器1280发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面1231。除了触敏表面1231,输入单元1230还可以包括其他输入设备1232。具体地,其他输入设备1232可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1240可用于显示由用户输入的信息或提供给用户的信息以及所述终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元1240可包括显示面板1241,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板1241。进一步的,触敏表面1231可覆盖显示面板1241,当触敏表面1231检测到在其上或附近的触摸操作后,传送给处理器1280以确定触摸事件的类型,随后处理器1280根据触摸事件的类型在显示面板1241上提供相应的视觉输出。其中,触敏表面1231与显示面板1241可以两个独立的部件来实现输入和输入功能,但是在某些实施例中,也可以将触敏表面1231与显示面板1241集成而实现输入和输出功能。
所述终端还可包括至少一种传感器1250,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1241的亮度,接近传感器可在所述终端移动到耳边时,关闭显示面板1241和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于所述终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1260、扬声器1261,传声器1262可提供用户与所述终端之间的音频接口。音频电路1260可将接收到的音频数据转换后的电信号,传输到扬声器1261,由扬声器1261转换为声音信号输出;另一方面,传声器1262将收集的声音信号转换为电信号,由音频电路1260接收后转换为音频数据,再将音频数据输出处理器1280处理后,经RF电路1210以发送给比如另一终端,或者将音频数据输出至存储器1220以便进一步处理。音频电路1260还可能包括耳塞插孔,以提供外设耳机与所述终端的通信。
WiFi属于短距离无线传输技术,所述终端通过WiFi模块1270可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图12示出了WiFi模块1270,但是可以理解的是,其并不属于所述终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1280是所述终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1220内的软件程序和/或模块,以及调用存储在存储器1220内的数据,执行所述终端的各种功能和处理数据。可选的,处理器1280可包括一个或多个处理核心;优选的,处理器1280可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1280中。
所述终端还包括给各个部件供电的电源1290(比如电池),优选的,电源可以通过电源管理系统与处理器1280逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1290还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述方法实施例提供的代码生成方法的指令。
本申请的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于电子设备之中以保存用于实现一种代码生成方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的任意一种代码生成方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一方面的代码生成方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种代码生成方法,其特征在于,所述方法包括:
响应于页面加载事件,在确定所述页面加载事件对应的目标页面为预设页面时,基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口;
对所述目标接口的接口返回数据进行监测,并向所述目标页面注入对应所述目标接口的目标控件;
在监测到所述目标接口的接口返回数据时,将所述接口返回数据存储至目标存储空间;
响应于对所述目标页面中所述目标控件的触发操作,对所述目标存储空间中的所述接口返回数据进行解析,生成目标编程语言类型的目标代码。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标接口的接口返回数据进行监测,包括:
通过重写页面请求逻辑的响应方法,在所述页面请求逻辑中添加响应事件钩子函数;
其中,所述响应事件钩子函数用于被触发时产生指示监测到所述目标接口的接口返回数据的通知。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于页面接口配置指令,展示页面接口配置界面;所述页面接口配置界面包括预设页面配置区域和待拦截接口配置控件;
基于在所述预设页面配置区域的输入内容,确定所述预设页面;所述输入内容包括统一资源定位符;
响应于对所述待拦截接口配置控件的触发操作,展示待拦截接口配置界面;所述待拦截接口配置界面包括接口区域和目标控件区域,所述接口区域用于输入待拦截接口的基础信息,所述目标控件区域用于输入目标控件的页面注入位置;
基于在所述待拦截接口配置界面的配置操作,生成所述预设页面对应的接口拦截配置信息;所述接口拦截配置信息包括基于所述待拦截接口配置控件配置的至少一个待拦截接口。
4.根据权利要求3所述的方法,其特征在于,所述基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口,包括:
确定所述预设页面对应的接口拦截配置信息中,处于激活状态的待拦截接口;
将所述处于激活状态的待拦截接口确定为所述待拦截的目标接口。
5.根据权利要求1~4中任一项所述的方法,其特征在于,所述对所述目标存储空间中的所述接口返回数据进行解析处理,生成目标编程语言类型的目标代码,包括:
读取所述目标存储空间中的所述接口返回数据,将所述接口返回数据解析为数据对象;
基于所述数据对象的类型信息解析所述数据对象,所述解析所述数据对象包括:
在所述数据对象的类型信息指示为对象类型时,根据所述数据对象中的键数据判断所述数据对象是否为校验数据对象;
若所述数据对象为校验数据对象,则执行校验数据对象解析,以得到所述目标代码;所述校验数据对象解析基于所述校验数据对象中的预设字段对所述校验数据对象进行解析;
若所述数据对象为非校验数据对象,则遍历所述数据对象中的每个子数据对象,将遍历到的当前子数据对象作为所述数据对象,执行所述基于所述数据对象的类型信息解析所述数据对象的步骤。
6.根据权利要求5所述的方法,其特征在于,所述基于所述校验数据对象中的预设字段对所述校验数据对象进行解析,得到所述校验数据对象的解析结果包括:
查找所述校验数据对象中的描述字段,若查找到所述描述字段,则基于注释模板和所述描述字段的内容,确定写入所述目标代码中的注释信息;
基于所述校验数据对象中的type字段确定当前数据类型;
基于所述当前数据类型,确定写入所述目标代码中的类型数据。
7.根据权利要求6所述的方法,其特征在于,所述基于所述当前数据类型,确定写入所述目标代码中的类型数据,包括:
若所述当前数据类型为基础类型,则将所述当前数据类型写入所述目标代码中;
若所述当前数据类型为数组类型,则基于所述校验数据对象中的items字段确定items类型,基于所述items类型确定写入所述目标代码中的类型数据;
若所述当前数据类型为对象类型,则基于所述校验数据对象中的properties字段确定写入所述目标代码中的类型数据。
8.根据权利要求7所述的方法,其特征在于,所述基于所述items类型确定写入所述目标代码中的类型数据,包括:
若所述items类型为数组类型,则将所述items字段按照元祖处理,遍历所述items字段中的每个元素,对遍历到的当前元素执行所述校验数据对象解析;
若所述items类型为对象类型,则将items字段中的每个元素按照固定格式处理,遍历所述items字段中的每个元素,对遍历到的当前元素执行所述校验数据对象解析。
9.根据权利要求7所述的方法,其特征在于,所述基于所述校验数据对象中的properties字段确定写入所述目标代码中的类型数据,包括:
遍历所述properties字段中的每个对象,对于遍历到的当前对象,将所述当前对象的键数据写入所述目标代码中,并对所述当前对象的值数据执行所述校验数据对象解析;
基于所述校验数据对象中的required字段,确定写入所述目标代码中的必要值信息。
10.根据权利要求5所述的方法,其特征在于,所述解析所述数据对象还包括:
在所述数据对象的类型信息指示为基础类型时,将所述类型信息写入所述目标代码中;
在所述数据对象的类型信息指示为数组类型时,遍历数组中的每个元素,将遍历到的当前元素作为所述数据对象,执行所述解析所述数据对象的步骤,得到所述数组对应的类型数据集合;
若所述数组对应的类型数据集合中的类型数据均相同,则对所述类型数据集合进行合并处理,将合并处理后的类型数据写入所述目标代码中。
11.一种代码生成装置,其特征在于,所述装置包括:
事件响应模块,用于响应于页面加载事件,在确定所述页面加载事件对应的目标页面为预设页面时,基于所述预设页面对应的接口拦截配置信息确定待拦截的目标接口;
监测注入模块,用于对所述目标接口的接口返回数据进行监测,并向所述目标页面注入对应所述目标接口的目标控件;
接口返回存储模块,用于在监测到所述目标接口的接口返回数据时,将所述接口返回数据存储至目标存储空间;
解析模块,用于响应于对所述目标页面中所述目标控件的触发操作,对所述目标存储空间中的所述接口返回数据进行解析,生成目标编程语言类型的目标代码。
12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现如权利要求1~10中任一项所述的代码生成方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如权利要求1~10任一项所述的代码生成方法。
14.一种计算机程序,其特征在于,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~10中任一项所述的代码生成方法。
CN202211199772.3A 2022-09-29 2022-09-29 一种代码生成方法、装置、电子设备及存储介质 Pending CN117827165A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211199772.3A CN117827165A (zh) 2022-09-29 2022-09-29 一种代码生成方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211199772.3A CN117827165A (zh) 2022-09-29 2022-09-29 一种代码生成方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117827165A true CN117827165A (zh) 2024-04-05

Family

ID=90505081

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211199772.3A Pending CN117827165A (zh) 2022-09-29 2022-09-29 一种代码生成方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117827165A (zh)

Similar Documents

Publication Publication Date Title
CN111178012B (zh) 一种表单渲染方法、装置、设备及存储介质
CN110795666B (zh) 一种网页生成方法、装置、终端及存储介质
CN108345543B (zh) 一种数据处理方法、装置、设备及存储介质
WO2019072201A1 (zh) 网页内容提取方法以及终端设备
CN107766358B (zh) 一种页面分享的方法及相关装置
CN109800030B (zh) 一种应用程序运行方法、装置及终端
CN108604245B (zh) 一种获取网页内容的方法及装置
KR102413396B1 (ko) 웹푸시를 이용한 푸시 서비스 제공 방법 및 이를 지원하는 전자 장치
US20190213241A1 (en) Web page display method and apparatus, mobile terminal, and storage medium
CN106156097B (zh) 一种浏览器输入记录的处理方法及装置
CN112395117B (zh) 一种数据处理方法、系统和存储介质
CN112749074B (zh) 一种测试用例推荐方法以及装置
CN103607377B (zh) 信息分享方法、装置及系统
CN108182090B (zh) 基于blink内核的Flash插件加载方法及装置
WO2015096660A1 (en) Methods and devices for displaying a webpage
CN105740419A (zh) 获取网页中动态加载内容的方法及装置
CN110674444A (zh) 一种动态网页下载的方法及终端
CN109145182B (zh) 数据采集方法、装置、计算机设备及系统
CN109145598B (zh) 脚本文件的病毒检测方法、装置、终端及存储介质
CN111177612B (zh) 一种页面登录鉴权的方法及相关装置
CN111309307A (zh) Vue页面与工作流系统的集成方法及装置
CN117407036A (zh) 一种资源重载方法、装置、电子设备和存储介质
CN115589432A (zh) 消息推送管理方法、装置、介质及设备
CN115600213A (zh) 基于应用程序的漏洞管理方法、装置、介质及设备
CN117827165A (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