Mock语法说明
APIMock语法完全兼容Mock.js,并扩展了一些Mock.js没有的语法(uuid、正则表达式),Mock语法详见表1。
如现有Mock语法无法满足需求,建议使用正则表达式“@regexp”来实现灵活定制,正则表达式基本能满足各种特殊场景的需求。
类型 |
函数 |
---|---|
Basic |
boolean、natural、integer、float、character、string、range、date、time、datetime、now、timestamp。 |
Name |
first、last、name、cfirst、clast、cname。 |
Web |
url、domain、email、ip、tld。 |
Address |
region、province、city、county。 |
Text |
paragraph、sentence、word、title、cparagraph、csentence、cword、ctitle。 |
Color |
color。 |
Other |
guid, id,uuid。 |
Helper |
capitalize、upper、lower、pick、shuffle。 |
Reg |
regex。 |
基本写法
- 支持json。函数需要写在vaule值位置,以“@”作为起始符。
- 支持xml。(本版本不支持,下个版本支持。)
- 不支持单独@函数。
- 只支持在响应体内使用mock.js。
实例如下:
输入 |
示例结果 |
---|---|
{ "id":@uuid(), "flag":@boolean(1, 9, true), "name":@string("teststart",3,7), "createtime":@now() } |
{ "id":d29925a288404207b60161fdaed05d55 "flag":false, "name":"stseee", "createtime":2022-08-11 15:16:20 } |
基础类型
分类 |
规则 |
示例 |
示例结果 |
---|---|---|---|
布尔值 |
@boolean |
@boolean() |
false,true |
@boolean(min,max,current) |
@boolean(1,9,true) |
false,true |
|
自然数 |
@natural |
@natural() |
1350447356 |
@natural(min) |
@natural(10000) |
819989031 |
|
@natural(min,max) |
@natural(60,100) |
63 |
|
整数 |
@integer |
@integer |
1128800169 |
@integer(min) |
@integer(10000) |
29427959 |
|
@integer(min,max) |
@integer(60,100) |
94 |
|
浮点数 |
@float |
@float() |
13425418.3 |
@float(min) |
@float(0) |
1800545158.8 |
|
@float(min,max) |
@float(60,100) |
98.63203 |
|
@float(min,max,dmin) |
@float(60,100,3) |
69.882191 |
|
@float(min,max,dmin,dmax) |
@float(60,100,3,5) |
80.14955 |
|
单字符 |
@character |
@character() |
"7" |
@character(pool) |
@character("lower") |
"x" |
|
@character("upper") |
"R" |
||
@character("number") |
"6" |
||
@character("symbol") |
"#" |
||
@character("aeiou") |
"i" |
||
字符串 |
@string |
@string() |
"%#Vwj" |
@string(length) |
@string(5) |
"^16)1" |
|
@string(pool,length) |
@string("lower",5) |
"zrcmq" |
|
@string("upper",5) |
"PFTFP" |
||
@string("number",5) |
"96480" |
||
@string("symbol",5) |
"#&!!(" |
||
@string("aeiou",5) |
"uoauu" |
||
@string(min,max) |
@string(7,10) |
"0B(6!)5[)" |
|
@string(pool,min,max) |
@string("lower",1,3) |
"zz" |
|
@string("upper",1,3) |
"OZJ" |
||
@string("number",1,3) |
"61" |
||
@string("symbol",1,3) |
"@%" |
||
@string("aeiou",1,3) |
"au" |
||
范围 |
@range(stop) |
@range(10) |
[0,1,2,3,4,5,6,7,8,9] |
@range(start,stop) |
@range(3,7) |
[3,4,5,6] |
|
@range(start,stop,step) |
@range(1,10,3) |
[1,4,7] |
日期/时间
分类 |
规则 |
示例 |
示例结果 |
---|---|---|---|
日期 |
@date |
@date() |
"2015-05-09" |
@date(format) |
@date("yyyy-MM-dd") |
"2012-11-08" |
|
@date("yy-MM-dd") |
"10-06-12" |
||
@date("yyyy yy y MM M dd d") |
"1971 71 71 05 5 02 2" |
||
时间 |
@datetime |
@datetime() |
"1996-15-11 01:18:47" |
@datetime(format) |
@datetime("yyyy-MM-dd A HH:mm:ss") |
"1978-01-10 AM 03:59:54" |
|
@datetime("yy-MM-dd a HH:mm:ss") |
"98-09-03 下午 19:32:44" |
||
当前时间 |
@now |
@now() |
"2022-11-30 12:46:12" |
@now(unit) |
@now("year") |
"2022-01-01 00:00:00" |
|
@now("month") |
"2022-08-01 00:00:00" |
||
@now("week") |
"2022-08-09 00:00:00" |
||
@now("day") |
"2022-08-11 00:00:00" |
||
@now("hour") |
"2022-08-11 15:00:00" |
||
@now("minute") |
"2022-08-11 15:24:00" |
||
@now("second") |
"2022-08-11 15:24:02" |
||
@now(format) |
@now("yyyy-MM-dd HH:mm:ss SS") |
"2022-08-11 15:24:02 761" |
|
@now(unit,format) |
@now("day", "yyyy-MM-dd HH:mm:ss SS") |
"2022-08-11 00:00:00 000" |
|
时间戳 |
@timestamp(format) |
@timestamp("s") |
"1662605353" |
@timestamp("ms") |
"1662605408838" |
Web 相关
规则 |
示例 |
示例结果 |
---|---|---|
@url |
@url() |
"http://ihum.md/xmicdyn" |
@url(protocol) |
@url("http") |
"http://ckpvjgyc.eg/jzatazzvm" |
@url(protocol,host) |
@url("http","test.com") |
"http://test.com/pmuway" |
@protocol |
@protocol() |
"ftp" |
@domain |
@domain() |
"ljmhm.gu" |
@domain(tld) |
@domain("com") |
"dtcboprfg.com" |
@tld |
@tld() |
"com" |
|
@email() |
"e.fsysqt@vjz.edu" |
|
@email("test.com") |
"e.fsysqt@test.com" |
@ip |
@ip() |
"xxx.xxx.xxx.xxx" |
其他
分类 |
规则 |
示例 |
示例结果 |
---|---|---|---|
GUID |
@guid |
@guid |
"7C50585F-8DF1-4E94-B016-EE13BD36248D" |
身份证ID |
@id |
@id |
"712424201708225548" |
uuid |
@uuid |
@uuid |
"d29925a288404207b60161fdaed05d55" |
Helper
分类 |
规则 |
示例 |
示例结果 |
---|---|---|---|
全大写 |
@upper(str) |
@upper("hello") |
"HELLO" |
全小写 |
@lower(str) |
@lower("HELLO") |
"hello" |
多选一 |
@pick(arr) |
@pick(["hello", "test", "test3"]) |
"hello" |
@pick([1, 5, 10, 60, 80]) |
10 |
||
@pick([1,"hello","中国",true,80]) |
true |
Name相关
分类 |
规则 |
示例 |
示例结果 |
---|---|---|---|
英文名 |
@first |
@first() |
"Michelle" |
英文姓 |
@last |
@last() |
"Williams" |
英文姓名 |
@name |
@name() |
"Michelle Williams" |
@name(middle) |
@name(true) |
"Karen Lisa Harris" |
|
@name(false) |
"Karen Harris" |
||
中文姓 |
@cfirst |
@cfirst() |
"张" |
中文名 |
@clast() |
@clast() |
"三" |
中文姓名 |
@cname |
@cname() |
"张三" |
Address相关
分类 |
规则 |
示例 |
示例结果 |
---|---|---|---|
区域 |
@region |
@region() |
"西北" |
省或直辖市、自治区、特别行政区 |
@province |
@province() |
"陕西省" |
市 |
@city |
@city() |
"西安市" |
@city(prefix) |
@city(true) |
"陕西省 西安市" |
|
@city(false) |
"西安市" |
||
县 |
@county |
@county() |
"蓝田县" |
@county(prefix) |
@county(true) |
"陕西省 西安市 蓝田县" |
|
@county(false) |
"蓝田县" |
||
邮政编码 |
@zip |
@zip() |
"710500" |
正则表达式
规则 |
示例 |
示例结果 |
---|---|---|
@regexp( regexp ) |
@regexp("[0-9]+") |
"36436" |
@regexp("[0-9]{3,5}") |
"343" |
|
@regexp("[a-z]+\\@gmail\\.com") |
"ifadt@gmail.com" |
支持类型 |
描述 |
---|---|
* |
匹配前一个表达式0次或多次,等价于{0,}。 |
. |
默认匹配除换行符之外的任何单个字符(用来生成乱码)。 |
+ |
匹配前面一个表达式1次或者多次,等价于{1,}。 |
? |
匹配前面一个表达式0次或者1次,等价于{0,1}。 |
x|y |
匹配'x'或者'y'。 |
{n} |
n是一个正整数,匹配前面一个字符刚好出现了n次。 |
{n,} |
n是一个正整数,匹配前面一个字符至少出现了n次。 |
{n,m} |
n和m都是整数,匹配前面的字符至少n次,最多m次。如果n或者m的值是0,该值被忽略。 |
[xyz] |
一个字符集合,匹配方括号中的任意字符。 |
@ |
与"."的功能类似,默认匹配除换行符之外的任何单个字符(生成乱码)。 |
\ |
将下一个字符标记为特殊字符、原义字符、向后引用或八进制转义符。例如: 'n'匹配字符'n','\n'匹配换行符,序列'\'匹配"",而'\('则匹配"("。 |
[ |
标记一个中括号表达式的开始。要匹配[,请使用[。 |
{ |
标记限定符表达式的开始。要匹配{,请使用{。 |
不支持类型 |
描述 |
---|---|
^ |
匹配输入的开始。 |
$ |
匹配输入的结束。 |
(x) |
匹配'x'并且记住匹配项,其中括号被称为捕获括号。 |
(?:x) |
匹配'x'但是不记住匹配项,其中括号被称为非捕获括号,能够定义与正则表达式运算符一起使用的子表达式。 |
x(?=y) |
匹配'x'仅仅当'x'后面跟着'y',这种叫做先行断言。 |
(?<=y)x |
匹配'x'仅当'x'前面是'y',这种叫做后行断言。 |
x(?!y) |
仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找。 |
(?<!y)x |
仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查找。 |
[^xyz] |
一个反向字符集,即匹配任何没有包含在方括号中的字符。 |
[\b] |
匹配一个退格(U+0008)。 |
\b |
匹配一个词的边界。 |
\B |
匹配一个非单词边界。 |
\cX |
当X处于A到Z之间的字符时,匹配字符串中的一个控制符。 |
\d |
匹配一个数字,等价于[0-9]。 |
\D |
匹配一个非数字字符,等价于0-9。 |
\f |
匹配一个换页符(U+000C)。 |
\n |
匹配一个换行符(U+000A)。 |
\r |
匹配一个回车符(U+000D)。 |
\s |
匹配一个空白字符,包括空格、制表符、换页符和换行符。 |
\S |
匹配一个非空白字符。 |
\t |
匹配一个水平制表符(U+0009)。 |
\v |
匹配一个垂直制表符(U+000B)。 |
\w |
匹配一个单字字符(字母、数字或者下划线),等价于[A-Za-z0-9_]。 |
\W |
匹配一个非单字字符,等价于[A-Za-z0-9_]。 |
\n |
在正则表达式中,返回最后的第n个子捕获匹配的子字符串(捕获的数目以左括号计数)。 |
\0 |
匹配NULL(U+0000)字符。不能在后面跟其它小数,因为\0是一个八进制转义序列。 |
\xhh |
匹配一个两位十六进制数(\x00-\xFF)表示的字符。 |
\uhhhh |
匹配一个四位十六进制数表示的UTF-16代码单元。 |
\u{hhhh}或\u{hhhhh} |
仅当设置了u标志时,匹配一个十六进制数表示的Unicode字符。 |
- “regexp”特殊字符需要加上“\”进行转义。
- 参考文档:正则表达式。