大家好,我是一个吃苦耐劳的前端开发工程师,为什么这么辛苦,没有,项目下周就要上线了,但是后端还没有还给我接口,没有接口,我无法调试,工作停滞不前,只能坐着发愁。我反映给老大,山哥:老大,这个后台不靠谱。快上线了,界面还没出来。山哥回复,别着急,这里不是有mock吗?莫克,什么是莫克?我一脸狐疑,问山哥。山哥慢条斯理的说,前端自己开启一个HTTP服务来模拟后端接口的数据,这样就不用等后端接口开发完成了,你的工作不会因为后端开发的延迟而阻塞进程。嗯,写的真好,我好像发现了一个新世界!以后不用再被后端拖累了,心里暗自高兴,但转念一想不对,时间不够了!我又郁闷了,转头对山哥说:mock不错,就是时间不够。重新启动MockHTTPServer会花费很多时间。山哥见我豁然开朗,忙说:我们团队不是用的是Apifox管理API吗?您只需点击一个按钮即可自动模拟!一键Mock数据如此简单,如何使用Apifox自动Mock?山哥接着说道,缓缓说道。使用ApifoxSmartMockApifox是一款集API文档、API调试、APIMock、API自动化测试为一体的强大工具,可直接从Apifox官网下载,Windows、Linux、Mac下均可使用。下载成功后,可以打开示例工程,这是一个关于宠物店的工程。打开宠物店项目,在每个选项卡中可以看到四个选项卡:Documentation、ModifyDocumentation、Run、AdvancedMock。我们先来看一下查询宠物详情的界面。请求接口为/pet/{petId},响应数据为code和data。Data是Pet的自定义数据类型。在数据模型选项卡中,您可以看到自定义数据类型Pet,它有两个字段id、name和photoUrls。我们本地肯定没有宠物店的项目和接口,所以我们现在可以使用一键mock服务向mock请求宠物店数据,非常方便!将环境切换到Mock服务。此时地址栏的前缀为http://127.0.0.1:4523/mock/533840。单击“运行”按钮发送请求。见证奇迹的时刻到了,数据正确返回!在项目中mock时,直接使用http://127.0.0.1:4523/mock/533840而不是后端的API前缀。它非常易于使用,不是吗!但这只是Apifox强大嘲讽能力下的冰山一角!假设我们有一个用户界面,它有一个字段email希望返回email格式的数据,一个字段phone希望返回手机格式的数据,还有一个字段avatar希望返回头像,这可以通过Apifox下零配置!这就是Apifox强大的smartmock规则:你只需要在API接口文档中定义响应数据,然后一键mock服务,所有的工作都可以由Apifox的smartmock完成。在Apifox内部,当接口响应的data字段没有配置mock规则时,系统会自动使用smartmock规则生成数据,这样在使用过程中零配置就可以mock出非常人性化的数据。默认配置可根据项目设置、功能设置、smartmock设置开启。另外,Apifox还可以根据高级设置进一步限制字段,比如字符串的长度,正则限制数的最大和最小枚举类型等。举个例子,宠物销售状态分为三种:待售、待售、已售出。我们可以通过高级设置的枚举类型来实现,如下图所示:使用Apifox自定义Mock在Apifox中实现自动Mock非常方便,但是我们需要自定义Mock功能。在之前的界面中,宠物有一个字段叫名字。表示宠物的名字,我们能不能把宠物的名字定位成只有两个字符。我们在Apifox数据模型设置中找到宠物的数据模型,并配置其名称字段。@cword(3)是Apifox的Mock语法,完全兼容Mock.js(数据占位方式),扩展了一些Mock.js没有的语法(比如国内手机号码@phone)。如果现有的Mock语法不能满足需求,建议使用正则表达式@regexp来实现灵活定制。正则表达式基本可以满足各种特殊场景的需要。并且我们将宠物的名称限制为两个字符,您可以使用:@cword(2)代替。Apifox的AdvancedMockApifox的SmartMock和CustomMock已经足够强大了,但它们的功能远不止于此。虽然我们可以使用自定义Mock对各个领域的数据进行更加细致的模拟,但是远远不能满足复杂业务的多样性。以上面查询宠物详情的接口为例,难免会出现记录不存在的例子。这时,接口响应一个完全不同的数据类型。此时,我们可以使用Apifox的高级Mock来模拟数据。当我们查询宠物的ID为3时,返回对应格式不存在,同时设置状态码为404。为了满足业务的多样性,我们还可以结合Apifox的Mock语法,使用基于模板的高级Mock功能。这里使用Javascript的nunjucks模板语法来生成你想要的任何数据。总结今天Apifox强大的Mock功能介绍就到这里了。除了这些功能,它还有以下更强大的功能:界面设计:Apifox界面文档遵循OpenApi3.0(原Swagger)和JSONSchema规范,提供非常易用的可视化文档管理功能,零学习成本,非常有效率。还支持在线分享接口文档。数据模型:可复用的数据结构,在定义接口返回数据结构和请求参数数据结构时可以直接引用(仅限JSON和XML模式)。支持模型直接嵌套引用,直接JSON/XML智能导入,支持oneOf、allOf等高级组合模式。接口调试:Apifox具备Postman的环境变量、pre/post脚本、全局共享Cookie/Session等功能,比Postman更高效易用。界面运行完成后,点击另存为用例按钮生成界面用例,之后就可以直接运行界面用例,无需输入参数,非常方便。自定义脚本100%兼容Postman语法,支持运行javascript、java、python、php、js、BeanShell、go、shell、ruby、lua等语言代码。接口用例:通常一个接口有多个用例,比如参数正确的用例、参数错误的用例、空数据的用例、不同数据状态的用例等等。运行接口用例时,会自动校验数据的正确性,使用接口用例调试接口非常高效。接口数据Mock:内置Mock.js规则引擎,非常方便的mock出各种数据,定义数据结构的同时可以编写mock规则。支持添加“expectation”根据请求参数返回不同的mock数据。最重要的是Apifox可以零配置模拟出非常人性化的数据,本文后面会介绍。数据库操作:支持读取数据库数据,作为接口请求参数。支持读取数据库数据验证(断言)接口请求是否成功。接口自动化测试:提供接口集合测试,可以通过选择接口(或接口用例)快速创建测试集。目前更多接口自动化测试功能还在开发中,敬请期待!目标是:JMeter基本都有一些功能,应该比较好用。快速调试:类似于Postman的接口调试方式,主要目的是临时调试一些不需要文档化的接口,不需要事先定义接口就可以快速调试。代码生成:系统根据接口和数据模型定义,自动生成接口请求代码、前端业务代码和后端业务代码。团队协作:Apifox为团队协作而生。界面云端实时同步更新,成熟的团队/项目/成员权限管理满足各类企业需求。您准备好下载并试用了吗?客户端下载地址:www.apifox.cnAPIHub网页版地址:https://www.apifox.cn/apihub/
