1. 基本的json-schema mock
首先,我们建立一个简单的json-schema,如下图所示:
该schema定义了一个返回结构,包括两个字段,data为string类型,code为integer类型。
点击“预览”,可以看到类似下面的mock数据:
{
"data": "non id",
"code": -12100200
}
这就是最基本的mock, 即根据数据类型返回随机串。
2. 设置默认值
将1中图示的字段后的mock部分填入字串,即可为字段设置默认值。
如上图所示,我们将data的默认值设为this is data; 将code的默认值设为1。在这种情况下,接口的返回值将始终为:
{
"data": "this is data",
"code": 1
}
注意,如果默认值与所设字段类型不匹配,相应字段的接口返回值将为null。
比如上例中,code为integer类型,若将默认值设为"this is number"。接口返回值将为:
{
"data": "this is data",
"code": null
}
3. 基于mockjs占位符的mock
3.1 什么是占位符
这个概念来源于mockjs, 可以将其简单理解为用于生成特定字串的函数, 具体可参见mockjs官方定义。不过此处并不支持mockjs中所有占位符功能,大概只相当于Mock.Random部分。
3.2 使用占位符
点击数据字段后的mock框,可以看到支持的占位符列表。如下图所示:
我们将data选为@ip, 点击预览可以看到接口返回值如下:
{
"data": "223.111.85.247",
"code": 1
}
data将是一个满足ip规则的串。
3.3 常用占位符功能详述
@integer(min?, max?)
返回一个随机的整数。
- min:可选参数,整数最小值。
- max:可选参数,整数最大值。
例:
@integer
//--> 1686805249110932
@integer(10,100)
//--> 26
@float( min?, max?, dmin?, dmax? )
返回一个随机浮点数。
- min:可选,整数部分最小值。
- max:可选,整数部分最大值。
- dmin:可选,小数部分最小长度。
- dmax:可选,小数部分最大长度。
例:
@float
//--> 1924364975802932.5
@float(60, 100, 2, 6)
//--> 68.1258
@string
返回随机字串,有如下几种使用方式:
@string
@string(length)
@string(pool, length)
@string(min, max)
@string(pool, min, max)
- length: 字串长度
- min: 字串最短长度
- max: 字串最大长度
- pool:表示字符池。如果传入 ‘lower’、‘upper’、‘number’或’symbol’,表示从内置的字符池从选取。对应关系如下:
lower: "abcdefghijklmnopqrstuvwxyz",
upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
number: "0123456789",
symbol: "!@#$%^&*()[]"
例:
@string(6)
//--> kV(qj4
@string('upper',2,6)
//--> NJKU
@string('123abc!@#', 2,6)
//--> #ab!21
@url(protocol?, host?)
随机生成一个 URL。
- protocol:指定 URL 协议。例如 http。
- host:指定URL域名和端口号。
例:
@url('https', '123.sogou.com')
//--> https://123.sogou.com/ccdkttr
@ip
随机生成一个IP地址。
@timestamp
返回当前unix时间戳
@datetime(format?)
返回一个随机的日期和时间字符串。
- format:生成的日期和时间字符串的格式。默认值为yyyy-MM-dd HH:mm:ss。
例:
@datetime()
//--> 1977-11-17 03:50:15
@datetime('y-M-d H:m:s')
//--> 02-4-23 2:49:40
@pick(arr)
从数组中随机选取一个元素,并返回。
例:
@pick(['this', 'is', 'picker', 'test'])
//--> picker
3.4 更多
更多占位符使用可参见下述文档
https://github.com/nuysoft/Mock/wiki/Mock.Random
http://mockjs.com/examples.html#DPD