對于我們產品開發來說,正常流程是設計原型,設計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就默默的守護你的開發工程啦!