mock.js的使用方法

在開發(fā)過程中够挂,有很多的ajax請求,前后端分離開發(fā)你肯定遇到這樣的問題踏枣,后臺給你的接口文檔,你需要在本地模擬數(shù)據(jù)返回钙蒙,可能你也用到過我之前用的蠢方法茵瀑,就是新建一個test.json文件,放入接口文檔中寫的返回示例躬厌,這么做有個很大的問題是不夠靈活马昨,而且還需要切換url,現(xiàn)在學會使用mock.js攔截ajax請求扛施,更加方便的構造你需要的假數(shù)據(jù)鸿捧。

一.簡單示例

在這里我舉的例子是在vue項目中如何使用mock.js。

  • 安裝mockjs
    npm install mockjs --save-dev
  • 在項目中創(chuàng)建mock.js疙渣,并寫一個簡單的返回示例匙奴,后面攔截其他url的ajax請求直接參考這個示例。
//引入mockjs
import Mock from 'mockjs'
//使用mockjs模擬數(shù)據(jù)
Mock.mock('/\/api\/msdk\/proxy\/query_common_credit/', {
    "ret":0,
    "data":
      {
        "mtime": "@datetime",//隨機生成日期時間
        "score|1-800": 800,//隨機生成1-800的數(shù)字
        "rank|1-100":  100,//隨機生成1-100的數(shù)字
        "stars|1-5": 5,//隨機生成1-5的數(shù)字
        "nickname": "@cname",//隨機生成中文名字
      }
//data里的屬性看不懂妄荔,需要詳細看語法規(guī)范,博客鏈接:http://www.reibang.com/p/4579f40e6108
});
  • main.js里面引入該文檔
    import './assets/js/mock'//此部分引入的是我們所編寫的mockjs文檔

  • xxx.vue文件中調用mock.js中模擬的數(shù)據(jù)接口泼菌,這時返回的response就是mock.js中用Mock.mock(‘url’,data)中設置的data了。

query_common_credit(){
      var loginMode = 'msdk';//游戲內默認msdk(wx|qq|msdk)
      var url = '/api/msdk/proxy/query_common_credit';
      this.$axios.get(url)
        .then(response => {
          
        })
        .catch(error => {
          
        })
    }

二.攔截數(shù)據(jù)的方法Mock.mock()

這里我舉例最常用的格式
Mock.mock(url,data);
url用正則寫啦租,這樣get請求傳參時哗伯,也能攔截數(shù)據(jù)了。

Mock.mock('/\/api\/msdk\/proxy\/query_common_credit/', {
    "ret":0,
    "data":
      {
        "mtime": "@datetime",//隨機生成日期時間
        "score|1-800": 800,//隨機生成1-800的數(shù)字
        "rank|1-100":  100,//隨機生成1-100的數(shù)字
        "stars|1-5": 5,//隨機生成1-5的數(shù)字
        "nickname": "@cname",//隨機生成中文名字
      }
//data里的屬性看不懂刷钢,需要詳細看語法規(guī)范,博客鏈接:http://www.reibang.com/p/4579f40e6108
});

三.設置延時請求到數(shù)據(jù)

不設置延時很有可能遇到坑笋颤,這里需要留意,因為真實的請求是需要時間的内地,mock不設置延時則是馬上拿到數(shù)據(jù)返回伴澄,這兩個情況不同可能導致在接口聯(lián)調時出現(xiàn)問題。所以最好要先設置延時請求到數(shù)據(jù)阱缓。

//延時400s請求到數(shù)據(jù)
Mock.setup({
    timeout: 400
})
//延時200-600毫秒請求到數(shù)據(jù)
Mock.setup({
    timeout: '200-600'
})

四.Mock.mock()方法中定義data返回的格式

生成規(guī)則和示例:

1. 屬性值是字符串 String
  1. 'name|min-max': string

    通過重復 string 生成一個字符串非凌,重復次數(shù)大于等于 min,小于等于 max荆针。

  2. 'name|count': string

    通過重復 string 生成一個字符串敞嗡,重復次數(shù)等于 count

2. 屬性值是數(shù)字 Number
  1. 'name|+1': number

    屬性值自動加 1航背,初始值為 number喉悴。

  2. 'name|min-max': number

    生成一個大于等于 min、小于等于 max 的整數(shù)玖媚,屬性值 number 只是用來確定類型箕肃。

  3. 'name|min-max.dmin-dmax': number

    生成一個浮點數(shù),整數(shù)部分大于等于 min今魔、小于等于 max勺像,小數(shù)部分保留 dmindmax 位障贸。

Mock.mock({
    'number1|1-100.1-10': 1,
    'number2|123.1-10': 1,
    'number3|123.3': 1,
    'number4|123.10': 1.123
})
// =>
{
    "number1": 12.92,
    "number2": 123.51,
    "number3": 123.777,
    "number4": 123.1231091814
}
3. 屬性值是布爾型 Boolean
  1. 'name|1': boolean

    隨機生成一個布爾值,值為 true 的概率是 1/2吟宦,值為 false 的概率同樣是 1/2篮洁。

  2. 'name|min-max': value

    隨機生成一個布爾值,值為 value 的概率是 min / (min + max)殃姓,值為 !value 的概率是 max / (min + max)袁波。

4. 屬性值是對象 Object
  1. 'name|count': object

    從屬性值 object 中隨機選取 count 個屬性。

  2. 'name|min-max': object

    從屬性值 object 中隨機選取 minmax 個屬性辰狡。

5. 屬性值是數(shù)組 Array
  1. 'name|1': array

    從屬性值 array 中隨機選取 1 個元素锋叨,作為最終值。

  2. 'name|+1': array

    從屬性值 array 中順序選取 1 個元素宛篇,作為最終值。

  3. 'name|min-max': array

    通過重復屬性值 array 生成一個新數(shù)組薄湿,重復次數(shù)大于等于 min叫倍,小于等于 max

  4. 'name|count': array

    通過重復屬性值 array 生成一個新數(shù)組豺瘤,重復次數(shù)為 count吆倦。

6. 屬性值是函數(shù) Function
  1. 'name': function

    執(zhí)行函數(shù) function,取其返回值作為最終的屬性值坐求,函數(shù)的上下文為屬性 'name' 所在的對象蚕泽。

7. 屬性值是正則表達式 RegExp
  1. 'name': regexp

    根據(jù)正則表達式 regexp 反向生成可以匹配它的字符串。用于生成自定義格式的字符串桥嗤。

    Mock.mock({
        'regexp1': /[a-z][A-Z][0-9]/,
        'regexp2': /\w\W\s\S\d\D/,
        'regexp3': /\d{5,10}/
    })
    // =>
    {
        "regexp1": "pJ7",
        "regexp2": "F)\fp1G",
        "regexp3": "561659409"
    }
    

五.Mock.Random生成各種隨機數(shù)據(jù)须妻。

Mock.Random 提供的完整方法(占位符)如下:

Type Method
Basic boolean, natural, integer, float, character, string, range, date, time, datetime, now
Image image, dataImage
Color color
Text paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle
Name first, last, name, cfirst, clast, cname
Web url, domain, email, ip, tld
Address area, region
Helper capitalize, upper, lower, pick, shuffle
Miscellaneous guid, id
//例子
Mock.mock(/(\/api\/)([a-z]{2,4})(\/proxy\/query_common_credit_detail)/, {
    "err":0,
    "data": {
      boo1:"@boolean",//隨機獲取boolean值
      img:"@image",//隨機獲取圖片路徑
      name:"@name"http://隨機獲取名字
    }
  });
/*打印出的數(shù)據(jù)是這樣的,得到了想要的隨機數(shù)據(jù)
data:{
img:"http://dummyimage.com/728x90",
name:"Betty Anderson",
boo1:false,
}*/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末泛领,一起剝皮案震驚了整個濱河市荒吏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渊鞋,老刑警劉巖绰更,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锡宋,居然都是意外死亡儡湾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門执俩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徐钠,“玉大人,你說我怎么就攤上這事奠滑〉ぶ澹” “怎么了妒穴?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摊崭。 經常有香客問我讼油,道長,這世上最難降的妖魔是什么呢簸? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任矮台,我火速辦了婚禮,結果婚禮上根时,老公的妹妹穿的比我還像新娘瘦赫。我一直安慰自己,他們只是感情好蛤迎,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布确虱。 她就那樣靜靜地躺著,像睡著了一般替裆。 火紅的嫁衣襯著肌膚如雪校辩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天辆童,我揣著相機與錄音宜咒,去河邊找鬼。 笑死把鉴,一個胖子當著我的面吹牛故黑,可吹牛的內容都是我干的。 我是一名探鬼主播庭砍,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼场晶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逗威?” 一聲冷哼從身側響起峰搪,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凯旭,沒想到半個月后概耻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡罐呼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年鞠柄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫉柴。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡厌杜,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情夯尽,我是刑警寧澤瞧壮,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站匙握,受9級特大地震影響咆槽,放射性物質發(fā)生泄漏。R本人自食惡果不足惜圈纺,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一秦忿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛾娶,春花似錦灯谣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罗售,卻和暖如春呐萨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莽囤。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留切距,地道東北人朽缎。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像谜悟,于是被迫代替她去往敵國和親话肖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355