1. Overview
#
1.1 Plugin Name- Mock Plugin
#
1.2 Appropriate Scenario- Specify the status code and response body for the request to facilitate testing.
#
1.3 Plugin functionalitySet the status code and body of the request.
Support configuration
${}
placeholder to automatically generate data.Note: In order to support a more flexible data generation method, the mock plug-in supports users to use SpEL expressions to generate mock data. Using SpEL expressions may lead to the risk of executing malicious scripts or applying destructive programs. We recommend that you be extra careful when using them, use them in a safe environment as much as possible, such as an intranet environment, and follow security best practices.
#
1.4 Plugin Code- Core module
shenyu-plugin-mock
- Core class
org.apache.shenyu.plugin.mock.MockPlugin
#
1.5 Added since which shenyu version- 2.5.0
2. How to use plugin
#
2.1 Import pom- import maven config in shenyu-bootstrap project's
pom.xml
file.
<dependency> <groupId>org.apache.shenyu</groupId> <artifactId>shenyu-spring-boot-starter-plugin-mock</artifactId> <version>${project.version}</version></dependency>
#
2.2 Enable plugin- In
shenyu-admin
--> BasicConfig --> Plugin -->mock
set Status enable.
#
2.3 Config plugin- Selector and rule config, please refer: Selector and rule config.
- shenyu-admin mock plugin configuration, supports configuring httpStatusCode and responseContent
- httpStatusCode:the status code of the request.
- responseContent:the response body of the request,support configuring
${}
placeholders to generate random data.
${}
supported syntax#
2.4 ${int|min-max}
- Description: Generate random integers from
min
tomax
, inclusive ofmin
andmax
. - Example:
${int|10-20}
${double|min-max|format}
- Description: Generate random floating point numbers from
min
tomax
, formatted according toformat
. - Example:
${double|10-20}
,${double|10-20.5|%.2f}
${email}
- Description: Generate random email addresses.
${phone}
- Description: Generate random 13-digit mobile number.
${zh|min-max}
- Description: Generate random Chinese strings of length
min
tomax
. - Example:
${zh|10-20}
${en|min-max}
- Description: Generate random English strings of length
min
tomax
. - Example:
${en|10-20}
${bool}
- Description: Generate a random
boolean
value i.e.true
orfalse
.
${list|[arg1,arg2...]}
- Description: Randomly returns any value in a list as a string.
- Example:
${list|[gril,boy]}
will returnboy
orgirl
${current|format}
- Description: Returns the current time and uses
format
to format,format
can be default, the default isYYYY-MM-dd HH:mm:ss
. - Example:
${current}
,${current|YYYY-MM-dd}
${array|item|length}
- Description: According to the
item
format definition, an array of lengthlength
can be generated. All the above data generation rules can be nested initem
, and the result will be automatically added with[]
. - Example:
${array|{"name":"test"}|3}
result is[{"name":"test"},{"name":"test"},{"name":"test"}]
,${array|{"age":${int|18-65}}|3}
.
${expression|expression}
Spel
expressions are currently supported with built-in functions and arguments, which fully replace the old ${} syntax
${expression|#int(min,max)}
Description: Generate random integers from
min
tomax
, inclusive ofmin
andmax
.Example:
${expression|#int(1,2)}
${expression|#double(min,max)}
- Description: Generate random floating point numbers from
min
tomax
, formatted according toformat
. - Example:
${expression|#double(10.5,12.0)}
,${expression|#double(10.5,12.0,'¥%.2f')}
- Description: Generate random floating point numbers from
${expression|#email()}
- Description: Generate random email addresses.
${expression|#phone()}
- Description: Generate random 13-digit mobile number.
${expression|zh(min,max)}
- Description: Generate random Chinese strings of length
min
tomax
. - Example:
${expression|#zh(1,10)}
- Description: Generate random Chinese strings of length
${expression|#bool()}
- Description: Generate a random
boolean
value i.e.true
orfalse
.
- Description: Generate a random
${expression|#oneOf(arg1,arg2...)}
- Description: Randomly returns any value in a list.
- Example:
${expression|#oneOf('shenyu','number',1)}
will return'shenyu'
or'number'
or1
${expression|current()}
- Description: Returns the current time and uses
format
to format,format
can be default, the default isYYYY-MM-dd HH:mm:ss
. - Example:
${expression|#current()}
,${expression|#current('YYYY-MM-dd')}
- Description: Returns the current time and uses
${expression|#array(item,length)}
Description: According to the
item
format definition, an array of lengthlength
can be generated.Example:
expression|#array('shenyu',3)
would generate["shenyu","shenyu","shenyu"]
.You can use it nested like
${expression|#array(#bool(),2)}
or${expression|#array(#array('shenyu',2),2)}
${expression|#req}
- Description: Req is built-in request parameters ,which can generate response data based on request content
- Example:
${expression|#req.method}
、${expression|#req.queries['query_name']}
、${req.queries.query_name}
、${expression|#req.uri}
。jsonPath
is used when the request body is json . For example ,when the request body is{"name":"shenyu"}
,${expression|#req.json.name}
would return "shenyu"
${expression|spel}
- Description:Use Spel expressions directly to generate data
- Example:
${expression|T(java.time.LocalDate).now()}
、${expression|1==1}
It is recommended to use the new '${}' syntax. The old syntax may be removed at an later date.
Function replaceable table:
old | new |
---|---|
${int|min-max} | ${expression|#int(min,max)} |
${double|min-max|format} | ${expression|#double(min,max)} |
${email} | ${expression|#email()} |
${phone} | ${expression|#phone()} |
${zh|min-max} | ${expression|#zh(min,max)} |
${en|min-max} | ${expression|#en(min,max)} |
${list|[arg1,arg2...]} | ${expression|#oneOf(arg1,agr2...)} |
${current|format} | ${expression|#current(format)} |
${bool} | ${expression|#bool()} |
${array|item|length} | ${expression#array(item,length)} |
You do not need to use add ""
on both sides of ${}
, the generated content will be prefixed and suffixed according to the definition of generator