index.html 80.5 KB
Newer Older
X
xiongchun 已提交
1 2 3 4 5 6 7
<!doctype html>
<html class="docs-version-current" lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-beta.13">
<link rel="alternate" type="application/rss+xml" href="/pangu-framework/blog/rss.xml" title="盘古开发框架 RSS Feed">
8
<link rel="alternate" type="application/atom+xml" href="/pangu-framework/blog/atom.xml" title="盘古开发框架 Atom Feed"><title data-react-helmet="true">如何开发网关(ShenYu) | 盘古开发框架</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" property="og:url" content="https://your-docusaurus-test-site.com/pangu-framework/docs/quick-start/how-to-make-gateway-app/shenyu-based"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="如何开发网关(ShenYu) | 盘古开发框架"><meta data-react-helmet="true" name="description" content="网关开发模式选型参考建议请看上文《网关开发模式简介》。"><meta data-react-helmet="true" property="og:description" content="网关开发模式选型参考建议请看上文《网关开发模式简介》。"><link data-react-helmet="true" rel="icon" href="/pangu-framework/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://your-docusaurus-test-site.com/pangu-framework/docs/quick-start/how-to-make-gateway-app/shenyu-based"><link data-react-helmet="true" rel="alternate" href="https://your-docusaurus-test-site.com/pangu-framework/docs/quick-start/how-to-make-gateway-app/shenyu-based" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://your-docusaurus-test-site.com/pangu-framework/docs/quick-start/how-to-make-gateway-app/shenyu-based" hreflang="x-default"><link rel="stylesheet" href="/pangu-framework/assets/css/styles.2a295b20.css">
9
<link rel="preload" href="/pangu-framework/assets/js/runtime~main.d76fff94.js" as="script">
10
<link rel="preload" href="/pangu-framework/assets/js/main.a5d36842.js" as="script">
X
xiongchun 已提交
11 12 13
</head>
<body>
<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">
14
<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="/pangu-framework/"><div class="navbar__logo"><img src="/pangu-framework/img/logo.svg" alt="盘古开发框架" class="themedImage_TMUO themedImage--light_4Vu1"><img src="/pangu-framework/img/logo.svg" alt="盘古开发框架" class="themedImage_TMUO themedImage--dark_uzRr"></div><b class="navbar__title">盘古开发框架®</b></a><a class="navbar__item navbar__link navbar__link--active" href="/pangu-framework/docs/intro">开发指南</a><a class="navbar__item navbar__link" href="/pangu-framework/docs/faq">常见问答</a><a class="navbar__item navbar__link" href="/pangu-framework/docs/thanks">致敬 &amp; 鸣谢</a><a class="navbar__item navbar__link" href="/pangu-framework/docs/community">开发者社区</a></div><div class="navbar__items navbar__items--right"><a href="https://gitee.com/pulanos/pangu-framework" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link"><span>Gitee<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><a href="https://gitee.com/pulanos/pangu-framework" 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="toggle_iYfV toggle_2i4l toggleDisabled_xj38"><div class="toggleTrack_t-f2" role="button" tabindex="-1"><div class="toggleTrackCheck_mk7D"><span class="toggleIcon_pHJ9">🌜</span></div><div class="toggleTrackX_dm8H"><span class="toggleIcon_pHJ9">🌞</span></div><div class="toggleTrackThumb_W6To"></div></div><input type="checkbox" class="toggleScreenReader_h9qa" aria-label="Switch between dark and light mode"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper docs-wrapper docs-doc-page"><div class="docPage_lDyR"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_i9tI" type="button"></button><aside class="docSidebarContainer_0YBq"><div class="sidebar_a3j0"><nav class="menu thin-scrollbar menu_cyFh"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/intro">简介</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/install">安装</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active hasHref_TwRn" href="/pangu-framework/docs/quick-start/how-to-make-architecture">快速开始</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/quick-start/how-to-make-architecture">盘古开发架构简介</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/quick-start/how-to-make-monomer-architecture-app">如何开发单体应用</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/quick-start/how-to-make-microservice-architecture-app">如何开发微服务</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/quick-start/how-to-make-gateway-app">网关开发模式简介</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/quick-start/how-to-make-gateway-app/springmvc-based">如何开发网关(SpringMVC)</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/pangu-framework/docs/quick-start/how-to-make-gateway-app/shenyu-based">如何开发网关(ShenYu)</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist hasHref_TwRn" href="/pangu-framework/docs/advanced-guide/nacos-config-center">使用指南</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/nacos-config-center">配置中心</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/nacos-regist-center">注册中心</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/gateway">网关系统</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/data-persistance">数据持久化</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/layering-cache">分布式多级缓存</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/distributed-lock">分布式锁</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/distributed-transaction">分布式事务</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/mq">消息队列</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/pangu-framework/docs/advanced-guide/readwrite-splitting">数据治理之读写分离</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/code-generator">代码生成器插件</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/deploy-guide">部署运维指南</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/examples-list">范例模版工程</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/faq">常见问答FAQ</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/thanks">致敬 &amp; 鸣谢</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/pangu-framework/docs/community">开发者社区</a></li></ul></nav><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_eoK2"><svg width="20" height="20" aria-hidden="true" class="collapseSidebarButtonIcon_e+kA"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></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="docItemContainer_oiyr"><article><div class="tocCollapsible_aw-L theme-doc-toc-mobile tocMobile_Tx6Y"><button type="button" class="clean-btn tocCollapsibleButton_zr6a">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>基于ShenYu的专业网关开发</h1></header><p>网关开发模式选型参考建议请看上文<a href="/pangu-framework/docs/quick-start/how-to-make-gateway-app">《网关开发模式简介》</a></p><h2 class="anchor anchorWithStickyNavbar_y2LR" id="网关模块开发">网关模块开发<a aria-hidden="true" class="hash-link" href="#网关模块开发" title="Direct link to heading"></a></h2><h3 class="anchor anchorWithStickyNavbar_y2LR" id="安装相关盘古模块">安装相关盘古模块<a aria-hidden="true" class="hash-link" href="#安装相关盘古模块" title="Direct link to heading"></a></h3><div class="tabs-container"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_vU9c tabs__item--active">盘古Parent</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_vU9c">基础模块</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_vU9c">Dubbo模块</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_vU9c">网关模块</li></ul><div class="margin-vert--md"><div role="tabpanel"><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx 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">&lt;</span><span class="token tag" style="color:#00009f">parent</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">com</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">gitee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pulanos</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pangu</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">pangu</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">parent</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">latest</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">version</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">xxx</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">relativePath</span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">parent</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div></div><div role="tabpanel" hidden=""><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx 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">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">com</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">gitee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pulanos</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pangu</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">pangu</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">spring</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">boot</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">starter</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div></div><div role="tabpanel" hidden=""><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx 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">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">com</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">gitee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pulanos</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pangu</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">pangu</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">dubbo</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">spring</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">boot</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">starter</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div></div><div role="tabpanel" hidden=""><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx 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">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">com</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">gitee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pulanos</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">pangu</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">pangu</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">gateway</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">spring</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">boot</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">starter</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div></div></div></div><div class="admonition admonition-tip alert alert--success"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</h5></div><div class="admonition-content"><p>基于ShenYu的网关开发模式不需要引入服务接口依赖包,网关会根据服务接口的元数据信息,泛化调用Dubbo服务接口。服务接口的元数据信息则根据Dubbo服务应用中的配置自动上传到ShenYu网关管理系统。此内容在下文会继续讲解。</p></div></div><h3 class="anchor anchorWithStickyNavbar_y2LR" id="本地配置">本地配置<a aria-hidden="true" class="hash-link" href="#本地配置" title="Direct link to heading"></a></h3><blockquote><p>为便于理解,本文基于本地配置的方式编写。若改为标准的Nacos配置中心模式,请参阅:<a href="/pangu-framework/docs/advanced-guide/nacos-config-center">配置中心</a>章节。</p></blockquote><div class="tabs-container"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_vU9c tabs__item--active">application.yaml</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_vU9c">application-dev.yaml</li></ul><div class="margin-vert--md"><div role="tabpanel"><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">spring</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  profiles</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    active</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">spring</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">profiles</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">active</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">dev</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div></div><div role="tabpanel" hidden=""><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">server</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  port</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">9090</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">spring</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  main</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    allow</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">bean</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">definition</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">overriding</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shenyu</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cross</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    allowedHeaders</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    allowedMethods</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;*&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    allowedOrigin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;*&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    allowedExpose</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;*&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    maxAge</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;18000&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    allowCredentials</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  switchConfig</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    local</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  file</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    maxSize </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  sync</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    websocket</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line docusaurus-highlight-code-line" style="color:#393A34"><span class="token plain">      urls</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">shenyu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">websocket</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">urls</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">ws</span><span class="token operator" style="color:#393A34">:</span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">localhost</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">9095</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">websocket</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dubbo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    parameter</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> multi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  exclude</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    paths</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain">favicon</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ico</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  extPlugin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    path</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    threads</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    scheduleTime</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    scheduleDelay</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">30</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  scheduler</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> fixed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    threads</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">16</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  upstreamCheck</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    timeout</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    healthyThreshold</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    unhealthyThreshold</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    interval</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    printEnabled</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    printInterval</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">60000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">logging</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  level</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    root</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> info</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    org</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">springframework</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">boot</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> info</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    org</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ibatis</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> info</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    org</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">shenyu</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> info</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div></div></div></div><h5 class="anchor anchorWithStickyNavbar_y2LR" id="关键配置项说明">关键配置项说明<a aria-hidden="true" class="hash-link" href="#关键配置项说明" title="Direct link to heading"></a></h5><table><thead><tr><th>配置项</th><th>配置说明</th></tr></thead><tbody><tr><td>shenyu.sync.websocket.urls</td><td>表示网关和ShenYu Admin之间使用Websocket的方式进行数据同步,这里是配置ShenYu Admin的提供的Websocket数据同步服务的地址(支持集群,逗号分割)。</td></tr></tbody></table><div class="admonition admonition-caution alert alert--warning"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</h5></div><div class="admonition-content"><p>上表中提到到ShenYu Admin是ShenYu网关框架的配置&amp;元数据管理后台。这里包含了网关模块自己的配置信息也包含了后台服务接口原数据信息,这理的配置信息和元数据信息需要和网关模块同步。ShenYu支持多种数据同步方案,Websocket只是盘古开发选用的一种缺省方案。关于网关的更多信息,请参阅:<a href="/pangu-framework/docs/advanced-guide/gateway">使用指南-&gt;网关系统</a>章节。</p></div></div><h3 class="anchor anchorWithStickyNavbar_y2LR" id="调用微服务接口">调用微服务接口<a aria-hidden="true" class="hash-link" href="#调用微服务接口" title="Direct link to heading"></a></h3><p>基于ShenYu的网关开发模式既不需要引入服务接口JAR,也不需要编写具体的调用代码。完全由网关根据服务接口元数据进行Dubbo泛化调用。</p><div class="admonition admonition-danger alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>那么问题来了,网关是如何知道Dubbo服务接口元数据的呢?</h5></div><div class="admonition-content"><ul><li>通过ShenYu Admin后台系统,『基础配置-&gt;元数据管理』菜单,手工新增每一个接口的元数据,然后将数据自动同步到网关模块。(不建议,量大的话太繁琐)</li><li>对Dubbo服务提供者增加ShenYu Client支持,通过在接口方法上使用注解<code>@ShenyuDubboClient</code>来自动采集上传接口元数据到ShenYu Admin,然后将数据自动同步到网关模块。(盘古开发建议使用的标准姿势)如何对Dubbo服务提供者增加ShenYu Client支持请参阅下文的『<a href="#dubbo%E6%9C%8D%E5%8A%A1%E7%AB%AF%E7%BD%91%E5%85%B3%E9%87%87%E9%9B%86%E6%8E%A5%E5%8F%A3%E5%85%83%E6%95%B0%E6%8D%AE">Dubbo服务端(网关采集接口元数据)</a>』章节。</li></ul></div></div><div class="admonition admonition-info alert alert--info"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>还有一个问题,网关要实现泛化调用是需要dubbo服务的注册中心的?</h5></div><div class="admonition-content"><ul><li>没错。通过ShenYu Admin后台系统『基础配置-&gt;插件管理』菜单,启用<code>dubbo插件</code>并填入注册中心地址。比如,我测试用的注册中心地址:<code>nacos://169.188.88.140:1688?namespace=pangu-dev</code>。如下图所示。</li></ul></div></div><p><img alt="盘古框架网关" src="/pangu-framework/assets/images/4-pangu-framework-shenyu-dubbo-8571bbae9d99ba6e3c2b539b5409af0b.png"></p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="启动入口">启动入口<a aria-hidden="true" class="hash-link" href="#启动入口" title="Direct link to heading"></a></h3><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">@SpringBootApplication</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">WebApiGatewayApplication</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">String</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token parameter"> args</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line docusaurus-highlight-code-line" style="color:#393A34"><span class="token plain">        PanGuApplicationBuilder</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">init</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">WebApiGatewayApplication</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">class</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">run</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">args</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h2 class="anchor anchorWithStickyNavbar_y2LR" id="dubbo服务端网关采集接口元数据">Dubbo服务端(网关采集接口元数据)<a aria-hidden="true" class="hash-link" href="#dubbo服务端网关采集接口元数据" title="Direct link to heading"></a></h2><p>网关需要对其代理的后端Dubbo服务进行泛化调用,就必须知道服务接口元数据。下文就将对一个普通Dubbo服务应用增加ShenYu Client支持完成自动采集服务接口元数据功能。</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="安装shenyu-client依赖包">安装ShenYu Client依赖包<a aria-hidden="true" class="hash-link" href="#安装shenyu-client依赖包" title="Direct link to heading"></a></h3><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx 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">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">org</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">shenyu</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">shenyu</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">spring</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">boot</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">starter</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">client</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">apache</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">dubbo</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h3 class="anchor anchorWithStickyNavbar_y2LR" id="增加配置项">增加配置项<a aria-hidden="true" class="hash-link" href="#增加配置项" title="Direct link to heading"></a></h3><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">shenyu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">register</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">type</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">http</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shenyu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">server</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">lists</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">shenyu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">server</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">lists</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">http</span><span class="token operator" style="color:#393A34">:</span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">localhost</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">9095</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">shenyu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">contextPath</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">dubbo</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><table><thead><tr><th>配置项</th><th>配置说明</th></tr></thead><tbody><tr><td>shenyu.client.register-type</td><td>服务接口元数据采集方式,可选http直连模式或配置中心zookeeper、etcd、consul和nacos。盘古开发采集接口元数据缺省选择http直接ShenYu Admin的方式。</td></tr><tr><td>shenyu.client.server-lists</td><td>ShenYu Admin地址或配置中心地址。集群时多个地址用逗号分开。</td></tr><tr><td>shenyu.client.props.contextPath</td><td>本服务在网关中的路由前缀,可自定义按需配置</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_y2LR" id="自动上报服务接口元数据">自动上报服务接口元数据<a aria-hidden="true" class="hash-link" href="#自动上报服务接口元数据" title="Direct link to heading"></a></h3><p>在Dubbo服务实现类的方法上使用注解<code>@ShenyuDubboClient</code>标记,表示该接口方法元数据自动上传到ShenYu Admin。如下代码所示。</p><div class="codeBlockContainer_J+bg language-jsx"><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">@</span><span class="token function" style="color:#d73a49">Service</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">version </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;1.0.0&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> group </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;pangu-examples-dubbo-gateway-service&quot;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">UserServiceImpl</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">UserService</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Override</span><br></span><span class="token-line docusaurus-highlight-code-line" style="color:#393A34"><span class="token plain">    @</span><span class="token function" style="color:#d73a49">ShenyuDubboClient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;/findUserEntity&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> desc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;查询用户信息&quot;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> UserEntity </span><span class="token function" style="color:#d73a49">findUserEntity</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">Long id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> userEntity</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    @Override</span><br></span><span class="token-line docusaurus-highlight-code-line" style="color:#393A34"><span class="token plain">    @</span><span class="token function" style="color:#d73a49">ShenyuDubboClient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;/listUserOuts&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> desc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;查询用户信息列表&quot;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> List</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">UserOut</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">listUserOuts</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">UserIn userIn</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> userOuts</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p><strong>重启服务提供者:</strong></p><ul><li>进入ShenYu Admin后台系统的『基础配置-&gt;元数据管理』菜单,会看到自动上报的服务元数据信息。如下图所示。
X
xiongchun 已提交
15
<img alt="盘古开发网关" src="/pangu-framework/assets/images/2-pangu-framework-shenyu-metadata-b69293c799df617306c587fdcb78dd94.png"></li><li>进入ShenYu Admin后台系统的『插件列表-&gt;proxy-&gt;dubbo』菜单,会看到自动注册的选择器和规则信息。如下图所示。
16
<img alt="盘古开发网关" src="/pangu-framework/assets/images/3-pangu-framework-shenyu-plugin-3b3a6ed16d27836a25a2a7037423f553.png"></li></ul><h2 class="anchor anchorWithStickyNavbar_y2LR" id="完整请求url及参数说明">完整请求URL及参数说明<a aria-hidden="true" class="hash-link" href="#完整请求url及参数说明" title="Direct link to heading"></a></h2><p>至此,就可以通过http的方式来请求我们的的dubbo服务了。</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="请求url">请求URL<a aria-hidden="true" class="hash-link" href="#请求url" title="Direct link to heading"></a></h3><div class="admonition admonition-info alert alert--info"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>如何确定dubbo服务对应的请求url地址呢?</h5></div><div class="admonition-content"><p>由网关模块配置文件可知网关应用端口是<code>9090</code>,dubbo服务的配置项shenyu.client.props.contextPath为<code>/dubbo</code>,我们的dubbo方法通过@ShenyuDubboClient标记的path属性为:<code>/findUserEntity</code>。综上,dubbo服务UserService#findUserEntity的完整请求地址为:http://localhost:9090/dubbo/findUserEntity</p></div></div><h3 class="anchor anchorWithStickyNavbar_y2LR" id="参数说明">参数说明<a aria-hidden="true" class="hash-link" href="#参数说明" title="Direct link to heading"></a></h3><p>通过http协议,post方式访问网关。在http body中传入json格式的参数。</p><h3 class="anchor anchorWithStickyNavbar_y2LR" id="请求示例">请求示例<a aria-hidden="true" class="hash-link" href="#请求示例" title="Direct link to heading"></a></h3><div class="codeBlockContainer_J+bg language-jsx"><div style="color:#393A34;background-color:#f6f8fa" class="codeBlockTitle_oQzk">CURL脚本</div><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">curl </span><span class="token operator" style="color:#393A34">--</span><span class="token plain">location </span><span class="token operator" style="color:#393A34">--</span><span class="token plain">request </span><span class="token constant" style="color:#36acaa">POST</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;http://127.0.0.1:9090/dubbo/findUserEntity&#x27;</span><span class="token plain"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">--</span><span class="token plain">header </span><span class="token string" style="color:#e3116c">&#x27;Content-Type: application/json&#x27;</span><span class="token plain"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">--</span><span class="token plain">data </span><span class="token string" style="color:#e3116c">&#x27;{id=1}&#x27;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><div class="codeBlockContainer_J+bg language-jsx"><div style="color:#393A34;background-color:#f6f8fa" class="codeBlockTitle_oQzk">返回结果</div><div class="codeBlockContent_csEI jsx"><pre tabindex="0" class="prism-code language-jsx codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&quot;code&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">200</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&quot;message&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;Access to success!&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">&quot;data&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">&quot;name&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;云南码农大熊&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">&quot;id&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">&quot;userType&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h2 class="anchor anchorWithStickyNavbar_y2LR" id="本文相关范例源码">本文相关范例源码<a aria-hidden="true" class="hash-link" href="#本文相关范例源码" title="Direct link to heading"></a></h2><ul><li><a href="https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-api" target="_blank" rel="noopener noreferrer">pangu-examples-dubbo-api</a>:服务接口包</li><li><a href="https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-dubbo-gateway-service" target="_blank" rel="noopener noreferrer">pangu-examples-dubbo-gateway-service</a>:服务提供者(支持网关)</li><li><a href="https://gitee.com/pulanos/pangu-framework/tree/master/pangu-examples/pangu-examples-webapi-gateway-based" target="_blank" rel="noopener noreferrer">pangu-examples-webapi-gateway-based</a>:服务消费者(基于ShenYu的网关模块)</li></ul><h2 class="anchor anchorWithStickyNavbar_y2LR" id="下一步">下一步<a aria-hidden="true" class="hash-link" href="#下一步" title="Direct link to heading"></a></h2><p>继续阅读其它章节获取您想要的答案或通过我们的<a href="/pangu-framework/docs/community">开发者社区</a>寻求更多帮助。</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-tags-row row margin-bottom--sm"><div class="col"><b>Tags:</b><ul class="tags_NBRY padding--none margin-left--sm"><li class="tag_F03v"><a class="tag_WK-t tagRegular_LXbV" href="/pangu-framework/docs/tags/快速开始">快速开始</a></li><li class="tag_F03v"><a class="tag_WK-t tagRegular_LXbV" href="/pangu-framework/docs/tags/网关">网关</a></li></ul></div></div><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://gitee.com/pulanos/pangu-framework/tree/master/pangu-website/docs/quick-start/网关高级模式.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><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_mt2f"></div></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="/pangu-framework/docs/quick-start/how-to-make-gateway-app/springmvc-based"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« <!-- -->如何开发网关(SpringMVC)</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/pangu-framework/docs/advanced-guide/nacos-config-center"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">配置中心<!-- --> »</div></a></div></nav></div></div><div class="col col--3"><div class="tableOfContents_vrFS thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#网关模块开发" class="table-of-contents__link toc-highlight">网关模块开发</a><ul><li><a href="#安装相关盘古模块" class="table-of-contents__link toc-highlight">安装相关盘古模块</a></li><li><a href="#本地配置" class="table-of-contents__link toc-highlight">本地配置</a></li><li><a href="#调用微服务接口" class="table-of-contents__link toc-highlight">调用微服务接口</a></li><li><a href="#启动入口" class="table-of-contents__link toc-highlight">启动入口</a></li></ul></li><li><a href="#dubbo服务端网关采集接口元数据" class="table-of-contents__link toc-highlight">Dubbo服务端(网关采集接口元数据)</a><ul><li><a href="#安装shenyu-client依赖包" class="table-of-contents__link toc-highlight">安装ShenYu Client依赖包</a></li><li><a href="#增加配置项" class="table-of-contents__link toc-highlight">增加配置项</a></li><li><a href="#自动上报服务接口元数据" class="table-of-contents__link toc-highlight">自动上报服务接口元数据</a></li></ul></li><li><a href="#完整请求url及参数说明" class="table-of-contents__link toc-highlight">完整请求URL及参数说明</a><ul><li><a href="#请求url" class="table-of-contents__link toc-highlight">请求URL</a></li><li><a href="#参数说明" class="table-of-contents__link toc-highlight">参数说明</a></li><li><a href="#请求示例" class="table-of-contents__link toc-highlight">请求示例</a></li></ul></li><li><a href="#本文相关范例源码" class="table-of-contents__link toc-highlight">本文相关范例源码</a></li><li><a href="#下一步" class="table-of-contents__link toc-highlight">下一步</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/pangu-framework/docs/intro">开发指南</a></li><li class="footer__item"><a class="footer__link-item" href="/pangu-framework/blog">博客专栏</a></li><li class="footer__item"><a class="footer__link-item" href="/pangu-framework/docs/faq">常见问答FAQ</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items"><li class="footer__item"><a href="https://gitee.com/pulanos/pangu-framework/issues?state=all" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Gitee Issues<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></li><li class="footer__item"><a href="https://gitee.com/pulanos/pangu-framework" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Gitee PanGu Framework<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></li><li class="footer__item"><a href="https://gitee.com/pulanos/pangu-framework" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>GitHub PanGu Framework<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></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/pangu-framework/docs/thanks">致敬 &amp; 鸣谢</a></li><li class="footer__item"><a href="https://www.oschina.net/" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>开源中国<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></li><li class="footer__item"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footer__link-item"><span>Apache Software Foundation<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></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022 普蓝开源社区  Released under <a target="_blank" class="ghostwhite" href="https://www.apache.org/licenses/LICENSE-2.0">Apache V2 license</a></div></div></div></footer></div>
17
<script src="/pangu-framework/assets/js/runtime~main.d76fff94.js"></script>
18
<script src="/pangu-framework/assets/js/main.a5d36842.js"></script>
X
xiongchun 已提交
19 20
</body>
</html>