大家好,我是一个吃苦耐劳的前端开发工程师,我为什么这么辛苦,不行,项目下周就要上线了,但是后台一直没有给我接口,我可以'没有它调试,工作停滞不前,只能坐着发愁。我反映给老大,山哥:老大,这个后台不靠谱。快上线了,界面还没出来。山哥回复,别着急,这里不是有mock吗?莫克,什么是莫克?我一脸狐疑,问山哥。山哥慢条斯理的说,前端自己开启一个HTTP服务来模拟后端接口的数据,这样就不用等后端接口开发完成了,你的工作不会因为后端开发的延迟而阻塞进程。嗯,写的真好,我好像发现了一个新世界!以后不用再被后端拖累了,心里暗自高兴,但转念一想不对,时间不够了!我又郁闷了,转头对山哥说:mock不错,就是时间不够。重新启动MockHTTPServer会花费很多时间。山哥见我豁然开朗,忙说:我们团队不是用的是Apifox管理API吗?您只需点击一个按钮即可自动模拟!一键Mock数据如此简单,如何使用Apifox自动Mock?山哥接着说道,缓缓说道。SmartMockApifox,一款集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还可以根据高级设置进一步限制字段,比如字符串的长度,正则限制数的最大和最小枚举类型等。举个例子,宠物销售状态分为三种:待售、待售、已售出。我们可以通过高级设置的枚举类型来完成,如下图所示:CustomMock在Apifox自动Mock中非常方便,但是我们需要自定义Mock功能。在之前的界面中,pets有一个字段name,意思是pets宠物的名字,我们能不能把宠物的名字定位成只有两个字符。我们在Apifox数据模型设置中找到宠物的数据模型,并配置其名称字段。@cword(3)是Apifox的Mock语法,完全兼容Mock.js(数据占位方式),扩展了一些Mock.js没有的语法(比如国内手机号码@phone)。如果现有的Mock语法不能满足需求,建议使用正则表达式@regexp来实现灵活定制。正则表达式基本可以满足各种特殊场景的需要。并且我们将宠物的名称限制为两个字符,您可以使用:@cword(2)代替。AdvancedMockApifox的SmartMock和CustomMock足够强大,但远不止于此。虽然我们可以使用自定义Mock对各个领域的数据进行更加细致的模拟,但是远远不能满足复杂业务的多样性。以上面查询宠物详情的接口为例,难免会出现记录不存在的例子。这时,接口响应一个完全不同的数据类型。此时,我们可以使用Apifox的高级Mock来模拟数据。当我们查询宠物的ID为3时,返回对应格式不存在,同时设置状态码为404。为了满足业务的多样性,我们还可以结合Apifox的Mock语法,使用基于模板的高级Mock功能。这里使用Javascript的nunjucks模板语法来生成你想要的任何数据。总结今天关于Mock的分享就到这里了。你有更复杂的Mock需求吗?Apifox关于Mock的功能非常强大,大家也可以试试。
