語(yǔ)法規(guī)范
包含兩部分:
1)數(shù)據(jù)模板定義規(guī)范(Data Template Definition,DTD)
2)數(shù)據(jù)占位符定義規(guī)范(Data Placeholder Definition,DPD)
數(shù)據(jù)模板定義規(guī)范-DTD
數(shù)據(jù)模板鐘的每個(gè)屬性由3部分構(gòu)成:屬性名(name),生成規(guī)則(rule)、屬性值(value),'name|rule': value
生成規(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
示例:
屬性值是字符串 String
1)'name|min-max': string
通過(guò)重復(fù) string 生成一個(gè)字符串,重復(fù)次數(shù)大于等于 min,小于等于 max。
2)'name|count': string
通過(guò)重復(fù) string 生成一個(gè)字符串,重復(fù)次數(shù)等于 count。屬性值是數(shù)字Number
1)'name|+1': number 【easy-mock不生效】
屬性值自動(dòng)加 1,初始值為 number。
2)'name|min-max': number
生成一個(gè)大于等于 min、小于等于 max 的整數(shù),屬性值 number 只是用來(lái)確定類(lèi)型。
3)'name|min-max.dmin-dmax': number
生成一個(gè)浮點(diǎn)數(shù),整數(shù)部分大于等于 min、小于等于 max,小數(shù)部分保留 dmin 到 dmax 位。
3.屬性值是布爾型Boolean
1)'name|1': boolean
隨機(jī)生成一個(gè)布爾值,值為 true 的概率是 1/2,值為 false 的概率同樣是 1/2。
2)'name|min-max': value
隨機(jī)生成一個(gè)布爾值,值為 value 的概率是 min / (min + max),值為 !value 的概率是 max / (min + max)
4.屬性值是對(duì)象Object
1)'name|count': object
從屬性值 object 中隨機(jī)選取 count 個(gè)屬性。
2) 'name|min-max': object
從屬性值 object 中隨機(jī)選取 min 到 max 個(gè)屬性。
"object|2": {
"310000": "上海市",
"320000": "江蘇省",
"330000": "浙江省"
},
}
5.屬性值是數(shù)組Array
1) 'name|1': array
從屬性值 array 中隨機(jī)選取 1 個(gè)元素,作為最終值。
2)'name|+1': array
從屬性值 array 中順序選取 1 個(gè)元素,作為最終值。 【easy-mock不生效】
3)'name|min-max': array
通過(guò)重復(fù)屬性值 array 生成一個(gè)新數(shù)組,重復(fù)次數(shù)大于等于 min,小于等于 max。
4)'name|count': array
通過(guò)重復(fù)屬性值 array 生成一個(gè)新數(shù)組,重復(fù)次數(shù)為 count。
'number1|1': [1, 2, 3, 4],
'number2|3': [1, 2, 3, 4],
'number3|+1': [1, 2, 3, 4],
'number4|2-3': [1, 2, 3, 4],
6.屬性值是函數(shù)Function
1) 'name': function
執(zhí)行函數(shù) function,取其返回值作為最終的屬性值,函數(shù)的上下文為屬性 'name' 所在的對(duì)象。
7.屬性值是正則表達(dá)式RegExp
1)'name': regexp
根據(jù)正則表達(dá)式 regexp 反向生成可以匹配它的字符串。用于生成自定義格式的字符串。
'number': /[a-z][A-Z][0-9]/,
數(shù)據(jù)占位符定義DPD
占位符 只是在屬性值字符串中占個(gè)位置,并不出現(xiàn)在最終的屬性值中。

Basic
1)boolean:boolean( min, max, current )或boolean()
指示參數(shù) current 出現(xiàn)的概率。概率計(jì)算公式為 min / (min + max)。該參數(shù)的默認(rèn)值為 1,即有 50% 的概率返回參數(shù) current。
"name_1": "@boolean(10,90,true)",
"name_2": "@boolean",
"name_3": "@boolean()"
2)natural:natural( min, max )或natural( min )或natural()
返回一個(gè)隨機(jī)的自然數(shù)(大于等于 0 的整數(shù))。
3)integer:integer( min, max )或integer( min )或integer()
返回一個(gè)隨機(jī)的整數(shù)。
4)float:float()或float( min )或float( min, max )或float( min, max, dmin )或float( min, max, dmin, dmax ) 其中,dmax默認(rèn)值是17
返回一個(gè)隨機(jī)的浮點(diǎn)數(shù)。
"name_1": "@float(1,100,1,2)",
"name_2": "@float(1,100,1)"
5)character:character()或character( 'lower/upper/number/symbol' )或character( pool )
返回一個(gè)隨機(jī)字符。
內(nèi)置字符池:
{
lower: "abcdefghijklmnopqrstuvwxyz",
upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
number: "0123456789",
symbol: "!@#$%^&*()[]"
}
"name_1": "@character(pool)",
"name_2": "@character('lower')",
"name_3": "@character('aeiou')",
6)string:string()或string( length )或string( pool, length )或string( min, max )或string( pool, min, max )
返回一個(gè)隨機(jī)字符串。默認(rèn)最大長(zhǎng)度max=7。
內(nèi)置字符池與character提及到的一樣.
"name_1": "@string()",
"name_2": "@string(5)",
"name_3": "@string('lower',4)",
"name_4": "@string('壹貳叁肆伍陸柒捌玖拾',1,4)",
7)range:range( start )或range( start, stop )或range( start, stop, step )
返回一個(gè)整型數(shù)組。包含起始值,不包含結(jié)束值。
"name_1": "@range(1)",
"name_2": "@range(1,5)",
"name_3": "@range(1,5,2)",
8)date:date()或date(format)
返回一個(gè)隨機(jī)的日期字符串。默認(rèn)格式為 yyyy-MM-dd
"name_1": "@date()",
"name_2": "@date('yyyy-MM-dd')",
"name_3": "@date('yyyy-MM-dd HH:mm:ss A')",

9)time:time()或time( format )
返回一個(gè)隨機(jī)的時(shí)間字符串。默認(rèn)格式為 HH:mm:ss
10)datetime:datetime()或datetime( format )
返回一個(gè)隨機(jī)的日期和時(shí)間字符串。默認(rèn)格式為 yyyy-MM-dd HH:mm:ss
11)now:now()或now( format )或now( unit )或now( unit, format )
返回當(dāng)前的日期和時(shí)間字符串。默認(rèn)格式為 yyyy-MM-dd HH:mm:ss
unit包含:'year'、'month'、'day'、'week'、'hour'、'minute'、'second'
"name_1": "@now()",
"name_2": "@now('yyyy-MM-dd')",
"name_3": "@now('yyyy-MM-dd HH:mm:ss A')",
"name_4": "@now('second')",
image
1)image:image()或image( size )或image( size, background )或image( size, background, text )或image( size, background, foreground, text )或image( size, background, foreground, format, text )
生成一個(gè)隨機(jī)的圖片地址
2)dataImage:dataImage()或dataImage( size )或dataImage( size, text )
生成一段隨機(jī)的 Base64 圖片編碼。
Text
1)paragraph:paragraph()或paragraph( len )或paragraph( min, max )。默認(rèn)值是3到7之間的隨機(jī)數(shù)。
隨機(jī)生成一段文本
2)cparagraph:cparagraph()或cparagraph( len )或cparagraph( min, max )
隨機(jī)生成一段中文文本
3)sentence:sentence()或sentence( len )或sentence( min, max )。默認(rèn)長(zhǎng)度是12到18.
隨機(jī)生成一個(gè)句子,第一個(gè)單詞的首字母大寫(xiě)。
4)csentence:csentence()或csentence( len )或csentence( min, max )
隨機(jī)生成一段中文文本。
5)word:word()或word( len )或word( min, max )。默認(rèn)長(zhǎng)度是3到10
隨機(jī)生成一個(gè)單詞(隨機(jī)的小寫(xiě)字母)。
6)cword:cword()或.cword( pool )或cword( length )或cword( pool, length )或cword( min, max )或cword( pool, min, max )。默認(rèn)長(zhǎng)度是1個(gè)漢字。
隨機(jī)生成一個(gè)漢字。
7)title:title()或title( len )或title( min, max )。默認(rèn)長(zhǎng)度是3到7。
隨機(jī)生成一句標(biāo)題,其中每個(gè)單詞的首字母大寫(xiě)。
8)ctitle:ctitle()或ctitle( len )或ctitle( min, max )。默認(rèn)長(zhǎng)度是3到7。
隨機(jī)生成一句中文標(biāo)題。
Name
first() 隨機(jī)生成一個(gè)常見(jiàn)的英文名。
last() 隨機(jī)生成一個(gè)常見(jiàn)的英文姓。
name() 隨機(jī)生成一個(gè)常見(jiàn)的英文姓名
name(true) 隨機(jī)生成一個(gè)常見(jiàn)的英文姓名(包含中間名。。false:不包含中間名)
cfirst() 隨機(jī)生成一個(gè)常見(jiàn)的中文名。
clast() 隨機(jī)生成一個(gè)常見(jiàn)的中文姓。
cname() 隨機(jī)生成一個(gè)常見(jiàn)的中文姓名。
"name_1": "@name()",
"name_2": "@name(true)",
"name_3": "@first()",
"name_4": "@last()",
"name_5": "@cfirst()",
"name_6": "@clast()",
"name_7": "@cname()",
Web
url():隨機(jī)生成一個(gè) URL。
url( protocol, host ):隨機(jī)生成一個(gè) URL,并指定 URL 域名和端口號(hào)。【easy-mock中不生效】
protocol():隨機(jī)生成一個(gè) URL 協(xié)議。返回以下值之一:'http'、'ftp'、'gopher'、'mailto'、'mid'、'cid'、'news'、'nntp'、'prospero'、'telnet'、'rlogin'、'tn3270'、'wais'。
domain():隨機(jī)生成一個(gè)域名。
tld():隨機(jī)生成一個(gè)頂級(jí)域名。
email():隨機(jī)生成一個(gè)郵件地址。
email( domain ):指定郵件地址的域名?!緀asy-mock中不生效】
ip():隨機(jī)生成一個(gè) IP 地址。
"name_1": "@url('http', 'nuysoft.com')",
"name_2": "@protocol()",
"name_3": "@domain()",
"name_4": "@tld()",
"name_5": "@email()",
"name_6": "@email('nuysoft.com')",
"name_7": "@ip()",
示例
{
"success": true,
"data": {
"projects|3-10": [{
"name": "@boolean(10,90,true)",
"url": "@url",
"email": "@email",
"address": "@county(true)",
"string|1-10": "★",
"number|1-100": 100,
"boolean|1-2": true,
"object|2": {
"310000": "上海市",
"320000": "江蘇省",
"330000": "浙江省"
},
}]
}
}
Address
region():隨機(jī)生成一個(gè)(中國(guó))大區(qū)。
province():隨機(jī)生成一個(gè)(中國(guó))省(或直轄市、自治區(qū)、特別行政區(qū))。
city():隨機(jī)生成一個(gè)(中國(guó))市。
city( true|false ):指示是否生成所屬的省。true-返回格式:"安徽省 宣城市"。
county():隨機(jī)生成一個(gè)(中國(guó))縣。
county( true|false ):指示是否生成所屬的省、市。
zip():隨機(jī)生成一個(gè)郵政編碼(六位數(shù)字)。
Helper
"name_1": "@capitalize('hello')", 把字符串的第一個(gè)字母轉(zhuǎn)換為大寫(xiě)。
"name_2": "@upper('hello')", 把字符串轉(zhuǎn)換為大寫(xiě)。
"name_3": "@lower( 'hello' )", 把字符串轉(zhuǎn)換為小寫(xiě)。
"name_4": "@pick(['a', 'e', 'i', 'o', 'u'])", 從數(shù)組中隨機(jī)選取一個(gè)元素,并返回。
"name_5": "@shuffle(['a', 'e', 'i', 'o', 'u'])", 打亂數(shù)組中元素的順序,并返回。
Miscellaneous
"name_1": "@guid()", 隨機(jī)生成一個(gè) GUID。格式:"name_1": "94f9C233-d80b-A0DD-cd64-E9249fD4C90d",
"name_2": "@id()", 隨機(jī)生成一個(gè) 18 位身份證。
"name_3": "@increment()", 生成一個(gè)全局的自增整數(shù)。 格式:"name_3": 214,
"name_4": "@increment(2)", 生成一個(gè)全局的自增整數(shù),步數(shù)為2。 格式:"name_4": 216,