| <html lang="en" dir="ltr"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <meta name="generator" content="Docusaurus v2.0.0-beta.4"> |
| <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache ShenYu Blog RSS Feed"> |
| <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache ShenYu Blog Atom Feed"> |
| <link rel="search" type="application/opensearchdescription+xml" title="Apache ShenYu" href="/opensearch.xml"> |
| <link rel="alternate" type="application/rss+xml" href="/news/rss.xml" title="Apache ShenYu Blog RSS Feed"> |
| <link rel="alternate" type="application/atom+xml" href="/news/atom.xml" title="Apache ShenYu Blog Atom Feed"><title data-react-helmet="true">Mock Plugin | Apache ShenYu</title><meta data-react-helmet="true" property="og:url" content="https://shenyu.apache.org//docs/2.5.1/plugin-center/mock/mock-plugin"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="2.5.1"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-2.5.1"><meta data-react-helmet="true" property="og:title" content="Mock Plugin | Apache ShenYu"><meta data-react-helmet="true" name="description" content="mock plugin"><meta data-react-helmet="true" property="og:description" content="mock plugin"><meta data-react-helmet="true" name="keywords" content="mock"><link data-react-helmet="true" rel="shortcut icon" href="/img/favicon.svg"><link data-react-helmet="true" rel="canonical" href="https://shenyu.apache.org//docs/2.5.1/plugin-center/mock/mock-plugin"><link data-react-helmet="true" rel="alternate" href="https://shenyu.apache.org//docs/2.5.1/plugin-center/mock/mock-plugin" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://shenyu.apache.org//zh/docs/2.5.1/plugin-center/mock/mock-plugin" hreflang="zh"><link data-react-helmet="true" rel="alternate" href="https://shenyu.apache.org//docs/2.5.1/plugin-center/mock/mock-plugin" hreflang="x-default"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.cc2d0c98.css"> |
| <link rel="preload" href="/assets/js/runtime~main.19526316.js" as="script"> |
| <link rel="preload" href="/assets/js/main.0feaae07.js" as="script"> |
| <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> |
| <div><a href="#" class="skipToContent_OuoZ">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><img src="/img/logo.svg" alt="Apache ShenYu Logo" class="themedImage_TMUO themedImage--light_4Vu1 navbar__logo"><img src="/img/logo-light.svg" alt="Apache ShenYu Logo" class="themedImage_TMUO themedImage--dark_uzRr navbar__logo"></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/download">Download</a><a class="navbar__item navbar__link" href="/document">Docs</a><a class="navbar__item navbar__link" href="/community/contributor-guide">Community</a><a class="navbar__item navbar__link" href="/team">Team</a><a class="navbar__item navbar__link" href="/event">Event</a><a class="navbar__item navbar__link" href="/news">News</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/users">Users</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li></ul></div><a href="https://github.com/apache/shenyu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link"><span>GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" class="navbar__item navbar__link"><span><svg t="1631348384596" class="icon" viewBox="0 0 1024 1024" version="1.1" style="vertical-align:text-bottom;margin-right:5px" p-id="557" width="20" height="20"><path d="M547.797333 638.208l-104.405333-103.168 1.237333-1.28a720.170667 720.170667 0 0 0 152.490667-268.373333h120.448V183.082667h-287.744V100.906667H347.605333v82.218666H59.818667V265.386667h459.178666a648.234667 648.234667 0 0 1-130.304 219.946666 643.242667 643.242667 0 0 1-94.976-137.728H211.541333a722.048 722.048 0 0 0 122.453334 187.434667l-209.194667 206.378667 58.368 58.368 205.525333-205.525334 127.872 127.829334 31.232-83.84m231.424-208.426667h-82.218666l-184.96 493.312h82.218666l46.037334-123.306667h195.242666l46.464 123.306667h82.218667l-185.002667-493.312m-107.690666 287.744l66.56-178.005333 66.602666 178.005333z" fill="currentColor" p-id="558"></path></svg><span>English</span></span></a><ul class="dropdown__menu"><li><a href="/docs/2.5.1/plugin-center/mock/mock-plugin" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" style="text-transform:capitalize">English</a></li><li><a href="/zh/docs/2.5.1/plugin-center/mock/mock-plugin" target="_self" rel="noopener noreferrer" class="dropdown__link" style="text-transform:capitalize">简体中文</a></li></ul></div><div class="react-toggle toggle_2i4l react-toggle--disabled"><div class="react-toggle-track" role="button" tabindex="-1"><div class="react-toggle-track-check"><span class="toggle_iYfV">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_iYfV">🌞</span></div><div class="react-toggle-thumb"></div></div><input type="checkbox" class="react-toggle-screenreader-only" aria-label="Switch between dark and light mode"></div><div class="searchBox_Bc3W"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper docs-wrapper doc-page"><div class="docPage_lDyR"><button class="clean-btn backToTopButton_i9tI" type="button" title="Scroll to top"><svg viewBox="0 0 24 24" width="28"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" fill="currentColor"></path></svg></button><aside class="docSidebarContainer_0YBq"><div class="sidebar_a3j0"><nav class="menu thin-scrollbar menu_cyFh menuWithAnnouncementBar_+O1J"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/2.5.1/index">Overview</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Design</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Deployment</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Quick Start</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">User Guide</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#">Plugin Center</a><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Http Process</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Proxy</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Fault Tolerance</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Security</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Observability</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Common</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#" tabindex="0">Cache</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#" tabindex="0">Mock</a><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/2.5.1/plugin-center/mock/mock-plugin">Mock Plugin</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Developer</a></li></ul></nav></div></aside><main class="docMainContainer_r8cw"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_zHA2"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for Apache ShenYu <b>2.5.1</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/plugin-center/mock/mock-plugin">latest version</a></b> (2.7.0).</div></div><div class="docItemContainer_oiyr"><article><span class="badge badge--secondary">Version: 2.5.1</span><div class="tocCollapsible_aw-L tocMobile_Tx6Y"><button type="button" class="clean-btn tocCollapsibleButton_zr6a">On this page</button></div><div class="markdown"><header><h1 class="h1Heading_dC7a">1. Overview</h1></header><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="11-plugin-name"></a>1.1 Plugin Name<a class="hash-link" href="#11-plugin-name" title="Direct link to heading">#</a></h2><ul><li>Mock Plugin</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="12-appropriate-scenario"></a>1.2 Appropriate Scenario<a class="hash-link" href="#12-appropriate-scenario" title="Direct link to heading">#</a></h2><ul><li>Specify the status code and response body for the request to facilitate testing.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="13-plugin-functionality"></a>1.3 Plugin functionality<a class="hash-link" href="#13-plugin-functionality" title="Direct link to heading">#</a></h2><ul><li><p>Set the status code and body of the request.</p></li><li><p>Support configuration <code>${}</code> placeholder to automatically generate data.</p></li><li><p><strong>Note:</strong> 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.</p></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="14-plugin-code"></a>1.4 Plugin Code<a class="hash-link" href="#14-plugin-code" title="Direct link to heading">#</a></h2><ul><li>Core module <code>shenyu-plugin-mock</code></li><li>Core class <code>org.apache.shenyu.plugin.mock.MockPlugin</code></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="15-added-since-which-shenyu-version"></a>1.5 Added since which shenyu version<a class="hash-link" href="#15-added-since-which-shenyu-version" title="Direct link to heading">#</a></h2><ul><li>2.5.0</li></ul><header><h1 class="h1Heading_dC7a">2. How to use plugin</h1></header><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="21-import-pom"></a>2.1 Import pom<a class="hash-link" href="#21-import-pom" title="Direct link to heading">#</a></h2><ul><li>import maven config in shenyu-bootstrap project's <code>pom.xml</code> file.</li></ul><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI xml"><pre tabindex="0" class="prism-code language-xml codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain">org.apache.shenyu</span><span class="token tag punctuation" style="color:#393A34"></</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain">shenyu-spring-boot-starter-plugin-mock</span><span class="token tag punctuation" style="color:#393A34"></</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain">${project.version}</span><span class="token tag punctuation" style="color:#393A34"></</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">></span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34"></</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">></span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="22-enable-plugin"></a>2.2 Enable plugin<a class="hash-link" href="#22-enable-plugin" title="Direct link to heading">#</a></h2><ul><li>In <code>shenyu-admin</code> --> BasicConfig --> Plugin --> <code>mock</code> set Status enable.</li></ul><p><img src="/assets/images/enable-mock-plugin-en-4c1452eb346e287d11b94f8cdf4cbec7.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="23-config-plugin"></a>2.3 Config plugin<a class="hash-link" href="#23-config-plugin" title="Direct link to heading">#</a></h2><ul><li>Selector and rule config, please refer: <a href="/docs/2.5.1/user-guide/admin-usage/selector-and-rule">Selector and rule config</a>.</li><li>shenyu-admin mock plugin configuration, supports configuring httpStatusCode and responseContent<ul><li>httpStatusCode:the status code of the request.</li><li>responseContent:the response body of the request,support configuring <code>${}</code> placeholders to generate random data.</li></ul></li></ul><p><img src="/assets/images/mock-rule-configuration-en-f71ebf28e7338971afc9136819d32277.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="24--supported-syntax"></a>2.4 <code>${}</code> supported syntax<a class="hash-link" href="#24--supported-syntax" title="Direct link to heading">#</a></h2><p><strong><del><code>${int|min-max}</code></del></strong></p><ul><li><strong>Description:</strong> Generate random integers from <code>min</code> to <code>max</code>, inclusive of <code>min</code> and <code>max</code>.</li><li><strong>Example:</strong> <code>${int|10-20}</code></li></ul><p><strong><del><code>${double|min-max|format}</code></del></strong></p><ul><li><strong>Description:</strong> Generate random floating point numbers from <code>min</code> to <code>max</code>, formatted according to <code>format</code>.</li><li><strong>Example:</strong> <code>${double|10-20}</code> , <code>${double|10-20.5|%.2f}</code></li></ul><p><strong><del><code>${email}</code></del></strong></p><ul><li><strong>Description:</strong> Generate random email addresses.</li></ul><p><strong><del><code>${phone}</code></del></strong></p><ul><li><strong>Description:</strong> Generate random 13-digit mobile number.</li></ul><p><strong><del><code>${zh|min-max}</code></del></strong></p><ul><li><strong>Description:</strong> Generate random Chinese strings of length <code>min</code> to <code>max</code>.</li><li><strong>Example:</strong> <code>${zh|10-20}</code></li></ul><p><strong><del><code>${en|min-max}</code></del></strong></p><ul><li><strong>Description:</strong> Generate random English strings of length <code>min</code> to <code>max</code>.</li><li><strong>Example:</strong> <code>${en|10-20}</code></li></ul><p><strong><del><code>${bool}</code></del></strong></p><ul><li><strong>Description:</strong> Generate a random <code>boolean</code> value i.e. <code>true</code> or <code>false</code>.</li></ul><p><strong><del><code>${list|[arg1,arg2...]}</code></del></strong></p><ul><li><strong>Description:</strong> Randomly returns any value in a list as a string.</li><li><strong>Example:</strong> <code>${list|[gril,boy]}</code> will return <code>boy</code> or <code>girl</code></li></ul><p><strong><del><code>${current|format}</code></del></strong></p><ul><li><strong>Description:</strong> Returns the current time and uses <code>format</code> to format, <code>format</code> can be default, the default is <code>YYYY-MM-dd HH:mm:ss</code>.</li><li><strong>Example:</strong> <code>${current}</code>,<code>${current|YYYY-MM-dd}</code></li></ul><p><strong><del><code>${array|item|length}</code></del></strong></p><ul><li><strong>Description:</strong> According to the <code>item</code> format definition, an array of length <code>length</code> can be generated. All the above data generation rules can be nested in <code>item</code>, and the result will be automatically added with <code>[]</code>.</li><li><strong>Example:</strong> <code>${array|{"name":"test"}|3}</code> result is <code>[{"name":"test"},{"name":"test"},{"name":"test"}]</code>,<code>${array|{"age":${int|18-65}}|3}</code>.</li></ul><p><strong>${expression|expression}</strong></p><p><code>Spel</code> expressions are currently supported with built-in functions and arguments, which fully replace the old ${} syntax</p><ul><li><p><strong><code>${expression|#int(min,max)}</code></strong></p><ul><li><p><strong>Description:</strong> Generate random integers from <code>min</code> to <code>max</code>, inclusive of <code>min</code> and <code>max</code>.</p></li><li><p><strong>Example:</strong> <code>${expression|#int(1,2)}</code></p></li></ul></li><li><p><strong><code>${expression|#double(min,max)}</code></strong></p><ul><li><strong>Description:</strong> Generate random floating point numbers from <code>min</code> to <code>max</code>, formatted according to <code>format</code>.</li><li><strong>Example:</strong><code>${expression|#double(10.5,12.0)}</code>,<code>${expression|#double(10.5,12.0,'¥%.2f')}</code></li></ul></li><li><p><strong><code>${expression|#email()}</code></strong></p><ul><li><strong>Description:</strong> Generate random email addresses.</li></ul></li><li><p><strong><code>${expression|#phone()}</code></strong></p><ul><li><strong>Description:</strong> Generate random 13-digit mobile number.</li></ul></li><li><p><strong><code>${expression|zh(min,max)}</code></strong></p><ul><li><strong>Description:</strong> Generate random Chinese strings of length <code>min</code> to <code>max</code>.</li><li><strong>Example:</strong> <code>${expression|#zh(1,10)}</code></li></ul></li><li><p><strong><code>${expression|#bool()}</code></strong></p><ul><li><strong>Description:</strong> Generate a random <code>boolean</code> value i.e. <code>true</code> or <code>false</code>.</li></ul></li><li><p><strong><code>${expression|#oneOf(arg1,arg2...)}</code></strong></p><ul><li><strong>Description:</strong> Randomly returns any value in a list.</li><li><strong>Example:</strong> <code>${expression|#oneOf('shenyu','number',1)}</code> will return <code>'shenyu'</code> or <code>'number'</code>or<code>1</code></li></ul></li><li><p><strong><code>${expression|current()}</code></strong></p><ul><li><strong>Description:</strong> Returns the current time and uses <code>format</code> to format, <code>format</code> can be default, the default is <code>YYYY-MM-dd HH:mm:ss</code>.</li><li><strong>Example:</strong> <code>${expression|#current()}</code>,<code>${expression|#current('YYYY-MM-dd')}</code></li></ul></li><li><p><strong><code>${expression|#array(item,length)}</code></strong></p><ul><li><p><strong>Description:</strong> According to the <code>item</code> format definition, an array of length <code>length</code> can be generated. </p></li><li><p><strong>Example:</strong> <code>expression|#array('shenyu',3)</code> would generate <code>["shenyu","shenyu","shenyu"]</code>.</p><p>You can use it nested like<code>${expression|#array(#bool(),2)}</code>or<code>${expression|#array(#array('shenyu',2),2)}</code></p></li></ul></li><li><p><strong><code>${expression|#req}</code></strong></p><ul><li><strong>Description:</strong> Req is built-in request parameters ,which can generate response data based on request content</li><li><strong>Example:</strong><code>${expression|#req.method}</code>、<code>${expression|#req.queries['query_name']}</code>、<code>${req.queries.query_name}</code>、<code>${expression|#req.uri}</code>。<code>jsonPath</code> is used when the request body is json . For example ,when the request body is <code>{"name":"shenyu"}</code>,<code>${expression|#req.json.name}</code>would return "shenyu"</li></ul></li></ul><ul><li><p><strong><code>${expression|spel}</code></strong></p><ul><li><strong>Description</strong>:Use Spel expressions directly to generate data</li><li><strong>Example</strong>:<code>${expression|T(java.time.LocalDate).now()}</code>、<code>${expression|1==1}</code></li></ul></li></ul><p>It is recommended to use the new '${}' syntax. The old syntax may be removed at an later date.</p><p>Function replaceable table:</p><table><thead><tr><th align="left">old</th><th align="left">new</th></tr></thead><tbody><tr><td align="left">${int|min-max}</td><td align="left">${expression|#int(min,max)}</td></tr><tr><td align="left">${double|min-max|format}</td><td align="left">${expression|#double(min,max)}</td></tr><tr><td align="left">${email}</td><td align="left">${expression|#email()}</td></tr><tr><td align="left">${phone}</td><td align="left">${expression|#phone()}</td></tr><tr><td align="left">${zh|min-max}</td><td align="left">${expression|#zh(min,max)}</td></tr><tr><td align="left">${en|min-max}</td><td align="left">${expression|#en(min,max)}</td></tr><tr><td align="left">${list|[arg1,arg2...]}</td><td align="left">${expression|#oneOf(arg1,agr2...)}</td></tr><tr><td align="left">${current|format}</td><td align="left">${expression|#current(format)}</td></tr><tr><td align="left">${bool}</td><td align="left">${expression|#bool()}</td></tr><tr><td align="left">${array|item|length}</td><td align="left">${expression#array(item,length)}</td></tr></tbody></table><p><strong>You do not need to use add <code>""</code> on both sides of <code>${}</code>, the generated content will be prefixed and suffixed according to the definition of generator</strong></p></div><footer class="row docusaurus-mt-lg"><div class="col"><a href="https://github.com/apache/shenyu-website/edit/main/versioned_docs/version-2.5.1/plugin-center/mock/mock-plugin.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_mS5F" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_wj+Z"></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/2.5.1/plugin-center/cache/cache-plugin"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Cache Plugin</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/2.5.1/developer/spi/custom-load-balance"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Custom Load Balancer »</div></a></div></nav></div></div><div class="col col--3"><div class="tableOfContents_vrFS thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#11-plugin-name" class="table-of-contents__link">1.1 Plugin Name</a></li><li><a href="#12-appropriate-scenario" class="table-of-contents__link">1.2 Appropriate Scenario</a></li><li><a href="#13-plugin-functionality" class="table-of-contents__link">1.3 Plugin functionality</a></li><li><a href="#14-plugin-code" class="table-of-contents__link">1.4 Plugin Code</a></li><li><a href="#15-added-since-which-shenyu-version" class="table-of-contents__link">1.5 Added since which shenyu version</a></li><li><a href="#21-import-pom" class="table-of-contents__link">2.1 Import pom</a></li><li><a href="#22-enable-plugin" class="table-of-contents__link">2.2 Enable plugin</a></li><li><a href="#23-config-plugin" class="table-of-contents__link">2.3 Config plugin</a></li><li><a href="#24--supported-syntax" class="table-of-contents__link">2.4 <code>${}</code> supported syntax</a></li></ul></div></div></div></div></main></div></div></div> |
| <script src="/assets/js/runtime~main.19526316.js"></script> |
| <script src="/assets/js/main.0feaae07.js"></script> |