语法规范
包含两部分:
1)数据模板定义规范(Data Template Definition,DTD)
2)数据占位符定义规范(Data Placeholder Definition,DPD)
数据模板定义规范-DTD
数据模板钟的每个属性由3部分构成:属性名(name),生成规则(rule)、属性值(value),'name|rule': value
生成规则由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
通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。
2)'name|count': string
通过重复 string 生成一个字符串,重复次数等于 count。属性值是数字Number
1)'name|+1': number 【easy-mock不生效】
属性值自动加 1,初始值为 number。
2)'name|min-max': number
生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。
3)'name|min-max.dmin-dmax': number
生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。
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 中随机选取 min 到 max 个属性。
"object|2": {
"310000": "上海市",
"320000": "江苏省",
"330000": "浙江省"
},
}
5.属性值是数组Array
1) 'name|1': array
从属性值 array 中随机选取 1 个元素,作为最终值。
2)'name|+1': array
从属性值 array 中顺序选取 1 个元素,作为最终值。 【easy-mock不生效】
3)'name|min-max': array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
4)'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 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.属性值是函数Function
1) 'name': function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。
7.属性值是正则表达式RegExp
1)'name': regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
'number': /[a-z][A-Z][0-9]/,
数据占位符定义DPD
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
Basic
1)boolean:boolean( min, max, current )或boolean()
指示参数 current 出现的概率。概率计算公式为 min / (min + max)。该参数的默认值为 1,即有 50% 的概率返回参数 current。
"name_1": "@boolean(10,90,true)",
"name_2": "@boolean",
"name_3": "@boolean()"
2)natural:natural( min, max )或natural( min )或natural()
返回一个随机的自然数(大于等于 0 的整数)。
3)integer:integer( min, max )或integer( min )或integer()
返回一个随机的整数。
4)float:float()或float( min )或float( min, max )或float( min, max, dmin )或float( min, max, dmin, dmax ) 其中,dmax默认值是17
返回一个随机的浮点数。
"name_1": "@float(1,100,1,2)",
"name_2": "@float(1,100,1)"
5)character:character()或character( 'lower/upper/number/symbol' )或character( pool )
返回一个随机字符。
内置字符池:
{
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 )
返回一个随机字符串。默认最大长度max=7。
内置字符池与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 )
返回一个整型数组。包含起始值,不包含结束值。
"name_1": "@range(1)",
"name_2": "@range(1,5)",
"name_3": "@range(1,5,2)",
8)date:date()或date(format)
返回一个随机的日期字符串。默认格式为 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 )
返回一个随机的时间字符串。默认格式为 HH:mm:ss
10)datetime:datetime()或datetime( format )
返回一个随机的日期和时间字符串。默认格式为 yyyy-MM-dd HH:mm:ss
11)now:now()或now( format )或now( unit )或now( unit, format )
返回当前的日期和时间字符串。默认格式为 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 )
生成一个随机的图片地址
2)dataImage:dataImage()或dataImage( size )或dataImage( size, text )
生成一段随机的 Base64 图片编码。
Text
1)paragraph:paragraph()或paragraph( len )或paragraph( min, max )。默认值是3到7之间的随机数。
随机生成一段文本
2)cparagraph:cparagraph()或cparagraph( len )或cparagraph( min, max )
随机生成一段中文文本
3)sentence:sentence()或sentence( len )或sentence( min, max )。默认长度是12到18.
随机生成一个句子,第一个单词的首字母大写。
4)csentence:csentence()或csentence( len )或csentence( min, max )
随机生成一段中文文本。
5)word:word()或word( len )或word( min, max )。默认长度是3到10
随机生成一个单词(随机的小写字母)。
6)cword:cword()或.cword( pool )或cword( length )或cword( pool, length )或cword( min, max )或cword( pool, min, max )。默认长度是1个汉字。
随机生成一个汉字。
7)title:title()或title( len )或title( min, max )。默认长度是3到7。
随机生成一句标题,其中每个单词的首字母大写。
8)ctitle:ctitle()或ctitle( len )或ctitle( min, max )。默认长度是3到7。
随机生成一句中文标题。
Name
first() 随机生成一个常见的英文名。
last() 随机生成一个常见的英文姓。
name() 随机生成一个常见的英文姓名
name(true) 随机生成一个常见的英文姓名(包含中间名。。false:不包含中间名)
cfirst() 随机生成一个常见的中文名。
clast() 随机生成一个常见的中文姓。
cname() 随机生成一个常见的中文姓名。
"name_1": "@name()",
"name_2": "@name(true)",
"name_3": "@first()",
"name_4": "@last()",
"name_5": "@cfirst()",
"name_6": "@clast()",
"name_7": "@cname()",
Web
url():随机生成一个 URL。
url( protocol, host ):随机生成一个 URL,并指定 URL 域名和端口号。【easy-mock中不生效】
protocol():随机生成一个 URL 协议。返回以下值之一:'http'、'ftp'、'gopher'、'mailto'、'mid'、'cid'、'news'、'nntp'、'prospero'、'telnet'、'rlogin'、'tn3270'、'wais'。
domain():随机生成一个域名。
tld():随机生成一个顶级域名。
email():随机生成一个邮件地址。
email( domain ):指定邮件地址的域名。【easy-mock中不生效】
ip():随机生成一个 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():随机生成一个(中国)大区。
province():随机生成一个(中国)省(或直辖市、自治区、特别行政区)。
city():随机生成一个(中国)市。
city( true|false ):指示是否生成所属的省。true-返回格式:"安徽省 宣城市"。
county():随机生成一个(中国)县。
county( true|false ):指示是否生成所属的省、市。
zip():随机生成一个邮政编码(六位数字)。
Helper
"name_1": "@capitalize('hello')", 把字符串的第一个字母转换为大写。
"name_2": "@upper('hello')", 把字符串转换为大写。
"name_3": "@lower( 'hello' )", 把字符串转换为小写。
"name_4": "@pick(['a', 'e', 'i', 'o', 'u'])", 从数组中随机选取一个元素,并返回。
"name_5": "@shuffle(['a', 'e', 'i', 'o', 'u'])", 打乱数组中元素的顺序,并返回。
Miscellaneous
"name_1": "@guid()", 随机生成一个 GUID。格式:"name_1": "94f9C233-d80b-A0DD-cd64-E9249fD4C90d",
"name_2": "@id()", 随机生成一个 18 位身份证。
"name_3": "@increment()", 生成一个全局的自增整数。 格式:"name_3": 214,
"name_4": "@increment(2)", 生成一个全局的自增整数,步数为2。 格式:"name_4": 216,