对于我们产品开发来说,正常流程是设计原型,设计UI,后端设计数据库和接口,前端开发页面调用接口,对于前端来说,很多时间都是在等待接口的完成,这样会耗费很多时间,如何更好的利用这部分时间进行前后端并行开发呢,于是便有了Mock数据的诞生。
简单来说,Mock数据就是借助一些后端来产生假数据返回给前端,让前端的业务流程可以跑下去。目前市面上也有很多工具专门做mock数据的,其实mockjs就是其中最有名的一款,DOClever同样对其进行了支持。
### 基础
下面罗列了DOClever自身的一些mock规则:
@date 针对String类型,生成当前日期
@num(min,max) 针对Number类型,生成min到max范围之间的数字,比如@num(1,100)
@in(val1,val2,...) 针对String,Number类型,生成括号内的某一个值,比如@in(get,post,put,delete)
@img(width,height) 针对String类型,生成一个图片地址,如果填写@img,那么图片默认就是600x400
@null 针对String,Number,Boolean,Mixed类型,生成null值
@arr 针对Mixed类型,生成一个数组,比如@arr([123,45])
@obj 针对Mixed类型,生成一个对象,比如@obj({"name":"aa"})
@count(min,max) 针对Array类型,确定生成数组的大小,比如@count(1,10)
@code 针对String,Number,Boolean,Mixed类型,会执行自定义的代码并返回结果,比如@code(body["aa"])这个就会返回body参数里key为aa的值,有以下几个内置对象:param,query,header,body,global(global里面还有以下几个成员:name,baseurl,path,method)
如果不是以@字符开头的话 就直接生成你输入的那个值,当类型不匹配的时候会尝试去做类型转换
@mj 针对String,Number,Boolean,Mixed类型,提供对mockjs的支持,有两种写法,一种是@mj(DPD),例如@mj(@email),表示生成一个随机的email,还有一种是@mj({@DTD:@DPD}),例如:@mj({"3","a"}),表示生成"aaa",具体的语法规则可以参考mockjs的[官网](https://github.com/nuysoft/Mock/wiki)
### 详解
对于接口的状态,目前分为三种:开发中,开发完成,已废弃。对于DOCLever,提供无缝mock的功能,所谓的无缝mock,就是在接口状态为开发中或者已废弃的时候返回定义好的mock数据,在接口状态为开发完成的时候返回真实接口返回的数据,那么如何去做呢,还需要用到[net.js](http://www.doclever.cn/resource/net.js)文件,本地需要最新的lts版本的node环境([windows](https://nodejs.org/dist/v6.11.4/node-v6.11.4-x86.msi),[linux(mac)](https://nodejs.org/dist/v6.11.4/node-v6.11.4.pkg)),在本地用node运行net.js ,加上mock server地址和你需要请求的真实地址的根地址,比如:node net.js http://localhost:10000/mock/59ec8b73b9e08112401bc31b http://localhost:8081 当您的接口的状态为开发完成的时候,net.js不会去请求mock server地址而去请求真实地址,然后将你本地开发工程下的根地址替换为localhost:36742,这个时候DOClever的无缝mock就默默的守护你的开发工程啦!