語法規(guī)范
數(shù)據(jù)模板定義規(guī)范 DTD
數(shù)據(jù)模板中的每個屬性由 3 部分構(gòu)成:屬性名、生成規(guī)則楞抡、屬性值:
// 屬性名 name
// 生成規(guī)則 rule
// 屬性值 value
'name|rule': value
注意:
- 屬性名 和 生成規(guī)則 之間用豎線 | 分隔。
- 生成規(guī)則 是可選的心铃。
- 生成規(guī)則 有 7 種格式:
'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value
-
生成規(guī)則 的 含義 需要依賴 屬性值的類型 才能確定译断。
- 屬性值 中可以含有 @占位符蟹地。
- 屬性值 還指定了最終值的初始值和類型积暖。
生成規(guī)則和示例:
1. 屬性值是字符串 String
//通過重復 string 生成一個字符串,重復次數(shù)大于等于 min怪与,小于等于 max夺刑。
'name|min-max': string
通過重復 string 生成一個字符串,重復次數(shù)等于 count分别。
'name|count': string
2. 屬性值是數(shù)字 Number
//屬性值自動加 1遍愿,初始值為 number。
'name|+1': number
//生成一個大于等于 min耘斩、小于等于 max 的整數(shù)沼填,屬性值 number 只是用來確定類型。
'name|min-max': number
//生成一個浮點數(shù)括授,整數(shù)部分大于等于 min坞笙、小于等于 max,小數(shù)部分保留 dmin 到 dmax 位刽脖。
'name|min-max.dmin-dmax': number
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
//隨機生成一個布爾值羞海,值為 true 的概率是 1/2忌愚,值為 false 的概率同樣是 1/2曲管。
'name|1': boolean
//隨機生成一個布爾值,值為 value 的概率是 min / (min + max)硕糊,值為 !value 的概率是 max / (min + max)院水。
'name|min-max': value
4. 屬性值是對象 Object
//從屬性值 object 中隨機選取 count 個屬性。
'name|count': object
//從屬性值 object 中隨機選取 min 到 max 個屬性简十。
'name|min-max': object
5. 屬性值是數(shù)組 Array
//從屬性值 array 中隨機選取 1 個元素檬某,作為最終值。
'name|1': array
//從屬性值 array 中順序選取 1 個元素螟蝙,作為最終值恢恼。
'name|+1': array
//通過重復屬性值 array 生成一個新數(shù)組,重復次數(shù)大于等于 min胰默,小于等于 max场斑。
'name|min-max': array
//通過重復屬性值 array 生成一個新數(shù)組,重復次數(shù)為 count牵署。
'name|count': array
Mock.mock(/api\/test/, {
//通過重復屬性值 array 生成一個新數(shù)組漏隐,重復次數(shù)為 1-3次。
"favorite_games|1-3": [3,5,4,6,23,28,42,45],
});
6. 屬性值是函數(shù) Function
執(zhí)行函數(shù) function奴迅,取其返回值作為最終的屬性值青责,函數(shù)的上下文為屬性 'name' 所在的對象。
'name': function
7. 屬性值是正則表達式 RegExp
根據(jù)正則表達式 regexp 反向生成可以匹配它的字符串。用于生成自定義格式的字符串脖隶。
'name': 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"
}
數(shù)據(jù)占位符定義規(guī)范 DPD
占位符 只是在屬性值字符串中占個位置扁耐,并不出現(xiàn)在最終的屬性值中。
占位符 的格式為:
@占位符
@占位符(參數(shù) [, 參數(shù)])
注意:
用 @ 來標識其后的字符串是 占位符产阱。
占位符 引用的是 Mock.Random 中的方法做葵。
通過 Mock.Random.extend() 來擴展自定義占位符。
占位符 也可以引用 數(shù)據(jù)模板 中的屬性心墅。
占位符 會優(yōu)先引用 數(shù)據(jù)模板 中的屬性酿矢。
占位符 支持 相對路徑 和 絕對路徑。
Mock.mock({
name: {
first: '@FIRST',
middle: '@FIRST',
last: '@LAST',
full: '@first @middle @last'
}
})
// =>
{
"name": {
"first": "Charles",
"middle": "Brenda",
"last": "Lopez",
"full": "Charles Brenda Lopez"
}
}
//引入mockjs
import Mock from 'mockjs'
const Random = Mock.Random;
//使用mockjs模擬數(shù)據(jù)
Mock.mock('/api/msdk/proxy/query_common_credit', {
"ret":0,
"data":
{
"mtime": "@datetime",//隨機生成日期時間
"score": "@natural(1, 800)",//隨機生成1-800的數(shù)字
"rank": "@natural(1, 100)",//隨機生成1-100的數(shù)字
"stars": "@natural(0, 5)",//隨機生成1-5的數(shù)字
"nickname": "@cname",//隨機生成中文名字
}
});
注意
get請求有帶參數(shù)時怎燥,請把接口url寫為正則匹配瘫筐,否則匹配不到就報錯(Mock.mock('此處為正則')