Mock.js——API详解
Mock.js API详解
1、Mock.mock()
Mock.mock()是 Mock.js 的核心方法,用于:
- 拦截 Ajax 请求
- 生成随机数据
- 返回模拟接口响应
1.1、 根据数据模板生成模拟数据。
Mock.mock( template )
示例:
let Mock = require('mockjs')
// Mock.mock( template )
const template = {
'title': 'Syntax Demo',
'string1|1-10': '★',
'string2|3': 'value',
'number1|+1': 100,
'number2|1-100': 100,
'number3|1-100.1-10': 1,
'number4|123.1-10': 1,
'number5|123.3': 1,
'number6|123.10': 1.123,
'boolean1|1': true,
'boolean2|1-2': true,
'object1|2-4': {
'110000': '北京市',
'120000': '天津市',
'130000': '河北省',
'140000': '山西省'
},
'object2|2': {
'310000': '上海市',
'320000': '江苏省',
'330000': '浙江省',
'340000': '安徽省'
},
'array1|1': ['AMD', 'CMD', 'KMD', 'UMD'],
'array2|1-10': ['Mock.js'],
'array3|3': ['Mock.js'],
'function': function() {
return this.title
}
}
let data = Mock.mock(template)
console.log(data)
{
title: 'Syntax Demo',
string1: '★★★★★★★',
string2: 'valuevaluevalue',
number1: 100,
number2: 34,
number3: 12.0524921,
number4: 123.811567098,
number5: 123.746,
number6: 123.1238651337,
boolean1: true,
boolean2: false,
object1: {
'110000': '北京市',
'120000': '天津市',
'130000': '河北省',
'140000': '山西省'
},
object2: { '310000': '上海市', '330000': '浙江省' },
array1: 'CMD',
array2: [ 'Mock.js', 'Mock.js', 'Mock.js', 'Mock.js', 'Mock.js', 'Mock.js' ],
array3: [ 'Mock.js', 'Mock.js', 'Mock.js' ],
function: 'Syntax Demo'
}
1.2、路径匹配返回模板模拟数据
记录数据模板。当拦截到匹配 rurl 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。
Mock.mock( rurl, template )
- 请求的 URL(字符串或正则)
- 返回的数据模板(对象或函数)
示例:
Mock.mock('/api/user', {
id: 1,
name: '@cname',
age: 18
})
请求:
axios.get('/api/user')
返回:
{
"id": 1,
"name": "张三",
"age": 18
}
rurl的两种写法:
字符串(精确匹配)
Mock.mock('/api/list', {
'list|10': [{ 'id|+1': 1 }]
})
//只拦截
GET /api/list
//不拦截
/api/list/1
正则表达式(推荐)
Mock.mock(/\/api\/user\/\d+/, {
id: /\d+/,
name: '@cname'
})
//可拦截
/api/user/1
/api/user/123
template的两种形式:
对象模板(常用):
Mock.mock('/api/data', {
code: 200,
data: {
'id|1-100': 1,
'title': '@ctitle'
}
})
函数形式(动态控制):
Mock.mock('/api/info', (options) => {
return {
url: options.url,
method: options.type,
data: {
name: '@cname'
}
}
})
1.3、路径匹配返回函数模拟数据
记录用于生成响应数据的函数。当拦截到匹配 rurl 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。
Mock.mock( rurl, function( options ) )
- rurl 请求地址(字符串 / 正则)
- function 拦截成功后执行的回调函数
- options 请求相关信息
options参数详解:
function(options) {}
- url 请求完整 URL
- type 请求方法(GET / POST)
- body 请求体(POST / PUT 才有)
示例:从 URL 中取参数
Mock.mock(/\/api\/user\/(\d+)/, function(options) {
const userId = options.url.match(/\/api\/user\/(\d+)/)[1]
return {
code: 200,
data: {
id: userId,
name: '@cname'
}
}
})
请求:
axios.get('/api/user/99')
返回:
{
"code": 200,
"data": {
"id": "99",
"name": "王芳"
}
}
示例:处理 POST 请求参数
Mock.mock('/api/login', function(options) {
const body = JSON.parse(options.body)
if (body.username === 'admin') {
return {
code: 200,
message: '登录成功'
}
}
return {
code: 401,
message: '用户名错误'
}
})
请求:
axios.post('/api/login', {
username: 'admin',
password: '123456'
})
1.4、路径和请求方式匹配返回模板模拟数据
记录数据模板。当拦截到匹配rurl和rtype的Ajax请求时,将根据数据模板template生成模拟数据,并作为响应返回数据。
Mock.mock(rurl, rtype, template)
- rurl 请求地址(字符串 / 正则)
- rtype 请求方法(GET / POST / PUT / DELETE)
- template 数据模板(对象 / 函数)
示例:
Mock.mock('/api/login', 'post', {
code: 200,
message: '登录成功',
data: {
token: 'abc123'
}
})
请求:
axios.post('/api/login', {
username: 'admin',
password: '123456'
})
1.5、路径和请求方式匹配返回函数模拟数据
记录用于生成响应数据的函数。当拦截到匹配rurl和rtype的Ajax请求时,函数function(options)将被执行,并将执行结果作为响应数据返回。
Mock.mock(rurl, rtype, function(options))
- rurl 请求地址(字符串 / 正则)
- rtype 请求方法:get/post/put/delete
- function 拦截后的处理函数
- options 请求信息对象
示例:
Mock.mock('/api/login', 'post', function(options) {
const body = JSON.parse(options.body)
if (body.username === 'admin') {
return {
code: 200,
message: '登录成功',
data: {
token: 'abc123'
}
}
}
return {
code: 401,
message: '用户名或密码错误'
}
})
2、Mock.setup()
Mock.setup()用来 全局配置 Mock.js 的行为,比如:
- 响应延迟时间(模拟网络慢)
- 是否开启日志
- 是否抛出错误提示
Mock.setup(settings)
settings可选配置项
- log boolean 是否打印日志(部分版本支持)
- timeout number/string 响应延迟时间
指定被拦截的 Ajax 请求的响应时间,单位是毫秒。值可以是正整数,例如 400,表示 400 毫秒 后才会返回响应内容;也可以是横杠 ‘-’ 风格的字符串,例如 ‘200-600’,表示响应时间介于 200 和 600 毫秒之间。默认值是’10-100’。
Mock.setup({
timeout: 400
})
Mock.setup({
timeout: '200-600'
})
配合接口示例:
Mock.setup({
timeout: '300-600'
})
Mock.mock('/api/user', {
id: 1,
name: '@cname'
})
3、Mock.Random
Mock.Random 是一个工具类,用于生成各种随机数据。
Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) 。
var Random = Mock.Random
Random.email()
// => "n.clark@miller.io"
Mock.mock('@email')
// => "y.lee@lewis.org"
Mock.mock( { email: '@email' } )
// => { email: "v.lewis@hall.gov" }
Mock.Random 提供的完整方法(占位符)如下:
- Basic
- Date
- Image
- Color
- Text
- Name
- Web
- Address
- Helper
- Miscellaneous
3.1、Basic(基础类型值)
3.1.1、boolean()布尔值
返回一个随机的布尔值。
Random.boolean( min?, max?, current? )
min:可选。指示参数 current 出现的概率。概率计算公式为 min / (min + max)。该参数的默认值为 1,即有 50% 的概率返回参数 current。max:可选。指示参数 current 的相反值 !current 出现的概率。概率计算公式为 max / (min + max)。该参数的默认值为 1,即有 50% 的概率返回参数 !current。current:可选 值为布尔值 true 或 false。如果未传入任何参数,则返回 true 和 false 的概率各为 50%。该参数没有默认值。在该方法的内部,依据原生方法 Math.random() 返回的(浮点)数来计算和返回布尔值,例如在最简单的情况下,返回值是表达式 Math.random() >= 0.5 的执行结果。
Random.boolean()
// => true
Random.boolean(1, 9, true)
// => false
Random.bool()
// => false
Random.bool(1, 9, false)
// => true
3.1.2、natural()自然数
返回一个随机的自然数(大于等于 0 的整数)。
Random.natural( min?, max? )
min:可选。指示随机自然数的最小值。默认值为 0。max:可选。指示随机自然数的最大值。默认值为 9007199254740992。
Random.natural()
// => 1002794054057984
Random.natural(10000)
// => 71529071126209
Random.natural(60, 100)
// => 77
3.1.3、integer()整数
返回一个随机的整数。
Random.integer( min?, max? )
min:可选。指示随机整数的最小值。默认值为 -9007199254740992。max:可选。指示随机整数的最大值。默认值为 9007199254740992。
Random.integer()
// => -3815311811805184
Random.integer(10000)
// => 4303764511003750
Random.integer(60,100)
// => 96
3.1.4、float()浮点数
返回一个随机的浮点数。
Random.float( min?, max?, dmin?, dmax? )
min:可选。整数部分的最小值。默认值为 -9007199254740992。max:可选。整数部分的最大值。默认值为 9007199254740992。dmin:可选。小数部分位数的最小值。默认值为 0。dmax:可选。小数部分位数的最大值。默认值为 17。
Random.float()
// => -1766114241544192.8
Random.float(0)
// => 556530504040448.25
Random.float(60, 100)
// => 82.56779679549358
Random.float(60, 100, 3)
// => 61.718533677927894
Random.float(60, 100, 3, 5)
// => 70.6849
3.1.5、character()字符
返回一个随机字符。
Random.character( pool? )
pool:可选。字符串。表示字符池,将从中选择一个字符返回。
如果传入了 ‘lower’ 或 ‘upper’、‘number’、‘symbol’,表示从内置的字符池从选取:
{
lower: "abcdefghijklmnopqrstuvwxyz",
upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
number: "0123456789",
symbol: "!@#$%^&*()[]"
}
如果未传入该参数,则从 lower + upper + number + symbol 中随机选取一个字符返回
Random.character()
// => "P"
Random.character('lower')
// => "y"
Random.character('upper')
// => "X"
Random.character('number')
// => "1"
Random.character('symbol')
// => "&"
Random.character('aeiou')
// => "u"
3.1.6、string()字符串
返回一个随机字符串。
Random.string( pool?, min?, max? )
pool:可选。字符串。表示字符池,将从中选择一个字符返回。如果传入 ‘lower’ 或 ‘upper’、‘number’、‘symbol’,表示从内置的字符池从选取。如果未传入该参数,则从 lower + upper + number + symbol 中随机选取一个字符返回。
{
lower: "abcdefghijklmnopqrstuvwxyz",
upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
number: "0123456789",
symbol: "!@#$%^&*()[]"
}
min:可选。随机字符串的最小长度。默认值为 3。max:可选。随机字符串的最大长度。默认值为 7。
Random.string()
// => "pJjDUe"
Random.string( 5 )
// => "GaadY"
Random.string( 'lower', 5 )
// => "jseqj"
Random.string( 7, 10 )
// => "UuGQgSYk"
Random.string( 'aeiou', 1, 3 )
// => "ea"
Random.string( '壹贰叁肆伍陆柒捌玖拾', 3, 5 )
// => "肆捌伍叁"
3.1.7、range()整型数组
返回一个整型数组。
Random.range( start?, stop, step? )
start:可选。数组中整数的起始值。stop:比选。数组中整数的结束值(不包含在返回值中)。- ·step·:可选。数组中整数之间的步长。默认值为 1。
Random.range(10)
// => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Random.range(3, 7)
// => [3, 4, 5, 6]
Random.range(1, 10, 2)
// => [1, 3, 5, 7, 9]
Random.range(1, 10, 3)
// => [1, 4, 7]
3.2、Date(日期与时间)
3.2.1、date()日期
返回一个随机的日期字符串。
Random.date( format? )
format:可选。指示生成的日期字符串的格式。默认值为 yyyy-MM-dd。可选的占位符参考自 Ext.Date,如下所示:
| Format | Example |
|---|---|
| yyyy | 1999 or 2003 |
| yy | 9 or 03 |
| y | 99 or 03 |
| MM | 01 to 12 |
| M | 1 to 12 |
| dd | 01 to 31 |
| d | 1 to 31 |
| HH | 00 to 23 |
| H | 0 to 23 |
| hh | 1 to 12 |
| h | 01 to 12 |
| mm | 00 to 59 |
| m | 0 to 59 |
| ss | 00 to 59 |
| s | 0 to 59 |
| SS | 000 to 999 |
| S | 0 to 999 |
| A | AM or PM |
| a | am or pm |
| T | 759883437303 |
Random.date()
// => "2002-10-23"
Random.date('yyyy-MM-dd')
// => "1983-01-29"
Random.date('yy-MM-dd')
// => "79-02-14"
Random.date('y-MM-dd')
// => "81-05-17"
Random.date('y-M-d')
// => "84-6-5"
3.2.2、time()时间
返回一个随机的时间字符串。
Random.time( format? )
format:可选。指示生成的时间字符串的格式。默认值为 HH:mm:ss。
Random.time()
// => "00:14:47"
Random.time('A HH:mm:ss')
// => "PM 20:47:37"
Random.time('a HH:mm:ss')
// => "pm 17:40:00"
Random.time('HH:mm:ss')
// => "03:57:53"
Random.time('H:m:s')
// => "3:5:13"
3.2.3、datetime()日期时间
返回一个随机的日期和时间字符串。
Random.datetime( format? )
format:可选。指示生成的日期和时间字符串的格式。默认值为 yyyy-MM-dd HH:mm:ss。
Random.datetime()
// => "1977-11-17 03:50:15"
Random.datetime('yyyy-MM-dd A HH:mm:ss')
// => "1976-04-24 AM 03:48:25"
Random.datetime('yy-MM-dd a HH:mm:ss')
// => "73-01-18 pm 22:12:32"
Random.datetime('y-MM-dd HH:mm:ss')
// => "79-06-24 04:45:16"
Random.datetime('y-M-d H:m:s')
// => "02-4-23 2:49:40"
3.2.4、now()当前日期时间
返回当前的日期和时间字符串。
Random.now( unit?, format? )
unit:可选。表示时间单位,用于对当前日期和时间进行格式化。可选值有:year、month、week、day、hour、minute、second、week,默认不会格式化。format:可选。指示生成的日期和时间字符串的格式。默认值为 yyyy-MM-dd HH:mm:ss。可选的占位符参考自 Ext.Date,请参见 Random.date(format)。
Random.now()
// => "2014-04-29 20:08:38 "
Random.now('day', 'yyyy-MM-dd HH:mm:ss SS')
// => "2014-04-29 00:00:00 000"
Random.now('day')
// => "2014-04-29 00:00:00 "
Random.now('yyyy-MM-dd HH:mm:ss SS')
// => "2014-04-29 20:08:38 157"
Random.now('year')
// => "2014-01-01 00:00:00"
Random.now('month')
// => "2014-04-01 00:00:00"
Random.now('week')
// => "2014-04-27 00:00:00"
Random.now('day')
// => "2014-04-29 00:00:00"
Random.now('hour')
// => "2014-04-29 20:00:00"
Random.now('minute')
// => "2014-04-29 20:08:00"
Random.now('second')
// => "2014-04-29 20:08:38"
3.3、Image(图像)
3.3.1、image()图片地址
生成一个随机的图片地址。
Random.image( size?, background?, foreground?, format?, text? )
size:可选。指示图片的宽高,格式为 ‘宽x高’。默认从下面的数组中随机读取一个:
[
'300x250', '250x250', '240x400', '336x280',
'180x150', '720x300', '468x60', '234x60',
'88x31', '120x90', '120x60', '120x240',
'125x125', '728x90', '160x600', '120x600',
'300x600'
]
background:可选。指示图片的背景色。默认值为 ‘#000000’。foreground:可选。指示图片的前景色(文字)。默认值为 ‘#FFFFFF’。format:可选。指示图片的格式。默认值为 ‘png’,可选值包括:‘png’、‘gif’、‘jpg’。text:可选。指示图片上的文字。默认值为参数 size。
Random.image()
// => "http://dummyimage.com/125x125"
Random.image('200x100')
// => "http://dummyimage.com/200x100"
Random.image('200x100', '#fb0a2a')
// => "http://dummyimage.com/200x100/fb0a2a"
Random.image('200x100', '#02adea', 'Hello')
// => "http://dummyimage.com/200x100/02adea&text=Hello"
Random.image('200x100', '#00405d', '#FFF', 'Mock.js')
// => "http://dummyimage.com/200x100/00405d/FFF&text=Mock.js"
Random.image('200x100', '#ffcc33', '#FFF', 'png', '!')
// => "http://dummyimage.com/200x100/ffcc33/FFF.png&text=!"
3.3.2、dataImage()Base64图片
生成一段随机的 Base64 图片编码。
Random.dataImage( size?, text? )
size:可选。指示图片的宽高,格式为 ‘宽x高’。text:可选。指示图片上的文字。默认值为参数 size。
Random.dataImage()
Random.dataImage('200x100')
3.4、Color(颜色)
3.4.1、color()格式为 ‘#RRGGBB’
随机生成一个有吸引力的颜色,格式为 ‘#RRGGBB’
Random.color()
Random.color()
// => "#3538B2"
3.4.2、hex()格式为 ‘#RRGGBB’
随机生成一个有吸引力的颜色,格式为 ‘#RRGGBB’。
Random.hex()
Random.hex()
// => "#3538B2"
3.4.3、rgb()格式为 ‘rgb(r, g, b)’
随机生成一个有吸引力的颜色,格式为 ‘rgb(r, g, b)’。
Random.rgb()
Random.rgb()
// => "rgb(242, 198, 121)"
3.4.4、rgba()格式为 ‘rgba(r, g, b, a)’
随机生成一个有吸引力的颜色,格式为 ‘rgba(r, g, b, a)’。
Random.rgba()
Random.rgba()
// => "rgba(242, 198, 121, 0.13)"
3.4.5、hsl()格式为 ‘hsl(h, s, l)’
随机生成一个有吸引力的颜色,格式为 ‘hsl(h, s, l)’。
Random.hsl()
Random.hsl()
// => "hsl(345, 82, 71)"
3.5、Text(文本)
3.5.1、paragraph()英文文本
随机生成一段文本。
Random.paragraph( min?, max? )
len:可选。指示文本中句子的个数。默认值为 3 到 7 之间的随机数。min:可选。指示文本中句子的最小个数。默认值为 3。max:可选。指示文本中句子的最大个数。默认值为 7。
Random.paragraph()
Random.paragraph(2)
Random.paragraph(1, 3)
3.5.2、cparagraph()中文文本
随机生成一段中文文本。
Random.cparagraph( min?, max? )
- 参数与paragraph()相同
Random.cparagraph()
Random.cparagraph(2)
Random.cparagraph(1, 3)
3.5.3、sentence()英文句子
随机生成一个句子,第一个单词的首字母大写。
Random.sentence( min?, max? )
len:可选。指示句子中单词的个数。默认值为 12 到 18 之间的随机数。min:可选。指示句子中单词的最小个数。默认值为 12。max:可选。指示句子中单词的最大个数。默认值为 18。
Random.sentence()
// => "Jovasojt qopupwh plciewh dryir zsqsvlkga yeam."
Random.sentence(5)
// => "Fwlymyyw htccsrgdk rgemfpyt cffydvvpc ycgvno."
Random.sentence(3, 5)
// => "Mgl qhrprwkhb etvwfbixm jbqmg."
3.5.4、csentence()中文句子
随机生成一段中文文本。
Random.csentence( min?, max? )
- 参数与sentence()相同
Random.csentence()
// => "第任人九同段形位第律认得。"
Random.csentence(2)
// => "维总。"
Random.csentence(1, 3)
// => "厂存。"
3.5.5、word()英文单词
随机生成一个单词。
Random.word( min?, max? )
len:可选。指示单词中字符的个数。默认值为 3 到 10 之间的随机数。min:可选。指示单词中字符的最小个数。默认值为 3。max:可选。指示单词中字符的最大个数。默认值为 10。
Random.word()
// => "fxpocl"
Random.word(5)
// => "xfqjb"
Random.word(3, 5)
// => "kemh"
3.5.6、cword()中文汉字
随机生成一个汉字。
Random.cword( pool?, min?, max? )
pool:可选。汉字字符串。表示汉字字符池,将从中选择一个汉字字符返回。min:可选。随机汉字字符串的最小长度。默认值为 1。max:可选。随机汉字字符串的最大长度。默认值为 1。
Random.cword()
// => "干"
Random.cword('零一二三四五六七八九十')
// => "六"
Random.cword(3)
// => "别金提"
Random.cword('零一二三四五六七八九十', 3)
// => ""七七七""
Random.cword(5, 7)
// => "设过证全争听"
Random.cword('零一二三四五六七八九十', 5, 7)
// => "九七七零四"
3.5.7、title()英文标题
随机生成一句标题,其中每个单词的首字母大写。
Random.title( min?, max? )
len:可选。指示单词中字符的个数。默认值为 3 到 7 之间的随机数。min:可选。指示单词中字符的最小个数。默认值为 3。max:可选。指示单词中字符的最大个数。默认值为 7。
Random.title()
// => "Rduqzr Muwlmmlg Siekwvo Ktn Nkl Orn"
Random.title(5)
// => "Ahknzf Btpehy Xmpc Gonehbnsm Mecfec"
Random.title(3, 5)
// => "Hvjexiondr Pyickubll Owlorjvzys Xfnfwbfk"
3.5.8、ctitle()中文标题
随机生成一句中文标题。
Random.ctitle( min?, max? )
- 参数与title()相同
Random.ctitle()
// => "证构动必作"
Random.ctitle(5)
// => "应青次影育"
Random.ctitle(3, 5)
// => "出料阶相"
3.6、Name(姓名)
3.6.1、first()英文名
随机生成一个常见的英文名。
Random.first()
Random.first()
// => "Nancy"
3.6.2、last()英文姓
随机生成一个常见的英文姓。
Random.last()
Random.last()
// => "Martinez"
3.6.3、name()英文姓名
随机生成一个常见的英文姓名。
Random.name( middle? )
middle:可选。布尔值。指示是否生成中间名。
Random.name()
// => "Larry Wilson"
Random.name(true)
// => "Helen Carol Martinez"
3.6.4、cfirst()中文名
随机生成一个常见的中文名。
Random.cfirst()
Random.cfirst()
// => "曹"
3.6.5、clast()中文姓
随机生成一个常见的中文姓。
Random.clast()
Random.clast()
// => "艳"
3.6.6、cname()中文姓名
随机生成一个常见的中文姓名。
Random.cname()
Random.cname()
// => "袁军"
3.7、Web(网络)
3.7.1、url()url整体
随机生成一个 URL。
Random.url( protocol?, host? )
protocol:指定 URL 协议。例如 http。host:指定 URL 域名和端口号。例如 nuysoft.com。
Random.url()
// => "mid://axmg.bg/bhyq"
Random.url('http')
// => "http://splap.yu/qxzkyoubp"
Random.url('http', 'nuysoft.com')
// => "http://nuysoft.com/ewacecjhe"
3.7.2、protocol()url协议
随机生成一个 URL 协议。返回以下值之’http’、‘ftp’、‘gopher’、‘mailto’、‘mid’、‘cid’、‘news’、‘nntp’、‘prospero’、‘telnet’、‘rlogin’、‘tn3270’、‘wais’。
Random.protocol()
// => "ftp"
3.7.3、domain()域名
随机生成一个域名。
Random.domain()
Random.domain()
// => "kozfnb.org"
3.7.4、tld()顶级域名
随机生成一个顶级域名(Top Level Domain)。
Random.tld()
Random.tld()
// => "net"
3.7.5、email()邮件地址
随机生成一个邮件地址。
Random.email( domain? )
domain:指定邮件地址的域名。例如 nuysoft.com。
Random.email()
// => "x.davis@jackson.edu"
Random.email('nuysoft.com')
// => "h.pqpneix@nuysoft.com"
3.7.6、ip()IP地址
随机生成一个 IP 地址。
Random.ip()
Random.ip()
// => "34.206.109.169"
3.8、Address(位置与邮政编码)
3.8.1、region()中国大区
随机生成一个(中国)大区。
Random.region()
Random.region()
// => "华北"
3.8.2、province()中国省份
随机生成一个(中国)省(或直辖市、自治区、特别行政区)。
Random.province()
Random.province()
// => "黑龙江省"
3.8.3、city()中国城市
随机生成一个(中国)市。
Random.city( prefix? )
prefix:可选。布尔值。指示是否生成所属的省。
Random.city()
// => "唐山市"
Random.city(true)
// => "福建省 漳州市"
3.8.4、county()中国县城
随机生成一个(中国)县。
Random.county( prefix? )
prefix:可选。布尔值。指示是否生成所属的省、市。
Random.county()
// => "上杭县"
Random.county(true)
// => "甘肃省 白银市 会宁县"
3.8.5、zip()邮政编码
随机生成一个邮政编码(六位数字)。
Random.zip()
Random.zip()
// => "908812"
3.9、Helper(工具)
3.9.1、capitalize()首字母大写
把字符串的第一个字母转换为大写。
Random.capitalize( word )
Random.capitalize('hello')
// => "Hello"
3.9.2、upper()字符串大写
把字符串转换为大写。
Random.upper( str )
Random.upper('hello')
// => "HELLO"
3.9.3、lower()字符串小写
把字符串转换为小写。
Random.lower( str )
Random.upper('hello')
// => "HELLO"
3.9.4、pick()数组中选取元素
从数组中随机选取一个元素,并返回。
Random.pick( arr )
Random.pick(['a', 'e', 'i', 'o', 'u'])
// => "o"
3.9.5、shuffle()乱序数组
打乱数组中元素的顺序,并返回。
Random.shuffle( arr )
Random.shuffle(['a', 'e', 'i', 'o', 'u'])
// => ["o", "u", "e", "i", "a"]
3.10、Miscellaneous(ID相关)
3.10.1、guid()GUID
随机生成一个 GUID。
Random.guid()
Random.guid()
// => "662C63B4-FD43-66F4-3328-C54E3FF0D56E"
3.10.2、id()身份证
随机生成一个 18 位身份证。
Random.id()
Random.id()
// => "420000200710091854"
3.10.3、increment()自增整数
生成一个全局的自增整数。
Random.increment( step? )
step:可选。整数自增的步长。默认值为 1。
Random.increment()
// => 1
Random.increment(100)
// => 101
Random.increment(1000)
// => 1101
3.11、extend(扩展)
Mock.Random 中的方法与数据模板的 @占位符 一一对应,在需要时还可以为 Mock.Random 扩展方法,然后在数据模板中通过 @扩展方法 引用。例如:
Random.extend({
constellation: function(date) {
var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']
return this.pick(constellations)
}
})
Random.constellation()
// => "水瓶座"
Mock.mock('@CONSTELLATION')
// => "天蝎座"
Mock.mock({
constellation: '@CONSTELLATION'
})
// => { constellation: "射手座" }
4、Mock.valid()
校验真实数据 data 是否与数据模板 template 匹配。
Mock.valid( template, data )
template:必选。表示数据模板,可以是对象或字符串。例如 { ‘list|1-10’:[{}] }、‘@EMAIL’。data:必选。表示真实数据。
var template = {
name: 'value1'
}
var data = {
name: 'value2'
}
Mock.valid(template, data)
// =>
[
{
path: [ 'ROOT', 'name' ],
type: 'value',
actual: 'value2',
expected: 'value1',
action: 'is equal to',
message: "[VALUE] Expect ROOT.name'value is equal to value1, but is value2"
}
]
5、Mock.toJSONSchema()
把 Mock.js 风格的数据模板 template 转换成 JSON Schema。
Mock.toJSONSchema( template )
template:必选。表示数据模板,可以是对象或字符串。例如 { ‘list|1-10’:[{}] }、‘@EMAIL’。
var template = {
'key|1-10': '★'
}
Mock.toJSONSchema(template)
// =>
{
"name": undefined,
"path": [
"ROOT"
],
"type": "object",
"template": {
"key|1-10": "★"
},
"rule": {},
"properties": [{
"name": "key",
"path": [
"ROOT",
"key"
],
"type": "string",
"template": "★",
"rule": {
"parameters": ["key|1-10", "key", null, "1-10", null],
"range": ["1-10", "1", "10"],
"min": 1,
"max": 10,
"count": 3,
"decimal": undefined,
"dmin": undefined,
"dmax": undefined,
"dcount": undefined
}
}]
}
var template = {
'list|1-10': [{}]
}
Mock.toJSONSchema(template)
// =>
{
"name": undefined,
"path": ["ROOT"],
"type": "object",
"template": {
"list|1-10": [{}]
},
"rule": {},
"properties": [{
"name": "list",
"path": ["ROOT", "list"],
"type": "array",
"template": [{}],
"rule": {
"parameters": ["list|1-10", "list", null, "1-10", null],
"range": ["1-10", "1", "10"],
"min": 1,
"max": 10,
"count": 6,
"decimal": undefined,
"dmin": undefined,
"dmax": undefined,
"dcount": undefined
},
"items": [{
"name": 0,
"path": ["data", "list", 0],
"type": "object",
"template": {},
"rule": {},
"properties": []
}]
}]
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)