更新时间:2024-04-10 GMT+08:00
分享

Mock语法说明

APIMock语法完全兼容Mock.js,并扩展了一些Mock.js没有的语法(uuid、正则表达式),Mock语法详见表1

如现有Mock语法无法满足需求,建议使用正则表达式“@regexp”来实现灵活定制,正则表达式基本能满足各种特殊场景的需求。

表1 Mock语法

类型

函数

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

@email()

"e.fsysqt@vjz.edu"

@email

@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”特殊字符需要加上“\”进行转义。
  • 参考文档:正则表达式

相关文档