高级响应配置
Mock服务支持使用以下内置函数或变量引用生成动态响应。
引用变量
通过"{xxx}"设置引用变量,可以引用接口路径中的参数(路径变量),或是从请求参数中提取的变量。
如下图所示,"{device_id}"表示引用接口路径中的{device_id}变量值作为id的返回值。"{ uuid }"表示引用了请求中#saveAs("uuid")提取的uuid变量值。
延迟响应
通过#sleep(x)设置延迟响应。
如下图所示,#sleep(2)表示暂停2秒,即2秒之后再执行下一个指令。#write("xxx")表示返回xxx信息。
生成时间戳
通过#dateTime("yyyy-MM-dd'T'HH:mm:ss.SSSZ")设置按指定格式(Java SimpleDateFormat支持的格式)返回当前时间。
例如:响应体配置为{…"Now":#datetime("yyyy-MM-dd HH:mm:ss.SSS")…},消息匹配成功后,返回:{…"Now":"2020-06-14 07:18:43.779"…}。
递增函数
通过#seq("xxxx")设置获取递增数值变量。函数中仅有一个参数,表示递增数值变量,变量的起始值为0,增量为1。
每次消息匹配成功后,返回数值会增1。例如下图所示,配置规则为{…"id":#seq("number")…},首次消息匹配成功后返回{…"id":"0"…};第n次消息匹配成功后返回{…"id":"n-1"…}。
响应体中的其它参数值可以引用该变量,例如下图所示的规则{…"uuid":"{number}"…}。
上图中id和uuid的返回值有可能不一样,因为json是无序的,变量引用可能先执行,也可能后于#seq函数执行。
按格式递增
通过#seqf("haha_%s","id")可实现在格式化文本中设置递增数值变量。函数中有两个参数,第一个参数是格式化文本,第二个参数表示递增数值变量,变量的增量为1。
例如:配置规则为{…"str":#seqf("haha_%s","id")…},首次消息匹配成功后返回:{…"str":"haha_0"…};第n次消息匹配成功后返回:{…"str":"haha_n-1"…}。
字符串子串
通过#substring("xxx",x,x)获取字符串的子串。函数中有三个参数:第一个参数是指定字符串,可以是双引号引出的一个字符串,也可以是一个局部变量(双引号+花括号引出);第二个参数是起始字符的索引值(含);第三个参数是终止字符的索引值(不含)。
例如:假定id是一个局部变量,值为helloworld。配置规则为{…"result1":#substring("{id}",2,7),"result2":#substring("devops",0,3)…},消息匹配成功后返回{…"result1":"llowo","result2":"dev"…}。
拼接字符串
通过#append("xxx","xxx")实现字符串顺序拼接。函数有至少两个参数,每个参数都是一个字符串,该字符串可以是一个由双引号引出的字符串,也可以是一个局部变量(双引号+花括号引出),还可以是一个substring函数调用。
例如:假定id是一个局部变量,值为helloworld,name是另一个局部变量,值为zhaoyong1985。配置规则为{…"result":#append(#substring("{id}",2,5), "devops", "{name}")…},消息匹配成功后返回{…"result":"llodevopszhaoyong1985"…}。