CN116909692A - 一种接口处理方法、装置、设备和计算机存储介质 - Google Patents
一种接口处理方法、装置、设备和计算机存储介质 Download PDFInfo
- Publication number
- CN116909692A CN116909692A CN202211441712.8A CN202211441712A CN116909692A CN 116909692 A CN116909692 A CN 116909692A CN 202211441712 A CN202211441712 A CN 202211441712A CN 116909692 A CN116909692 A CN 116909692A
- Authority
- CN
- China
- Prior art keywords
- interface
- target
- request
- project
- data
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000004458 analytical method Methods 0.000 claims abstract description 38
- 238000004573 interface analysis Methods 0.000 claims abstract description 25
- 230000006870 function Effects 0.000 claims description 53
- 230000008569 process Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 9
- 230000005856 abnormality Effects 0.000 claims description 6
- 238000007639 printing Methods 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 abstract description 8
- 238000007726 management method Methods 0.000 description 16
- 238000011161 development Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000014509 gene expression Effects 0.000 description 10
- 238000012360 testing method Methods 0.000 description 7
- 235000014510 cooky Nutrition 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 1
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
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
技术领域
本申请涉及接口应用技术领域,尤其涉及一种接口处理方法、装置、设备和计算机存储介质。
背景技术
随着信息化技术的不断发展,越来越多的软件开发和测试过程中需要使用到模拟数据,同时在数据展示的业务中,有时候也需要使用较为真实的模拟数据以替代现实数据。一个好的模拟系统或者服务,能够提高模拟接口的开发效率,降低维护和管理的成本。
相关技术中,模拟系统要么是仅用于本地开发,要么需要主动部署到服务端,也无法直接去调度业务数据,且开发门槛较高,不利于在各团队中进行普及。由于构建和调试复杂模拟接口较为繁琐,增加了开发、测试的时间成本。
发明内容
本申请提出一种接口处理方法、装置、设备和计算机存储介质,能够提高接口解析的效率,节约时间成本。
为达到上述目的,本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种接口处理方法,所述方法包括:
获取目标项目的接口请求;
基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;
对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。
在一些实施例中,所述方法还包括:
建立所述目标项目对应的项目工程,并配置所述项目工程对应的项目工程信息;
在所述项目工程内部,建立所述目标项目所属的接口,并配置所述接口对应的接口信息。
在一些实施例中,所述项目工程信息至少包括公共路径前缀、项目名称、项目描述、白名单访问控制;
所述接口信息至少包括接口路径,请求方式,缓存时间,接口描述,接口模板数据配置。
在一些实施例中,所述基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口,包括:
根据所述接口请求的路径解析出目标项目的项目路径;
基于所述项目路径确定所述目标项目是否存在,在所述目标项目存在且的情况下,确定对应的所述目标接口。
在一些实施例中,所述目标项目设置了白名单控制访问,所述方法还包括:
所述接口请求的请求头在所述目标项目对应的白名单中的情况下,确定对应的所述目标接口;
在所述接口请求的请求头不在所述项目对应的白名单中的情况下,返回对应的状态码。
在一些实施例中,所述对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理,包括:
主线程将所述目标接口的解析任务分配给工作线程;
所述工作线程通过数据查询线程获取目标接口对应的接口数据,并将所述接口数据返回至所述主线程;
其中,所述数据查询线程中的所述接口数据通过查询数据库获取或/和通过查询缓存获取。
在一些实施例中,在通过查询缓存获取所述接口数据时,所述方法还包括:
根据所述接口数据对应的键值,在所述缓存中查询所述接口数据;
其中,所述键值包括查询字符串,请求实体和请求头构成的哈希字符串。
在一些实施例中,所述方法还包括:
在所述目标接口返回错误信息的情况下,对项目函数的自定义日志进行打印,分析接口解析处理过程中的解析异常;
将所述错误信息和所述解析异常返回到调制界面进行展示。
第二方面,本申请实施例提供了一种接口处理装置,该接口处理装置包括:
获取单元,配置为获取目标项目的接口请求;
确定单元,配置为基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;
解析单元,配置为对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行如第一方面所述的接口处理方法。
第四方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,该计算机程序被至少一个处理器执行时实现如第一方面所述的接口处理方法。
本申请实施例所提供的一种接口处理方法、装置、设备和计算机存储介质,该方法包括:获取目标项目的接口请求;基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。这样,能够通过项目路径准确确定目标接口,并采用多线程的接口解析方式,避免了目标接口的异常解析对整个系统的影响,提高了解析效率,节约了时间成本。
附图说明
图1为本申请实施例提供的一种接口处理方法的流程示意图;
图2为本申请实施例提供的一种接口处理方法的详细流程示意图;
图3为本申请实施例提供的一种接口处理方法中接口解析流程示意图;
图4为本申请实施例提供的一种接口处理装置的组成结构示意图;
图5为本申请实施例提供的一种电子设备的具体硬件组成结构示意图;
图6为本申请实施例提供的一种电子设备的组成结构示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
可以理解的是,随着信息化技术的不断发展,越来越多的软件开发和测试过程中需要使用到MOCK(即虚拟)数据,同时在数据展示的业务中,有时候也需要使用较为真实的MOCK数据以替代现实数据。一个好的MOCK系统或者服务,能够提高MOCK接口的开发效率,降低维护和管理的成本。
现有的MOCK系统要么是仅用于本地开发,要么需要主动部署到服务端,也无法直接去调度业务数据,且开发门槛较高,需要掌握一定的编程基础,不利于在各团队中进行普及。由于构建和调试复杂MOCK接口较为繁琐,会消耗不少的开发、测试等时间。
相关技术一提供了一种Mock服务系统及Mock服务的处理方法。其中,该Mock服务系统包括:接收模块,用于接收来自客户端的请求;查找模块,用于查找与请求对应的Mock服务,其中,在Mock服务系统中存储有多个Mock服务;以及关联模块,用于建立客户端与所查找到的Mock服务的关联关系以便为客户端提供Mock服务。由于该Mock服务系统对所提供的Mock服务进行统一管理,因此,解决现有技术中无法在同一个Mock服务系统中对不同的客户端提供Mock服务的问题,使得Mock服务系统能够为不同的客户端提供Mock服务。虽然能够较为快速的编写MOCK接口,但需配置XML文件并上传至服务端,这一个过程较为繁琐。XML语言相比本方案的类JSON模板语法具有更高的学习成本,且不够简洁,配置效率不高。
相关技术二提供了一种Mock服务平台及方法,其中,所述平台包括:URL管理模块,用于在新建Mock服务时,建立该Mock服务的请求数据;请求响应模块,用于针对Mock服务的请求数据作出数据输出的响应;https协议模块,用于当Mock服务需要加密环境时,通过建立https链接为Mock服务模拟加密环境;Logger模块,用于保存所述Mock服务平台的所有Mock服务的请求数据和数据输出。本发明的技术方案针对mock数据测试,可以可视化的设置请求参数包括body和header等和输出参数包括body,cookie,header等,利用跨平台技术,可以在mac,windows,linux下使用,同时非侵入的方式提高了安全性和便捷性。该方案是基于Electron框架构建的,需要用户在本地进行安装且仅限于桌面端使用,跨平台存在局限性。此外无法保证MOCK接口的统一,也不便于团队对MOCK接口的更新和维护。
相关技术三提供了一种Mock数据的生成方法,包括以下步骤:在接收到Mock数据的请求信息时,获取所述请求信息对应的类的方法;调用所述类的方法以得到所述Mock数据;将所述Mock数据序列化;将所述Mock数据发送至请求所述Mock数据的终端。本发明还公开了一种测试系统及计算机可读存储介质,达成了降低对测试结果的影响的效果。该方案是将MOCK接口解析集成到了SDK中,这意味着需要掌握JAVA语言的人员才能使用,具有一定的门槛,不利于普及与推广。此外对接口的管理更为繁琐,每次改动都需要部署SDK至服务端,影响开发效率。
对于现有的MOCK系统,开发部署一个MOCK接口较为繁琐,效率低,有一定的入门门槛,接口间复用性较差。对于MOCK接口或数据的配置及管理均存在缺陷,要么需要手动配置文件后上传服务器进行部署,且需要掌握一定的编程语言基础才能使用,增加了用户构建MOCK接口的时间和成本。所有方案中并没有考虑与第三方业务数据结合以及接口调试问题。
基于此,本申请实施例需要提供一种接口处理方法,获取目标项目的接口请求;基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。这样,能够通过项目路径准确确定目标接口,并采用多线程的接口解析方式,避免了目标接口的异常解析对整个系统的影响,提高了解析效率,节约了时间成本。
下面将结合附图对本申请各实施例进行详细说明。
实施例一
参见图1,其示出了本申请实施例提供的一种接口处理方法的流程示意图。如图1所示,该方法可以包括:
S101:获取目标项目的接口请求。
需要说明的是,本申请实施例的方法应用于接口处理装置,或者集成有该装置的电子设备。其中,电子设备可以为智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、台式计算机等等,这里不作任何限定。
还需要说明的是,在本申请实施例中,不同的目标项目有各自对应的请求方式,这样可以通过请求方式找到与该目标项目请求方式相同的接口服务,将该接口确定为目标接口,在一些实施例中,接口请求还可以包括查询字符串,请求实体和请求头。
在一些实施例中,所述方法还可以包括:
建立所述目标项目对应的项目工程,并配置所述项目工程对应的项目工程信息;
在所述项目工程内部,建立所述目标项目所属的接口,并配置所述接口对应的接口信息。
在一些实施例中,所述项目工程信息至少包括公共路径前缀、项目名称、项目描述、白名单访问控制;
所述接口信息至少包括接口路径,请求方式,缓存时间,接口描述,接口模板数据配置。
需要说明的是,在本申请实施例中,在通过接口请求确定对应的目标项目和目标接口之前,本申请实施例还提出可以通过建立和配置项目工程信息,以及在项目内建立和配置接口信息的方式在虚拟系统中新增项目,以确保在通过接口请求确定目标项目和目标接口的过程中存在接口请求对应的目标项目。
还需要说明的是,在本申请实施例中,在进行项目创建和项目配置之后,本申请实施例还可以包括项目函数配置和数据集配置,其中项目函数是属于MOCK模板中的高级功能中的函数调用,用以抽取复杂MOCK接口的复用逻辑,该函数采用JavaScript函数的以字符串的形式存储在数据库中。方法函数附属于项目工程中,由于经常与业务相结合,故无法被其他项目工程所使用。可在某项目工程中,对方法函数进行在线管理和配置。如果之前被使用的方法函数更新了,那么相关使用的MOCK接口会立刻清除缓存并在下一次请求的时候重新进行解析并缓存。数据集是用于为MOCK接口提供常用数据源,例如城市信息,门票购买记录等。数据集采用JSON格式进行存储,在线即可编辑,并且所有项目下的接口都可以使用。数据集分为数据总集和数据子集,首先需要配置总集的名称和描述,随后在总集中建立具体的子集并以JSON格式进行存储。在模板中,可通过“collection.{总集名称}.{子集名称}”方式获取,以便进一步生成数据。
S102:基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口。
需要说明的是,在本申请实施例中,根据接口请求的路径解析出对应的项目路径,并确定该项目路径下是否存在目标项目,如果不存在则返回为空。如果存在该项目,且该项目开启了白名单控制访问,若请求头的Referer在白名单中则会继续进行接口路径解析,如果不在白名单中,则返回状态码403。
具体地,在一些实施例中,所述基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口,可以包括:
根据所述接口请求的路径解析出目标项目的项目路径;
基于所述项目路径确定所述目标项目是否存在,在所述目标项目存在且的情况下,确定对应的所述目标接口。
需要说明的是,在本申请实施例中,根据接口请求的路径解析出对应的项目路径,并确定该项目路径下是否存在目标项目,如果不存在则返回为空。如果存在该项目,根据目标项目对应的请求方式,确定与该目标项目请求方式相同的目标接口。
还需要说明的是,在本申请实施例中,如果在根据接口请求解析出的项目路径中不存在目标项目,可以返回前述实施例中的项目创建和配置步骤进行项目的创建和配置,以及对应的目标接口的创建和配置。
在一些实施例中,所述目标项目设置了白名单控制访问,所述方法还可以包括:
所述接口请求的请求头在所述目标项目对应的白名单中的情况下,确定对应的所述目标接口;
在所述接口请求的请求头不在所述项目对应的白名单中的情况下,返回对应的状态码。
需要说明的是,在本申请实施例中,可以通过前述实施例中项目创建和配置的过程中配置的白名单访问控制信息确定目标项目对应的白名单,在接口请求在白名单内的情况下,可以直接对相应的目标接口进行接口路径解析,在接口请求不在白名单内的情况下,可通过返回对应的状态码,以提示是否重新配置项目信息中的白名单访问控制。
S103:对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。
需要说明的是,在本申请实施例中,目标接口解析是一种多线程的解析过程,将解析任务分配给工作线程中,从而保证整个MOCK服务不会因为某个接口的异常而受到影响,同时又会有一个独立的用于查询数据库的数据线程,被分配任务的工作线程需要使用存储数据时均需要从该数据线程中获取数据,该数据可能来自数据库,也可能是查询缓存。
在一些实施例中,所述对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理,可以包括:
主线程将所述目标接口的解析任务分配给工作线程;
所述工作线程通过数据查询线程获取目标接口对应的接口数据,并将所述接口数据返回至所述主线程;
其中,所述数据查询线程中的所述接口数据通过查询数据库获取或/和通过查询缓存获取。
需要说明的是,在本申请实施例中,目标接口解析是一种多线程的解析过程,主线程可以将需要解析的目标接口放入任务列队中,通过任务列对将不同的目标接口解析的任务分配给工作线程池中不同的工作线程,工作线程,通过数据查询线程获取目标接口对应的接口数据,并将获取到的接口数据返回给主线程。数据查询线程中的所述接口数据可以通过查询数据库获取,还可以通过查询缓存获取。
在一些实施例中,在通过查询缓存获取所述接口数据时,所述方法还可以包括:
根据所述接口数据对应的键值,在所述缓存中查询所述接口数据;
其中,所述键值包括查询字符串,请求实体和请求头构成的哈希字符串。
需要说明的是,在本申请实施例中,在缓存中查询接口数据的过程中,通过键值将需要的数据筛选出来,键值可以通过条件表达式传入的query、body、header字段按字典序扁平序列化得到的hash字符串进行表示。如果存在返回,且缓存未过期,则直接返回上一次生成的数据。如果缓存不存在或者失效,则对该接口的模板进行解析。
在一些实施例中,所述方法还可以包括:
在所述目标接口返回错误信息的情况下,对项目函数的自定义日志进行打印,分析接口解析处理过程中的解析异常;
将所述错误信息和所述解析异常返回到调制界面进行展示。。
需要说明的是,在本申请实施例中,在调试界面对接口抛出的错误信息或自定义的打点信息进行追踪。错误捕获是在接口逐行解析的过程中,对不同的类型解析收集抛出的错误,例如:项目函数的执行异常,某个属性下的模板语法解析异常等。错误信息会被收集在队列之中并返回给调试界面进行展示。而打点是用于模板函数或者项目函数的自定义日志打印,以便分析它们的执行流程是否出现异常。
本实施例提供了一种接口处理方法,获取目标项目的接口请求;基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。这样,能够通过项目路径准确确定目标接口,并采用多线程的接口解析方式,避免了目标接口的异常解析对整个系统的影响,提高了解析效率,节约了时间成本。
实施例二
基于前述实施例相同的发明构思,参见图2,其示出了本申请实施例提供的一种接口处理方法的详细流程示意图,如图2所示,本实施例提供了一种多线程可定制化MOCK解析服务,是以项目为单位进行接口管理,通过类JSON格式的模板语法完成接口的在线编辑和部署,分为接口数据管理模块,接口解析模块,接口调试模块。
1、接口管理模块
该模块包括项目接口管理,方法函数管理,数据集管理,工具集拓展管理。
1.1、项目接口管理
该功能分为内外两个部分,首先需在外层建立并配置一个项目工程,随后在该工程的里面,建立并配置项目所属接口。其中,项目工程的配置包括公共路径前缀、项目名称、项目描述、白名单访问控制;接口的配置包括接口路径,请求方式,缓存时间(不填表示永久缓存),接口描述,接口模板数据配置。
1.2、项目函数管理
项目函数是属于MOCK模板中的高级功能中的函数调用,用以抽取复杂MOCK接口的复用逻辑,该函数采用JavaScript函数的以字符串的形式存储在数据库中。方法函数附属于项目工程中,由于经常与业务相结合,故无法被其他项目工程所使用。可在某项目工程中,对方法函数进行在线管理和配置。如果之前被使用的方法函数更新了,那么相关使用的MOCK接口会立刻清除缓存并在下一次请求的时候重新进行解析并缓存。
1.3、数据集管理
数据集是用于为MOCK接口提供常用数据源,例如城市信息,门票购买记录等。数据集采用JSON格式进行存储,在线即可编辑,并且所有项目下的接口都可以使用。数据集分为数据总集和数据子集,首先需要配置总集的名称和描述,随后在总集中建立具体的子集并以JSON格式进行存储。在模板中,可通过“collection.{总集名称}.{子集名称}”方式获取,以便进一步生成数据。
1.4、工具函数扩展
工具函数用于纯数据的处理,例如:日期格式化,数组偏平化等。除了系统内置的工具函数外,还可以在线添加或删除新的工具函数,工具函数无需在线编写,通过搜索npm包,选择合适的包作为工具函数。所有被扩展的函数外层都会进行包装,该包装的作用:一是为了兼容并匹配模板,二是为对其进行错误捕捉和超时执行控制。
2、接口解析模块
当用户向该MOCK服务发送请求时,首先会根据请求的路径,解析出项目路径,并查找是否存在该项目,如果不存在则返回空。如果存在该项目,且该项目开启了白名单控制访问,若请求头的Referer在白名单中则会继续进行接口路径解析,如果不在白名单中,则返回状态码403.接口路径解析会从当前项目中找到具有相同路径和请求方式的接口服务。
随后进入MOCK数据解析阶段,该阶段首先会将请求的query、body以及header按字典序扁平序列化得到的hash字符串作为缓存中的key。如果存在返回,且缓存未过期,则直接返回上一次生成的数据。如果缓存不存在或者失效,则对该接口的模板进行解析。
2.1、模板语法
模板语法的格式如下:
其中,模板分为4块:cookie,header,timeout和body。cookie是用于设置给客户端的响应cookie,header是配置响应头,timeout用于设置接口解析超时实际。body是返回的mock数据部分,是基于mockJS的基础上扩展了额外模板语法:键值条件表达式,函数表达式。
(1)、键值条件表达式
键值条件表达式通过传入的query、body、header字段,设置条件,如果满足条件,则会解析其后续的模板。其格式一共存在两种:
“{条件表达式}”:模板语法”
满足条件后,会将后面的解析结果合并该表达式所处的层级当中,如果存在相同属性,则后面解析的值会覆盖前面的值。
“{条件表达式}:属性名”:模板语法”
满足条件后,会将后面的解析结果存放指定的属性名中,如果存在相同属性,则后面解析的值会覆盖前面的值。
(2)、函数表达式
函数表达式用于处理复杂MOCK数据生成,在解析的过程中,会调用该函数并向其传入utils,collections,methods,query,body,header。
utils:工具集对象,内置常用的数据处理以及网络请求方法,如random,moment,flat,curl等。
collections数据集对象,用于获取存储于数据库对应名称的数据集,如:
await collections.{数据集名称}
methods项目函数对象,用于获取当前项目下的公用数据解析函数,语法如下:
{函数变量}=await collections.{函数名}
{函数变量}(参数1,参数2,...,参数i)
其中,query,body,header分别对应请求的查询字符串,请求实体和请求头。
2.2、模板解析过程
参见图3,其示出了本申请实施例提供的一种接口处理方法中接口解析流程示意图,模板解析是一种多线程的解析过程,将解析任务分配给node.js的工作线程中,从而保证整个MOCK服务不会因为某个接口的异常而受到影响,同时又会有一个独立的用于查询数据库的数据线程,被分配任务的工作线程需要使用存储数据时均需要从该数据线程中获取数据,该数据可能来自数据库,也可能是查询缓存。
3、接口调试模块
可在调试界面对接口抛出的错误信息或自定义的打点信息进行追踪。错误捕获是在接口逐行解析的过程中,对不同的类型解析收集抛出的错误,例如:项目函数的执行异常,某个属性下的模板语法解析异常等。错误信息会被收集在队列之中并返回给调试界面进行展示。而打点是用于模板函数或者项目函数的自定义日志打印,以便分析它们的执行流程是否出现异常。
本申请实施例通过在线编辑MOCK接口的方式,实现实时更新部署MOCK接口,无需用户手动部署,也无需本地安装。通过模板语法,降低了MOCK接口开发的成本。非专业人员在了解基本的语法规则后,也能轻松快速的创建MOCK接口。多线程的MOCK解析机制,能够保证系统的稳定性和高效性。在线接口调试,可对接口的解析过程以及错误信息进行追踪。数据集,项目函数,工具集等高级功能,降低了接口的冗余度,也有助于用户创建与业务关联的复杂接口。
本申请实施例可以通过类JSON格式的模板语法,可以在较低的学习成本下完成一个简易MOCK接口的编辑与管理。并且无需重新部署服务器,实时生效。复杂的MOCK接口(例如需要使用业务数据的接口),可以通过使用编辑的公用数据服务模块,数据集存储的常用数据以及扩展工具函数完成高度定制化的接口。此外还支持在线调试,以便追踪解析过程中产生的打点日志和抛出的异常错误。
本申请实施例采用在线编辑、管理、调试MOCK接口的方式,无需上传配置文件,无需手动部署。采用模板语法,降低了一定的使用门槛。在数据生成上,数据集、项目函数等高级功能,可以降低模板冗余度,也能更加方便快速生成复杂数据。通过多线程的解析和调度方式,避免了异常MOCK接口服务对系统的影响。同时利用调试功能,能够对异常接口出现的问题进行快速追踪并及时进行修复。
实施例四
基于前述实施例相同的发明构思,参见图4,其示出了本申请实施例提供的一种接口处理装置40的组成结构示意图。该接口处理装置40用于实现前述实施例中任意一种接口处理方法,具体地,如图4所示,该接口处理装置40可以包括:
获取单元401,配置为获取目标项目的接口请求;
确定单元402,配置为基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;
解析单元403,配置为对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理;
在一些实施例中,确定单元402,还配置为建立所述目标项目对应的项目工程,并配置所述项目工程对应的项目工程信息;以及在所述项目工程内部,建立所述目标项目所属的接口,并配置所述接口对应的接口信息。
在一些实施例中,所述项目工程信息至少包括公共路径前缀、项目名称、项目描述、白名单访问控制;
所述接口信息至少包括接口路径,请求方式,缓存时间,接口描述,接口模板数据配置。
在一些实施例中,确定单元402,具体配置为根据所述接口请求的路径解析出目标项目的项目路径;以及基于所述项目路径确定所述目标项目是否存在,在所述目标项目存在且的情况下,确定对应的所述目标接口。
在一些实施例中,确定单元402,具体配置为所述接口请求的请求头在所述目标项目对应的白名单中的情况下,确定对应的所述目标接口;以及在所述接口请求的请求头不在所述项目对应的白名单中的情况下,返回对应的状态码。
在一些实施例中,解析单元403,具体配置为主线程将所述目标接口的解析任务分配给工作线程;以及所述工作线程通过数据查询线程获取目标接口对应的接口数据,并将所述接口数据返回至所述主线程;其中,所述数据查询线程中的所述接口数据通过查询数据库获取或/和通过查询缓存获取。
在一些实施例中,解析单元403,具体配置为根据所述接口数据对应的键值,在所述缓存中查询所述接口数据;其中,所述键值包括查询字符串,请求实体和请求头构成的哈希字符串。
在一些实施例中,获取单元401,还配置为在所述目标接口返回错误信息的情况下,对项目函数的自定义日志进行打印,分析接口解析处理过程中的解析异常;以及将所述错误信息和所述解析异常返回到调制界面进行展示。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有接口处理程序,所述接口处理程序被至少一个处理器执行时实现前述实施例中任一项所述的方法的步骤。
基于上述接口处理装置40的组成以及计算机存储介质,参见图5,其示出了本申请实施例提供的一种电子设备50的组成结构示意图。如图5所示,可以包括:通信接口501、存储器502和处理器503;各个组件通过总线系统504耦合在一起。可理解,总线系统504用于实现这些组件之间的连接通信。总线系统504除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统504。其中,通信接口501,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
存储器502,用于存储能够在处理器503上运行的计算机程序;
处理器503,用于在运行所述计算机程序时,执行:
获取目标项目的接口请求;
基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;
对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。
可以理解,本申请实施例中的存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步链动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本文描述的系统和方法的存储器502旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器503可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器503中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器503可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器503读取存储器502中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,处理器503还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法的步骤。
在一些实施例中,基于上述接口处理装置40的组成,参见图6,其示出了本申请实施例提供的另一种电子设备50的组成结构示意图。如图6所示,电子设备50可以包括前述实施例中任一项所述的接口处理装置40。
在本申请实施例中,对于电子设备50而言,获取目标项目的接口请求;基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。这样,能够通过项目路径准确确定目标接口,并采用多线程的接口解析方式,避免了目标接口的异常解析对整个系统的影响,提高了解析效率,节约了时间成本。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种接口处理方法,其特征在于,所述方法包括:
获取目标项目的接口请求;
基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;
对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
建立所述目标项目对应的项目工程,并配置所述项目工程对应的项目工程信息;
在所述项目工程内部,建立所述目标项目所属的接口,并配置所述接口对应的接口信息。
3.根据权利要求2所述的方法,其特征在于,所述项目工程信息至少包括公共路径前缀、项目名称、项目描述、白名单访问控制;
所述接口信息至少包括接口路径,请求方式,缓存时间,接口描述,接口模板数据配置。
4.根据权利要求1所述的方法,其特征在于,所述基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口,包括:
根据所述接口请求的路径解析出目标项目的项目路径;
基于所述项目路径确定所述目标项目是否存在,在所述目标项目存在且的情况下,确定对应的所述目标接口。
5.根据权利要求4所述的方法,其特征在于,所述目标项目设置了白名单控制访问,所述方法还包括:
所述接口请求的请求头在所述目标项目对应的白名单中的情况下,确定对应的所述目标接口;
在所述接口请求的请求头不在所述项目对应的白名单中的情况下,返回对应的状态码。
6.根据权利要求1所述的方法,其特征在于,所述对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理,包括:
主线程将所述目标接口的解析任务分配给工作线程;
所述工作线程通过数据查询线程获取目标接口对应的接口数据,并将所述接口数据返回至所述主线程;
其中,所述数据查询线程中的所述接口数据通过查询数据库获取或/和通过查询缓存获取。
7.根据权利要求6所述的方法,其特征在于,在通过查询缓存获取所述接口数据时,所述方法还包括:
根据所述接口数据对应的键值,在所述缓存中查询所述接口数据;
其中,所述键值包括查询字符串,请求实体和请求头构成的哈希字符串。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标接口返回错误信息的情况下,对项目函数的自定义日志进行打印,分析接口解析处理过程中的解析异常;
将所述错误信息和所述解析异常返回到调制界面进行展示。
9.一种接口处理装置,其特征在于,所述接口处理装置包括:
获取单元,配置为获取目标项目的接口请求;
确定单元,配置为基于所述接口请求,确定所述目标项目对应的项目路径和请求方式,并根据所述项目路径和所述请求方式,确定目标接口;
解析单元,配置为对所述目标接口进行多线程接口解析,得到对应的接口数据,并进行返回处理。
10.一种电子设备,其特征在于,所述电子设备包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行如权利要求1至8任一项所述的接口处理方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现如权利要求1至8任一项所述的接口处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211441712.8A CN116909692A (zh) | 2022-11-17 | 2022-11-17 | 一种接口处理方法、装置、设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211441712.8A CN116909692A (zh) | 2022-11-17 | 2022-11-17 | 一种接口处理方法、装置、设备和计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116909692A true CN116909692A (zh) | 2023-10-20 |
Family
ID=88361445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211441712.8A Pending CN116909692A (zh) | 2022-11-17 | 2022-11-17 | 一种接口处理方法、装置、设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909692A (zh) |
-
2022
- 2022-11-17 CN CN202211441712.8A patent/CN116909692A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109344170B (zh) | 流数据处理方法、系统、电子设备及可读存储介质 | |
CN111310427A (zh) | 业务数据配置处理方法、装置、计算机设备和存储介质 | |
US11314503B2 (en) | Software development documentation using machine learning | |
CN112148356B (zh) | 文档生成方法、接口开发方法、装置、服务器及存储介质 | |
CN112711581B (zh) | 医疗数据校验方法、装置、电子设备及存储介质 | |
CN110580189A (zh) | 生成前端页面的方法、装置、计算机设备以及存储介质 | |
CN112182359A (zh) | 推荐模型的特征管理方法及系统 | |
CN110795697A (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN114036425A (zh) | 页面访问方法、客户端、服务端及系统 | |
CN111324619B (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN109063059A (zh) | 行为日志处理方法、装置及电子设备 | |
CN116541020A (zh) | 基于领域模型的代码生成方法、装置、设备、介质及产品 | |
CN116450723A (zh) | 数据提取方法、装置、计算机设备及存储介质 | |
KR20210000041A (ko) | 로그 데이터의 실시간 분석 방법 및 그 장치 | |
CN116909692A (zh) | 一种接口处理方法、装置、设备和计算机存储介质 | |
CN116094907A (zh) | 投诉信息的处理方法、装置及存储介质 | |
CN115048359A (zh) | 一种多类型接入数据源的通用数据处理架构设计方法 | |
CN109857390B (zh) | 一种Git仓库文件注解系统的注解传递方法 | |
Chen et al. | Design and implementation of venue reservation based on React Native | |
CN111079391B (zh) | 一种报表的生成方法及装置 | |
CN117234512B (zh) | 业务快速开发方法、系统、电子设备及存储介质 | |
CN114625377A (zh) | 框架项目转换方法、框架项目转换装置、设备及存储介质 | |
KR101722157B1 (ko) | 정보 수집 장치 및 이를 이용한 웹 사이트의 정보 수집 방법 | |
CN117234899A (zh) | 回归测试方法、装置、设备及计算机介质 | |
CN117010358A (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 |