CN110489101B - 接口模拟方法、系统、介质和电子设备 - Google Patents

接口模拟方法、系统、介质和电子设备 Download PDF

Info

Publication number
CN110489101B
CN110489101B CN201910635972.0A CN201910635972A CN110489101B CN 110489101 B CN110489101 B CN 110489101B CN 201910635972 A CN201910635972 A CN 201910635972A CN 110489101 B CN110489101 B CN 110489101B
Authority
CN
China
Prior art keywords
interface
simulation
data
request
analog
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
Application number
CN201910635972.0A
Other languages
English (en)
Other versions
CN110489101A (zh
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 ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network 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 ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201910635972.0A priority Critical patent/CN110489101B/zh
Publication of CN110489101A publication Critical patent/CN110489101A/zh
Application granted granted Critical
Publication of CN110489101B publication Critical patent/CN110489101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/313Logic programming, e.g. PROLOG programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种接口模拟方法、系统、介质及电子设备。所述方法包括:获取预先已约定的接口描述文件;解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口;根据所述接口信息生成对应的接口模拟代码,以使所述前端调用所述接口模拟代码进行接口模拟,所述接口模拟包括请求延时模拟及数据模拟。所述方法在本地实现,不依赖网络;且同时能够自动化生成模拟数据,不需要手动配置。

Description

接口模拟方法、系统、介质和电子设备
技术领域
本发明涉及网络开发技术领域,具体而言,涉及一种接口模拟方法、系统、介质和电子设备。
背景技术
在进行项目开发的过程中,开发者越来越倾向于前后端分离的开发方式。具体地,后端(亦称服务端)只提供业务逻辑的处理,并对外提供服务接口(ApplicationProgramming Interface,应用程序编程接口);而前端(亦称客户端)通过调用后端提供的接口获取数据,并通过页面向用户展现。但很多时候,接口提供方并不能及时完成接口的开发,导致接口调用方不能顺利地进行后续的功能开发。
为了解决上述问题,可对未开发完成的接口进行接口模拟(API mock),返回符合预期的假的数据,接口调用方使用假的数据进行后续功能开发。现有技术中,所述接口模拟一般采用线上可视化的模拟方式,比如YApi接口管理平台。然而,在具体操作过程中,开发者需要为新建的接口手动配置每一条模拟数据,工作量较大;另,如果遇到断网或者网络不通的情况时,模拟功能将无法使用。
目前,社区中出现一些模拟工具,可以直接动态生成符合预期的假数据,解决了上述手动配置模拟数据的问题。但是,模拟工具通常只能处理单个数据,而且依赖输入的参数来控制生成数据的类型及内容;进一步,即使模拟工具支持通过嵌套调用的方式来生成复杂结构的数据类型,但是所述嵌套调用的逻辑还是需要手动编码完成的。
因此,在长期的研发当中,发明人对接口模拟过程中出现的手动配置及断网时无法使用的问题进行了大量的研究,提出了一种接口模拟方法,以解决上述技术问题之一。
发明内容
本发明的目的在于提供一种接口模拟方法、系统、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本发明的具体实施方式,第一方面,本发明提供一种接口模拟方法,应用于前端,包括:获取预先已约定的接口描述文件;解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口;根据所述接口信息生成对应的接口模拟代码,以使所述前端调用所述接口模拟代码进行接口模拟,所述接口模拟包括请求延时模拟及数据模拟。
根据本发明的具体实施方式,第二方面,本发明提供一种接口模拟系统,应用于前端设备,包括:文件获取模块,用于获取预先已约定的接口描述文件;接口解析模块,用于解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口;代码生成模块,用于根据所述接口信息生成对应的接口模拟代码,以使所述前端调用所述接口模拟代码进行接口模拟,所述接口模拟包括请求延时模拟及数据模拟。
根据本发明的具体实施方式,第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上任一项所述的接口模拟方法。
根据本发明的具体实施方式,第四方面,本发明提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上任一项所述的接口模拟方法。
本发明实施例的上述方案与现有技术相比,至少具有以下有益效果:
第一,根据预先已约定的接口描述文件自动生成接口模拟代码,从而能够自动完成请求延时模拟及数据模拟,不需要手动实现模拟逻辑及配置模拟数据;
第二,采用在本地生成接口模拟代码的方式,在断网的情况下也可以使用模拟功能;
第三,所述接口模拟代码可以和项目开发过程中的代码一起管理,有效降低管理成本;
第四,本方法支持接口级别的模拟开关控制;
第五,本发明提出的方法适用于任何支持JS(JavaScript)的环境,比如浏览器、Node.js、小程序和Web View。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了根据本发明实施例的一种接口模拟方法的流程图;
图2示出了根据本发明实施例的所述根据所述接口信息生成对应的接口模拟代码的方法流程图;
图3示出了根据本发明实施例的所述在所述前端项目工程中引入所述接口模拟代码的方法流程图;
图4示出了根据本发明实施例的重写后的请求发送接口的内部执行逻辑图;
图5示出了根据本发明的实施例的一种接口模拟系统的结构示意图;
图6示出了根据本发明的实施例的电子设备连接结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述……,但这些……不应限于这些术语。这些术语仅用来将……区分开。例如,在不脱离本发明实施例范围的情况下,第一……也可以被称为第二……,类似地,第二……也可以被称为第一……。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
下面结合附图详细说明本发明的可选实施例。
实施例1
参阅图1所示,为本发明实施例提供的一种接口模拟方法的实施流程图,该方法的执行主体为前端,所述前端可以为任意需要调用后端接口的模块,或者应用所述模块的各种应用程序、网页等。具体的,所述接口模拟方法可以包括如下步骤:
S1,获取预先已约定的接口描述文件;
具体地,在进行程序开发之前,前端与后端的开发人员需要共同协商接口(API),并根据协商结果撰写接口描述文件(Interface Description File,IDS文件),以使前后端开发人员通过一个统一的文件进行沟通交流。
所述接口描述文件包括按照某种接口描述规范(IDS)撰写的接口定义或描述文件。其中,所述接口描述规范一般是使用结构化语言对接口进行完整描述的规范,现有的接口定义规范包括Thrift IDL、Protocol Buffers Language、OAS等。
所述接口描述文件的数量不限,具体可根据实际协商的接口数量进行撰写。当然,一个项目开发可包括一个或多个接口描述文件,每个接口描述文件可包括一个或多个接口描述。在本发明一实施例中,当前端调用后端多个服务时,可针对每个服务约定一个所述接口描述文件。例如,所述接口描述文件“user.thrift”如下:
S2,解析所述接口描述文件,获取相应的接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口;
一般地,官方或者社区会提供解析所述接口描述文件的解析器,使用现成的解析器就能解析所述接口描述文件,获取接口信息。其中,所述请求路径(url)指的是所述接口的访问地址;所述请求方式包括新增(post)、获取(get)和修改(patch)等方法。
S3,根据所述接口信息生成对应的接口模拟代码,以使所述前端调用所述接口模拟代码进行接口模拟,所述接口模拟包括请求延时模拟及数据模拟。
在该步骤中,请参阅图2,所述根据所述接口信息生成对应的接口模拟代码,包括:
S31,根据所述接口信息中请求数据类型调用现有数据模拟库的接口,获取数据模拟函数。其中,所述现有的数据模拟库中包括多个能够动态生成模拟数据的函数,比如,mock.js库。
S32,根据所述接口信息生成一个接口模拟配置文件,并在所述接口模拟配置文件中,为每个接口生成一接口模拟配置对象。其中,所述接口模拟配置对象包括请求延时配置、接口模拟开关配置和数据模拟函数配置等。具体地,所述根据所述接口信息生成一个接口模拟配置文件,也就是对每个所述接口描述文件生成一个接口模拟配置文件。所述每个接口模拟配置文件中包括多个接口的配置信息。
在本发明一实施例中,所述生成的接口模拟配置文件“user.js”如下:
进一步地,所述在所述接口模拟配置文件中,为每个接口生成一接口模拟配置对象,包括:
在所述接口模拟配置文件中,对每个接口配置一模拟接口开关,所述模拟开关用于控制是否对所述接口进行接口模拟。具体地,所述前端根据后端接口的完成情况配置所述模拟接口开关,若后端已完成接口开发,则所述接口配置的模拟接口开关为关闭状态;若后端未完成接口开发,则所述接口配置的模拟接口开关为打开状态。
在所述接口模拟配置文件中,对每个所述接口配置请求延时功能,所述请求延时功能用于控制所述接口模拟返回模拟数据的延迟时间。具体地,所述请求延时功能用来模拟真实请求过程中的请求耗时。在本发明一实施例中,所述模拟请求耗时可以通过setTimeout函数结合Promise实现。
在所述接口模拟配置文件中,对每个所述接口配置数据模拟函数,并通过所述数据模拟函数生成模拟数据并返回所述模拟数据。具体的,所述数据模拟函数返回的并不是固定的模拟数据,而是动态的模拟数据。
在本发明一实施例中,可在所述接口模拟配置文件中,对每个所述接口配置的数据模拟函数包含生成模拟数据的代码,所述代码用于生成动态的模拟数据并返回至所述前端。也就是说,所述数据模拟函数的函数体包含的并不是固定的模拟数据,而是包含生成模拟数据的代码。
其中,所述生成模拟数据的代码可通过调用现有的数据模拟库的接口来完成。具体地,在调用现有的数据模拟库的接口时,所述数据模拟函数生成模拟数据的依赖原则,包括:
根据数据类型生成对应类型的数据;同时根据数据名称生成符合语义的数据。其中,可以通过正则匹配的方式来实现数据名称到特定语义的映射。比如,当数据的名称包含“city”时,则生成城市名。
进一步地,在所述根据所述接口信息生成接口模拟配置文件,并在所述接口模拟配置文件中对每个接口生成一接口模拟配置对象的步骤之后,还包括:
S33,生成一个索引文件,所述索引文件引入至少一个所述接口模拟配置文件;同时所述索引文件聚合所述接口模拟配置文件暴露的所述接口模拟配置对象。具体地,所述索引文件是所述接口模拟代码的入口,聚合所有的接口模拟配置文件。
进一步地,在本发明一实施例中,所述方法还包括步骤S4:在所述前端项目工程中引入所述接口模拟代码。具体地,请参阅图3,所述在所述前端项目工程中引入所述接口模拟代码,包括:
S41,通过所述接口模拟代码重写所述前端的请求发送接口。
具体地,通过所述索引文件重写所述前端的请求发送接口,比如fetch接口。所述重写后的请求发送接口与所述前端原来的请求发送接口的执行逻辑不同。在该实施例中,所述生成的索引文件index.js如下:
S42,在所述项目工程中引入重写后的所述请求发送接口。
具体地,在项目工程中引入接口模拟代码时,只需要引入接口模拟代码的索引文件暴露的重写后的发送请求接口。如图4所示为所述重写后的请求发送接口的内部执行逻辑,所述重写后的请求发送接口的内部执行逻辑,包括:
检查所述前端请求的所述接口的模拟接口开关是否打开;
若所述模拟接口开关为打开状态,则对所述接口进行模拟请求耗时,同时生成模拟数据;
在完成请求耗时后,通过所述接口向所述前端返回所述模拟数据。例如,所述返回的模拟数据如下:
在本发明另一实施例中,若所述模拟接口开关为关闭状态,则调用所述前端原有的请求发送接口直接向后端服务发送请求;并同时接收所述后端返回的线上数据。
在步骤S4中,由于接口模拟代码重写了发送请求接口,所述前端向后端服务发送请求时,实际上是向所述模拟接口发送请求。具体原理为:当JS执行函数调用时,会从当前作用域开始逐级往上级作用域寻找所述函数的定义,直到找到为止。由于下级作用域的函数定义会覆盖上级作用域的函数定义,所以JS执行请求发送接口时,会执行引入的重写后的发送请求接口,而不是顶级作用域下原来的发送请求接口。
进一步地,如果不想使用所述接口模拟功能,则直接去掉引入所述接口模拟代码的代码即可,其他代码则不需要做任何改动。
本发明实施例提供的一种接口模拟方法根据预先已约定的接口描述文件自动生成接口模拟代码,从而能够自动完成请求延时模拟及数据模拟,不需要手动实现模拟逻辑及配置模拟数据;第二,采用在本地生成接口模拟代码的方式,在断网的情况下也可以进行接口模拟;第三,接口模拟代码可以和项目开发过程中的代码一起管理,有效降低管理成本;第四,本方法支持接口级别的模拟开关控制;第五,本发明提出的方法适用于任何支持JS(JavaScript)的环境,比如浏览器、Node.js、小程序和Web View。
实施例2
请参阅图5,本发明实施例提供一种接口模拟系统500,应用于前端设备,包括:文件获取模块510,接口解析模块520及代码生成模块530。
所述文件获取模块510,用于获取预先已约定的接口描述文件。具体地,在进行程序开发之前,前端与后端的开发人员需要共同协商接口(API),并根据协商结果撰写接口描述文件(Interface Description File,IDS文件),以使前后端开发人员通过一个统一的文件进行沟通交流。
所述接口描述文件包括按照某种接口描述规范(IDS)撰写的接口定义或描述文件。其中,所述接口描述规范一般是使用结构化语言对接口进行完整描述的规范,现有的接口定义规范包括Thrift IDL、Protocol Buffers Language、OAS等。
所述接口描述文件的数量不限,具体可根据实际协商的接口数量进行撰写。当然,一个项目开发可包括一个或多个接口描述文件,每个接口描述文件可包括一个或多个接口描述。在本发明一实施例中,当前端调用后端多个服务时,可针对每个服务约定一个所述接口描述文件。
所述接口解析模块520,用于解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口。
一般地,官方或者社区会提供解析所述接口描述文件的解析器,使用现成的解析器就能解析所述接口描述文件,获取接口信息。其中,所述请求路径(url)指的是所述接口的访问地址;所述请求方式包括新增(post)、获取(get)和修改(patch)等方法。
所述代码生成模块530,用于根据所述接口信息生成对应的接口模拟代码,以使所述前端调用所述接口模拟代码进行接口模拟,所述接口模拟包括请求延时模拟及数据模拟。
具体地,所述代码生成模块530可以根据所述接口信息中请求数据类型调用现有的数据模拟库,获取数据模拟函数。其中,所述现有的数据模拟库中包括多个能够动态生成模拟数据的函数,比如,mock.js库。
所述代码生成模块530还可以根据所述接口信息生成一个接口模拟配置文件,并在所述接口模拟配置文件中,为每个接口生成一接口模拟配置对象。其中,所述接口模拟配置对象包括请求延时配置、接口模拟开关配置和数据模拟函数配置等。具体地,所述根据所述接口信息生成一个接口模拟配置文件,也就是对每个所述接口描述文件生成一个接口模拟配置文件。所述每个接口模拟配置文件中包括多个接口的配置信息。
在本发明一实施例中,所述代码生成模块530可以在所述接口模拟配置文件中对每个所述接口配置一模拟接口开关,所述模拟接口开关用于控制是否对所述接口进行接口模拟。具体地,所述前端根据后端接口的完成情况配置所述模拟接口开关,若后端已完成接口开发,则所述模拟接口配置的模拟接口开关为关闭状态;若后端未完成接口开发,则所述模拟接口配置的模拟接口开关为打开状态。
在上述实施例中,所述代码生成模块530还可以根据所述接口模拟配置文件对每个所述接口配置请求延时功能,所述请求延时功能用于控制所述接口模拟返回模拟数据的延迟时间。具体地,所述请求延时功能用来模拟真实请求过程中的请求耗时。在本发明一实施例中,所述模拟请求耗时可以通过setTimeout函数结合Promise实现。
在上述实施例中,所述代码生成模块530还可以根据所述接口模拟配置文件对每个所述接口配置数据模拟函数,并根据所述数据模拟函数生成模拟数据及返回所述模拟数据。其中,所述数据模拟函数返回的并不是固定的模拟数据,而是动态的模拟数据。
具体地,所述代码生成模块530可通过在接口模拟配置文件中对每个所述接口配置的数据模拟函数包含生成模拟数据的代码,所述代码用于生成动态的模拟数据并返回至所述前端。也就是说,所述数据模拟函数的函数体包含的并不是固定的模拟数据,而是包含生成模拟数据的代码。
这里,所述生成模拟数据的代码可通过调用现有的数据模拟库的接口来完成。具体地,所述代码生成模块530在调用现有的数据模拟库的接口时,所述数据模拟函数生成模拟数据的依赖原则,包括:
根据数据类型生成对应类型的数据;同时根据数据名称生成符合语义的数据。其中,可以通过正则匹配的方式来实现数据名称到特定语义的映射。比如,当数据的名称包含“city”时,则生成城市名。
进一步地,所述代码生成模块530还可以生成一个索引文件,所述索引文件引入至少一个所述接口模拟配置文件;同时所述索引文件聚合所述接口模拟配置文件暴露的所述接口模拟配置对象。具体地,所述索引文件是所述接口模拟代码的入口,聚合所有的接口模拟配置文件。
在本发明一实施例中,所述接口模拟系统500进一步包括代码整合模块540,所述代码整合模块540用于在所述前端项目工程中引入所述接口模拟代码。
具体地,所述代码整合模块540可以通过所述接口模拟代码重写所述前端的请求发送接口。具体地,通过所述索引文件重写所述前端的请求发送接口,比如fetch接口。所述重写后的请求发送接口与所述前端原来的请求发送接口的执行逻辑不同。
所述代码整合模块540还可以在所述项目工程中引入重写后的所述请求发送接口。具体地,所述代码整合模块540在项目工程中引入接口模拟代码时,只需要引入接口模拟代码的索引文件暴露的重写后的发送请求接口。所述代码整合模块540的内部执行逻辑,包括:
所述代码整合模块540检查所述前端请求的所述接口的模拟接口开关是否打开;
若所述模拟接口开关为打开状态,则所述代码整合模块540对所述接口进行模拟请求耗时,同时生成模拟数据;
在完成请求耗时后,所述代码整合模块540通过所述接口向所述前端返回所述模拟数据。例如,所述返回的模拟数据如下:
在本发明另一实施例中,若所述模拟接口开关为关闭状态,则所述代码整合模块540调用所述前端原有的请求发送接口直接向后端服务发送请求;并同时接收所述后端返回的线上数据。
在上述实施例中,由于接口模拟代码重写了前端的发送请求接口,因此,在所述前端向后端服务发送请求时,实际上是向模拟接口发送请求。这是由于当JS执行函数调用时,会从当前作用域开始逐级往上级作用域寻找所述函数的定义,直到找到为止。由于下级作用域的函数定义会覆盖上级作用域的函数定义,所以JS执行请求发送接口时,会执行引入的重写后的发送请求接口,而不是顶级作用域下原来的发送请求接口。
进一步地,如果不想使用所述接口模拟功能,则直接去掉引入所述接口模拟代码的代码即可,其他代码则不需要做任何改动。
本发明实施例提供的一种接口模拟系统500根据预先已约定的接口描述文件自动生成接口模拟代码,从而能够自动完成请求延时模拟及数据模拟,不需要手动配置实现模拟逻辑及模拟数据;第二,采用在本地生成接口模拟代码的方式,在断网的情况下也可以使用模拟功能;第三,将接口模拟代码和项目开发过程中的代码一起管理,能够有效降低管理成本;第四,本方法支持接口级别的模拟开关控制;第五,本发明提出的方法适用于任何支持JS(JavaScript)的环境,比如浏览器、Node.js、小程序和Web View。
实施例3
本公开实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的接口模拟方法。
实施例4
本实施例提供一种电子设备,该设备用于接口模拟,所述电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取预先已约定的接口描述文件;
解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口;
根据所述接口信息生成对应的接口模拟代码,以使所述前端调用所述接口模拟代码进行接口模拟,所述接口模拟包括请求延时模拟及数据模拟。
实施例5
下面参考图6,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

Claims (10)

1.一种接口模拟方法,应用于前端,由前端执行,其特征在于,包括:
获取预先已约定的接口描述文件;
解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个接口;
根据所述接口信息生成对应的接口模拟代码,所述接口模拟代码用于配置模拟接口的开关功能、所述模拟接口的请求延时功能和所述模拟接口的模拟数据返回功能:
通过所述接口模拟代码的索引文件重写所述前端的请求发送接口;所述索引文件为所述接口模拟代码的入口;
在所述前端的项目工程中引入所述索引文件暴露的重写后的所述请求发送接口;
其中,重写后的所述请求发送接口的工作逻辑,包括:
检查所述前端请求的所述模拟接口的模拟接口开关是否打开;
若所述模拟接口开关为打开状态,则对所述模拟接口进行模拟请求耗时,并生成模拟数据;
在完成所述请求耗时后,通过所述模拟接口向所述前端返回所述模拟数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述接口信息生成接口模拟代码,包括:
根据所述接口信息中的请求数据类型调用现有数据模拟库的接口,获取数据模拟函数;
根据所述接口信息生成接口模拟配置文件,并在所述接口模拟配置文件中,为每个所述接口生成一接口模拟配置对象。
3.根据权利要求2所述的方法,其特征在于,在所述根据所述接口信息生成接口模拟配置文件,并在所述接口模拟配置文件中,为每个所述模拟接口生成一接口模拟配置对象的步骤之后,进一步包括:
生成一个索引文件,所述索引文件引入至少一个所述接口模拟配置文件;同时所述索引文件聚合所述接口模拟配置文件暴露的所述接口模拟配置对象。
4.根据权利要求2所述的方法,其特征在于,所述在所述接口模拟配置文件中,为每个所述接口生成一接口模拟配置对象,包括:
在所述接口模拟配置文件中对每个所述接口配置一模拟接口开关,所述模拟接口开关用于控制是否对所述接口进行接口模拟;
在所述接口模拟配置文件中对每个所述接口配置请求延时功能,所述请求延时功能用于控制所述模拟接口返回模拟数据的延迟时间;
在所述接口模拟配置文件中对每个所述接口配置数据模拟函数,并通过所述数据模拟函数生成模拟数据并返回所述模拟数据。
5.根据权利要求4所述的方法,其特征在于,所述通过所述数据模拟函数生成模拟数据,包括:
根据数据类型生成对应类型的数据;
同时根据数据名称生成符合语义的数据。
6.根据权利要求4所述的方法,其特征在于,所述根据所述接口模拟配置文件对每个所述模拟接口配置数据模拟函数,并通过所述数据模拟函数生成并返回模拟数据,包括:
通过所述接口模拟配置文件对每个所述模拟接口配置数据模拟函数包含生成模拟数据的代码,所述代码用于生成动态的模拟数据并返回至所述前端。
7.根据权利要求1所述的方法,其特征在于,若所述模拟接口开关为关闭状态,则调用所述前端原有的请求发送接口直接向后端服务发送请求;同时接收所述后端返回的线上数据。
8.一种接口模拟系统,应用于前端设备,由前端设备实现,其特征在于,包括:
文件获取模块,用于获取预先已约定的接口描述文件;
接口解析模块,用于解析所述接口描述文件,获取接口信息,所述接口信息包括请求路径、请求方式、请求数据类型及响应数据类型,其中,一个所述接口信息对应一个模拟接口;
代码生成模块,用于根据所述接口信息生成对应的接口模拟代码,所述接口模拟代码用于配置模拟接口的开关功能、所述模拟接口的请求延时功能和所述模拟接口的模拟数据返回功能;
代码整合模块,用于通过所述接口模拟代码的索引文件重写所述前端的请求发送接口;所述索引文件为所述接口模拟代码的入口;在所述前端的项目工程中引入所述索引文件暴露的重写后的所述请求发送接口;
其中,重写后的所述请求发送接口的工作逻辑,包括:
检查所述前端请求的所述模拟接口的模拟接口开关是否打开;
若所述模拟接口开关为打开状态,则对所述模拟接口进行模拟请求耗时,并生成模拟数据;
在完成所述请求耗时后,通过所述模拟接口向所述前端返回所述模拟数据。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的方法。
CN201910635972.0A 2019-07-15 2019-07-15 接口模拟方法、系统、介质和电子设备 Active CN110489101B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910635972.0A CN110489101B (zh) 2019-07-15 2019-07-15 接口模拟方法、系统、介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910635972.0A CN110489101B (zh) 2019-07-15 2019-07-15 接口模拟方法、系统、介质和电子设备

Publications (2)

Publication Number Publication Date
CN110489101A CN110489101A (zh) 2019-11-22
CN110489101B true CN110489101B (zh) 2023-08-25

Family

ID=68546036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910635972.0A Active CN110489101B (zh) 2019-07-15 2019-07-15 接口模拟方法、系统、介质和电子设备

Country Status (1)

Country Link
CN (1) CN110489101B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309304B (zh) * 2020-02-11 2023-07-11 北京字节跳动网络技术有限公司 一种生成idl文件的方法、装置、介质和电子设备
CN111506298A (zh) * 2020-03-10 2020-08-07 南京行者易智能交通科技有限公司 一种基于json对象进行接口可视化配置的方法
CN111399819B (zh) * 2020-03-18 2024-04-30 北京达佳互联信息技术有限公司 数据生成方法、装置、电子设备及存储介质
CN113515437B (zh) * 2020-04-10 2024-07-16 北京沃东天骏信息技术有限公司 调试接口的方法和装置
CN111752644A (zh) * 2020-06-18 2020-10-09 北京字节跳动网络技术有限公司 接口模拟方法、装置、设备及存储介质
CN112035282B (zh) * 2020-09-01 2023-07-25 北京百度网讯科技有限公司 应用于云平台的api管理方法、装置、设备以及存储介质
CN112068813A (zh) * 2020-09-03 2020-12-11 中国平安财产保险股份有限公司 数据处理方法、设备及介质
CN112256567A (zh) * 2020-09-29 2021-01-22 航天科工广信智能技术有限公司 一种远程调用模拟与测试系统
CN112199112B (zh) * 2020-09-30 2024-06-14 京东科技控股股份有限公司 自动配置模拟服务的方法、装置、终端设备及存储介质
CN112631694B (zh) * 2020-12-11 2023-08-11 远光软件股份有限公司 一种api接口封装调用方法及系统
CN112685014A (zh) * 2020-12-25 2021-04-20 中孚安全技术有限公司 一种快速模拟接口的方法、系统及设备
CN112905455B (zh) * 2021-02-05 2024-07-23 北京有竹居网络技术有限公司 接口信息的校验方法、装置、设备及存储介质
CN112860356B (zh) * 2021-02-10 2023-08-15 北京百度网讯科技有限公司 一种api调用控制方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577622A (zh) * 2017-08-01 2018-01-12 广州酷狗计算机科技有限公司 后端接口模拟方法、设备及存储介质
CN107728999A (zh) * 2017-11-14 2018-02-23 苏州奇松软件有限公司 一种App、小程序接口模拟的方法和系统
CN108600311A (zh) * 2018-03-21 2018-09-28 浙江口碑网络技术有限公司 客户端模拟接口数据的方法及装置
CN109634605A (zh) * 2018-12-05 2019-04-16 苏州思必驰信息科技有限公司 用于web前端的模拟数据生成方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577622A (zh) * 2017-08-01 2018-01-12 广州酷狗计算机科技有限公司 后端接口模拟方法、设备及存储介质
CN107728999A (zh) * 2017-11-14 2018-02-23 苏州奇松软件有限公司 一种App、小程序接口模拟的方法和系统
CN108600311A (zh) * 2018-03-21 2018-09-28 浙江口碑网络技术有限公司 客户端模拟接口数据的方法及装置
CN109634605A (zh) * 2018-12-05 2019-04-16 苏州思必驰信息科技有限公司 用于web前端的模拟数据生成方法及系统

Also Published As

Publication number Publication date
CN110489101A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
CN110489101B (zh) 接口模拟方法、系统、介质和电子设备
CN111338623B (zh) 一种开发用户界面的方法、装置、介质和电子设备
CN111221572B (zh) 一种自动适配运行环境的方法、装置、介质和设备
CN110865898B (zh) 崩溃调用栈聚合的方法、装置、介质和设备
CN110489323B (zh) 可视化的rpc api调试方法、装置、介质和设备
CN111221521A (zh) 日志代码的生成方法、装置、计算机系统和可读存储介质
CN111273985B (zh) 页面渲染方法、装置、电子设备及计算机可读存储介质
CN111309304B (zh) 一种生成idl文件的方法、装置、介质和电子设备
CN112507259B (zh) 网页加载方法及装置、电子设备、存储介质
CN111177634A (zh) 支持多语言的文案内容加载方法、装置、设备、及介质
CN110389899A (zh) 检测js程序的api数据类型的方法装置、介质和设备
CN110489180B (zh) 一种埋点上报方法、装置、介质和电子设备
CN112954056B (zh) 监控数据处理方法、装置、电子设备及存储介质
CN112416303B (zh) 软件开发工具包热修复方法、装置及电子设备
CN112256372B (zh) 信息处理方法、装置和电子设备
CN111783010B (zh) 网页空白页面监测方法、装置、终端及存储介质
CN113391860B (zh) 服务请求处理方法、装置、电子设备及计算机存储介质
CN111324347B (zh) 组件构造方法、装置、系统、页面生成方法、设备及介质
CN110489326B (zh) 基于ids的httpapi调试方法装置、介质和设备
CN110618811B (zh) 信息呈现方法和装置
CN111273967A (zh) 适用于Android系统的远程钩子设置方法、装置及电子设备
CN111124627B (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
CN113296771B (zh) 页面显示方法、装置、设备和计算机可读介质
CN113296762B (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