CN112379882B - 一种模拟服务器的构建方法、模拟服务器及电子设备 - Google Patents
一种模拟服务器的构建方法、模拟服务器及电子设备 Download PDFInfo
- Publication number
- CN112379882B CN112379882B CN202011197361.1A CN202011197361A CN112379882B CN 112379882 B CN112379882 B CN 112379882B CN 202011197361 A CN202011197361 A CN 202011197361A CN 112379882 B CN112379882 B CN 112379882B
- Authority
- CN
- China
- Prior art keywords
- service
- openapi
- source code
- annotation
- interface file
- 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
Links
- 238000004088 simulation Methods 0.000 title claims description 63
- 238000010276 construction Methods 0.000 title description 2
- 239000000344 soap Substances 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 3
- 238000007405 data analysis Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 12
- 238000011161 development Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013102 re-test Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书一个或多个实施例提供一种模拟服务器的构建方法,包括:读取基于rs或者ws标准定义的服务源码接口文件;解析服务源码接口文件的注解,当注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则为rest服务;解析服务源码接口文件中的相应代码,将注释中OpenApi服务的描述,作为info.description数据项,得到soap服务和rest服务的注解;根据所得的服务类型,解析服务源码接口文件中的相应注解,得与服务类型对应的注解的数据项,得到入参和返回值的数据格式或者定义入参和返回值的数据格式;将解析得到的注解和注释转换为对应的OpenAPI语义,并将解析所得的入参和返回值作为OpenAPI入参和返回值的定义;将soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并。
Description
技术领域
本说明书一个或多个实施例涉及服务调用技术领域,尤其涉及一种模拟服务器的构建方法、模拟服务器及电子设备。
背景技术
随着微服务化的发展,项目之间的服务调用越来越多。在服务调用时,往往会存在服务提供方没有准备就绪,需要模拟服务提供方的服务,而现有的模拟服务只能模拟rest服务,不能模拟soap服务。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种模拟服务器的构建方法及相关设备,以解决现有的模拟服务只能模拟rest服务,不能模拟soap服务的问题。
基于上述目的,本说明书一个或多个实施例提供了一种模拟服务器的构建方法,包括:
读取基于rs或者ws标准定义的服务源码接口文件,所述服务源码接口文件缺少服务的接口文档;
解析所述服务源码接口文件的注解,当所述注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则判断为rest服务;
解析所述服务源码接口文件中的注释,将注释中OpenApi服务的描述中的info.description数据项、入参属性中的parameter.description数据项和返回值中的response.description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释;
根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式;
将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述入参和返回值作为OpenAPI入参和返回值的定义;
将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。
本说明书一个或多个实施例还提供了一种模拟服务器,包括:OpenAPI定义模块,用于形成所述模拟服务器的OpenAPI定义;所述OpenAPI定义模块包括:
服务源码接口文件读取模块,用于读取基于rs或者ws标准定义的服务源码接口文件,所述服务源码接口文件缺少服务的接口文档;
服务类型判断模块,解析所述服务源码接口文件的注解,当所述注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则判断为rest服务;
注释解析模块,用于解析所述服务源码接口文件中的注释,将注释中OpenApi服务的描述中的info.description数据项、入参属性中的parameter.description数据项和返回值中的response.description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释;
数据解析模块,用于根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式;
转换模块,用于将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述入参和返回值作为OpenAPI入参和返回值的定义;
合并模块,用于将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。
本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前任意所述的方法。
从上面所述可以看出,本说明书一个或多个实施例提供的通过读取基于rs或者ws标准定义的服务源码接口文件;解析所述服务源码接口文件的注解,当所述注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则判断为rest服务;解析所述服务源码接口文件中的注释,将注释中OpenApi服务的描述中的info.description数据项、入参属性中的parameter.description数据项和返回值中的response.description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释;根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式;将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述入参和返回值作为OpenAPI入参和返回值的定义;将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。能够构建得到同时支持soap服务和rest服务的模拟服务,在服务联调时直接在模拟服务的设备上使用联通后再和目标***联调即可,节省了服务提供方准备soap服务的大量时间,可以极大提高开发效率,缩短项目周期。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例的模拟服务器的构建方法的流程示意图;
图2为本说明书一个或多个实施例的模拟服务器的结构示意图;
图3为本说明书一个或多个实施例的解析单元的结构示意图;
图4为本说明书一个或多个实施例的电子设备的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
本发明的发明人在长期的服务之间调用的研究中发现,由于服务调用方和服务提供方的开发进度不统一,在服务调用时,会存在诸多的问题。当服务调用方调用已有的项目组的服务时,可能会存在该服务并没有对应的接口文档。而如果服务调用方和服务提供方需要的都是新开发的服务,会导致服务服务调用方,一直需要等到服务提供方的服务开发完成,会极大地降低开发效率。而现有的模拟服务的工具,例如swagger和easy mock,但是这两者都只能模拟rest服务,不能模拟soap服务,且Swagger生成的语法过于复杂,都给服务模拟带来很大的不便。
本发明的发明人提出一种模拟服务的相关方案,采用并扩展了OpenApi定义,在开源swagger组件基础上扩展,扩展后支持rest和soap两种服务,并且能够从源码中生成相应的规范,无需在代码里面写对应swagger注解。扩展支持了soap服务,节省了soap服务联调所需的大量时间。
请参阅图1,本发明实施例提供一种模拟服务器的构建方法,包括:
S100,读取基于rs或者ws标准定义的服务源码接口文件;
S200,解析所述服务源码接口文件的注解,判断服务源码的服务类型,所述服务类型为soap服务或rest服务;
S300,根据所述服务源码的服务类型,解析所述服务源码接口文件中的相应代码,得与所述服务类型对应的,注解和注释,以及入参和返回值的数据格式;
S400,将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述解析所得的入参和返回值作为OpenAPI入参和返回值的定义;
S500,将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。
本发明实施例提供的模拟服务器的构建方法,通过读取基于rs或者ws标准定义的服务源码接口文件;解析所述服务源码接口文件的注解,判断服务源码的服务类型,所述服务类型为soap服务或rest服务;根据所述服务源码的服务类型,解析所述服务源码接口文件中的相应代码,得与所述服务类型对应的,注解和注释,以及入参和返回值的数据格式;将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述解析所得的入参和返回值作为OpenAPI入参和返回值的定义以及将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。能够构建得到同时支持soap服务和rest服务的模拟服务,在服务联调时直接在模拟服务的设备上使用联通后再和目标***联调即可,节省了服务提供方准备soap服务的大量时间,可以极大提高开发效率,缩短项目周期。
在步骤S100中,可以通过javaparser进行读取基于rs或者ws标准定义的java服务源码接口文件。该步骤中,java服务源码接口文件为缺少服务的接口文档的已有的Java服务源码接口文件。
步骤S200中,具体解析通过javaparser进行。通过解析接口文件的注解是否含有WebService,来判断java服务源码的服务类型。具体地,当解析得到注解含有WebService,则判断为soap服务;当没有解析到注解含有WebService,则判断为rest服务。
步骤S300中,可以理解为对Java服务源码接口文件中的注解的解析实际上包含对rest服务的解析和对soap服务的解析。即当步骤S200中解析到的Java服务源码接口文件的服务类型为rest服务时,则解析Java服务源码接口文件中的Path注解,得到rest服务的Paths数据项的前缀。同时解析Java服务源码接口文件中的Consumer和Producer,得到rest服务的入参和返回值的数据格式。
当步骤S200中解析到的Java服务源码接口文件的服务类型为soap服务时,则解析Java服务源码接口文件中的WebService注解的name属性,得到soap服务的Paths数据项的前缀,同时定义soap服务的入参和返回值为”text/xml”。
对Java服务源码接口文件中的注释的解析,包括:解析注释中OpenApi服务的描述、入参属性的描述和返回值的描述中的至少一种。将注释中OpenApi服务的描述中的info.description数据项、入参属性中的parameter.description数据项和返回值中的response.description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释。也即,soap服务和rest服务的注释中description数据项是相同的。
步骤S400中,可以理解为包含对rest服务的注解和注释转换,入参和返回值的定义,得到rest服务的OpenAPI定义。同时还包含对soap服务的注解和实际的转换,入参和返回值的定义,得到soap服务的OpenAPI定义。
步骤S500中,通过将rest服务的OpenAPI定义和soap服务的OpenAPI定义合并,即可得到模拟服务器的rest服务。
应当说明的是,在本发明的另外的实施例中,还可以通过手动定义(直接定义)得到模拟服务器的OpenAPI定义,无需扫描服务源码。具体地,可以按照OpenApi的标准直接对rest服务定义,得到rest服务的OpenAPI定义。同时,可以按照OpenApi的标准和扩展的soap标准直接定义,得到soap服务的OpenAPI定义。
本说明书一个或多个实施例中,还包括:将所述模拟服务的OpenAPI定义设定为固定版本,不允许修改。也即,将模拟服务的OpenAPI定义设置为定版。通过将所述模拟服务的OpenAPI定义设定为固定版本,能够避免服务调用方和服务使用方在联调通后,互相更改服务接口定义,造成新的问题,需要再次测试。
本说明书实施例中,还包括:根据所述OpenAPI定义中的入参和返回值的定义,生成mock服务的返回值,配置mock服务。mock通过配置mock服务,可以在服务联调时,提供数据,极大地节省服务提供方准备关联***数据库数据时花费的大量时间。还能避免联调时由于服务使用方存在问题,造成数据污染,或者本次测试失败需要重新再准备数据。
具体地,配置mock服务可以包括,在mock服务的网关中设定如下规则:
当模拟服务器的OpenAPI定义中定义的入参为具体数据项的example时,mock服务解析常量字段,并返回常量数据。
当模拟服务器的OpenAPI定义中定义的入参为全局时,mock服务解析整体常量,并返回整体常量数据。
当模拟服务器的OpenAPI定义中定义的入参为expression时,mock服务解析计算表达式,返回计算所得数据。具体地,可以通过类似java语法,例如ql-express,计算结果后返回。
本说明书一个或多个实施例中,还包括:根据入参的定义,通过expression数据项设定mock服务返回不同类型的HTTP状态码,特定情况返回特定类型的HTTP状态码。使得模拟服务能够根据具体的需求返回不同的状态码,提高测试效率,进而提高开发效率。
本说明书实施例中,还包括:设定mock服务的预设返回时长,在预设返回时长后,返回返回值。例如,设置1min后返回,以实现对超时服务的测试。具体地,可以通过设置定时器,当网关地方解析到相关入参字段时,等到到达时间再返回结果。
可选地,本说明书实施例还包括,将模拟服务器的OpenAPI定义导出为Word文档。具体地,可以导出所得OpenAPI定义,并通过OpenApi,按照中心的接口规范生成对应的word文档,以便于相关人员快速了解模拟服务的接口规范。
本发明实施例提供的模拟服务器的构建方法,能够通过读取并分析缺少服务的接口文档的java服务源码接口文件的相关注解,注释和属性等,得到soap服务和rest服务的info.description数据项的注解,得到rest服务的Paths数据项的前缀,入参和返回值的数据格式。还能得到soap服务的Paths数据项的前缀,并soap服务的入参和返回值。从而得到包含rest服务的OpenAPI定义和soap服务的OpenAPI定义的模拟服务的定义。扩展支持了soap服务,大大降低了服务联调时准备soap服务数据的时间,配合mock服务,极大降低了准备关联***数据库服务数据的时间。同时还可以避免联调时候由于客户端存在问题,造成数据污染,或者本次测试失败需要重新再准备数据,能够实现联通后再和目标***联调。还可以快速便捷拿到服务文档,提高使用便利性。同时还能够通过将服务定义为定版,防止服务调用方和使用方互相更改服务接口定义,造成新的问题,需要再次测试等。还可以根据需求在预设的时间内返回不同的HTTP状态码,丰富测试的应用场景,提高测试的需求。
需要说明的是,本发明实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本发明实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种模拟服务器。
请参阅图2,所述模拟服务器包括:OpenAPI定义模块,用于形成所述模拟服务器的OpenAPI定义;所述OpenAPI定义模块610包括:
服务源码接口文件读取单元611,用于读取基于rs或者ws标准定义的服务源码接口文件,所述服务源码接口文件缺少服务的接口文档;
服务类型判断单元612,解析所述服务源码接口文件的注解,当所述注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则判断为rest服务;
注释解析单元613,用于解析所述服务源码接口文件中的注释,将注释中OpenApi服务的描述中的info.description数据项、入参属性中的parameter.description数据项和返回值中的response.description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释;
数据解析单元614,用于根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式;
转换单元615,用于将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述入参和返回值作为OpenAPI入参和返回值的定义;
合并单元616,用于将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。
请参阅图3,在本说明书的实施例中,所述数据解析单元614具体包括:
rest服务解析单元6141,用于当服务类型为rest服务时,解析Java服务源码接口文件中的Path注解,得到rest服务的Paths数据项的前缀;同时解析Java服务源码接口文件中的Consumer和Producer,得到rest服务的入参和返回值的数据格式。
soap服务解析单元6142,用于当服务类型为soap服务时,解析Java服务源码接口文件中的WebService注解的name属性,得到soap服务的Paths数据项的前缀;同时定义soap服务的入参和返回值均为text/xml。
应当说明的是,在本发明的另外的实施例中,还可以通过通过OpenAPI定义模块直接定义得到模拟服务器的OpenAPI定义,无需扫描服务源码。具体地,可以通过OpenAPI定义模块按照OpenApi的标准直接对rest服务定义,得到rest服务的OpenAPI定义。同时,可以按照OpenApi的标准和扩展的soap标准直接定义,得到soap服务的OpenAPI定义。
在本说明书的实施例中,所述模拟服务器还包括定版模块,用于将所述模拟服务的OpenAPI定义设定为固定版本,不允许修改。
在本说明书的一个或多个实施例中,所述模拟服务器还包括mock服务配置模块,用于根据所述OpenAPI定义中的入参和返回值的定义,生成mock服务的返回值,配置mock服务,以提供模拟数据。
所述mock服务配置模块具体用于,在mock服务的网关中设定如下规则:
当定义的入参为具体数据项的example时,mock服务解析常量字段,并返回常量数据;
当定义的入参为全局时,mock服务解析整体常量,并返回整体常量数据;
当定义的入参为expression时,mock服务解析计算表达式,返回计算所得数据。
在本说明书的一个或多个实施例中,所述模拟服务器还包括状态码设定模块,用于:根据入参的定义,通过expression数据项设定mock服务返回不同类型的HTTP状态码,特定情况返回特定类型的HTTP状态码。
在本说明书的一个或多个实施例中,所述模拟服务器还包括返回时长设定模块,用于设定mock服务的预设返回时长,在预设返回时长后,返回返回值。
在本说明书的一个或多个实施例中,所述模拟服务器还包括Word文档导出模块,用于将模拟服务器的OpenAPI定义导出为Word文档。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置可以通过前述任一实施例中相应的模拟服务器的构建方法得到,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的模拟服务器的构建方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的模拟服务器的构建方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种模拟服务器的构建方法,其特征在于,包括:
读取基于rs或者ws标准定义的服务源码接口文件,所述服务源码接口文件缺少服务的接口文档;
解析所述服务源码接口文件的注解,当所述注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则判断为rest服务;
解析所述服务源码接口文件中的注释,将注释中OpenApi服务的描述中的info.description数据项、入参属性中的parameter. description数据项和返回值中的response. description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释;
根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式;
将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述入参和返回值作为OpenAPI入参和返回值的定义;
将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。
2.根据权利要求1所述的模拟服务器的构建方法,其特征在于,所述根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式,包括:
当服务类型为rest服务时,解析Java服务源码接口文件中的Path注解,得到rest服务的Paths数据项的前缀;同时解析Java服务源码接口文件中的Consumer和Producer,得到rest服务的入参和返回值的数据格式;
或当服务类型为soap服务时,解析Java服务源码接口文件中的WebService注解的name属性,得到soap服务的Paths数据项的前缀;同时定义soap服务的入参和返回值均为text/xml。
3.根据权利要求1所述的模拟服务器的构建方法,其特征在于,还包括:将所述模拟服务的OpenAPI定义设定为固定版本,不允许修改。
4.根据权利要求3所述的模拟服务器的构建方法,其特征在于,还包括:根据所述OpenAPI定义中的入参和返回值的定义,生成mock服务的返回值,配置mock服务,以提供模拟数据。
5.根据权利要求4所述的模拟服务器的构建方法,其特征在于,所述根据所述OpenAPI定义中的入参和返回值的定义,生成mock服务的返回值包括,在mock服务的网关中设定如下规则:
当定义的入参为具体数据项的example时,mock服务解析常量字段,并返回常量数据;
当定义的入参为全局时,mock服务解析整体常量,并返回整体常量数据;
当定义的入参为expression时,mock服务解析计算表达式,返回计算所得数据。
6.根据权利要求5所述的模拟服务器的构建方法,其特征在于,还包括:
根据入参的定义,通过expression数据项设定mock服务返回不同类型的HTTP状态码,特定情况返回特定类型的HTTP状态码。
7.根据权利要求4所述的模拟服务器的构建方法,其特征在于,还包括:
设定mock服务的预设返回时长,在预设返回时长后,返回返回值。
8.根据权利要求1所述的模拟服务器的构建方法,其特征在于,还包括:将模拟服务器的OpenAPI定义导出为Word文档。
9.一种模拟服务器,其特征在于,包括:OpenAPI定义模块,用于形成所述模拟服务器的OpenAPI定义;所述OpenAPI定义模块包括:
服务源码接口文件读取单元,用于读取基于rs或者ws标准定义的服务源码接口文件,所述服务源码接口文件缺少服务的接口文档;
服务类型判断单元,解析所述服务源码接口文件的注解,当所述注解中含有WebService时,判断服务源码接口文件的服务类型为soap服务,否则判断为rest服务;
注释解析单元,用于解析所述服务源码接口文件中的注释,将注释中OpenApi服务的描述中的info. description数据项、入参属性中的parameter. description数据项和返回值中的response. description的数据项中的至少一种对应的内容,作为description数据项,得到soap服务和rest服务的注释;
数据解析单元,用于根据所得的服务类型,解析所述服务源码接口文件中的相应注解,得到soap服务或rest服务的数据项,得到rest服务的入参和返回值的数据格式或者定义soap服务入参和返回值的数据格式;
转换单元,用于将所述解析得到的注解和注释转换为对应的OpenAPI语义,并将所述入参和返回值作为OpenAPI入参和返回值的定义;
合并单元,用于将所述soap服务和rest服务的OpenAPI语义,OpenAPI入参和返回值的定义合并,得到模拟服务器的OpenAPI定义。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011197361.1A CN112379882B (zh) | 2020-10-30 | 2020-10-30 | 一种模拟服务器的构建方法、模拟服务器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011197361.1A CN112379882B (zh) | 2020-10-30 | 2020-10-30 | 一种模拟服务器的构建方法、模拟服务器及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112379882A CN112379882A (zh) | 2021-02-19 |
CN112379882B true CN112379882B (zh) | 2023-12-26 |
Family
ID=74576857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011197361.1A Active CN112379882B (zh) | 2020-10-30 | 2020-10-30 | 一种模拟服务器的构建方法、模拟服务器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379882B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012092118A2 (en) * | 2010-12-31 | 2012-07-05 | Alibaba Group Holding Limited | Method and web server for implementing web access |
CN104009994A (zh) * | 2014-05-30 | 2014-08-27 | 北京京东尚科信息技术有限公司 | 实现服务端与客户端通讯的方法和装置 |
CN109101351A (zh) * | 2018-08-29 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种解析基板管理控制器web返回值的方法、装置及设备 |
CN110377336A (zh) * | 2019-06-17 | 2019-10-25 | 平安普惠企业管理有限公司 | 接口文档生成方法、装置、计算机设备和存储介质 |
CN111061464A (zh) * | 2019-11-24 | 2020-04-24 | 济南浪潮数据技术有限公司 | 解析代码生成方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160153A1 (en) * | 2004-01-21 | 2005-07-21 | International Business Machines Corp. | Publishing multipart WSDL files to URL |
-
2020
- 2020-10-30 CN CN202011197361.1A patent/CN112379882B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012092118A2 (en) * | 2010-12-31 | 2012-07-05 | Alibaba Group Holding Limited | Method and web server for implementing web access |
CN104009994A (zh) * | 2014-05-30 | 2014-08-27 | 北京京东尚科信息技术有限公司 | 实现服务端与客户端通讯的方法和装置 |
CN109101351A (zh) * | 2018-08-29 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种解析基板管理控制器web返回值的方法、装置及设备 |
CN110377336A (zh) * | 2019-06-17 | 2019-10-25 | 平安普惠企业管理有限公司 | 接口文档生成方法、装置、计算机设备和存储介质 |
CN111061464A (zh) * | 2019-11-24 | 2020-04-24 | 济南浪潮数据技术有限公司 | 解析代码生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112379882A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737032B (zh) | 一种基于微内核***的子程序运行方法、装置和电子设备 | |
CN110198247B (zh) | 接口测试方法及*** | |
TWI520061B (zh) | 移動裝置的應用程式框架 | |
CN111338623B (zh) | 一种开发用户界面的方法、装置、介质和电子设备 | |
CN111581083B (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
CN111078539B (zh) | 一种测试方法、装置、***、计算机可读存储介质 | |
CN111736813B (zh) | Jpa代码的生成方法、装置、终端设备及存储介质 | |
CN110543297A (zh) | 用于生成源码的方法和装置 | |
CN111240684A (zh) | 一种js代码的裁剪方法、装置、介质和电子设备 | |
CN113157256B (zh) | 接口代码的生成方法、装置、电子设备、存储介质及产品 | |
CN111309304B (zh) | 一种生成idl文件的方法、装置、介质和电子设备 | |
CN114579452A (zh) | 接口影响检测方法及相关设备 | |
CN112631590A (zh) | 组件库生成方法、装置、电子设备和计算机可读介质 | |
CN114610598A (zh) | 测试方法、装置、电子设备及计算机可读存储介质 | |
CN112379882B (zh) | 一种模拟服务器的构建方法、模拟服务器及电子设备 | |
CN113761588A (zh) | 一种数据校验方法、装置、终端设备及存储介质 | |
CN107239265B (zh) | Java函数与C函数的绑定方法及装置 | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN116166457A (zh) | 数据处理方法及相关设备 | |
CN113052942B (zh) | 图表生成方法、装置、存储介质及电子设备 | |
CN111539200B (zh) | 一种生成富文本的方法、装置、介质和电子设备 | |
CN111309323B (zh) | 参数初始化方法、装置和电子设备 | |
CN113885841A (zh) | 脚本生成的方法、装置、电子设备和可读介质 | |
CN116680171B (zh) | 测试方法、装置、存储介质及电子设备 | |
CN114035805B (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 |