#14 support redirect in aggregation
This commit is contained in:
@@ -7,13 +7,13 @@
|
|||||||
<meta name="generator" content="VuePress 1.5.2">
|
<meta name="generator" content="VuePress 1.5.2">
|
||||||
|
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<link rel="preload" href="/assets/css/0.styles.34d67128.css" as="style"><link rel="preload" href="/assets/js/app.86b5ae26.js" as="script"><link rel="preload" href="/assets/js/4.7d5f245c.js" as="script"><link rel="prefetch" href="/assets/js/10.b57afcaa.js"><link rel="prefetch" href="/assets/js/11.21242c7f.js"><link rel="prefetch" href="/assets/js/12.61089982.js"><link rel="prefetch" href="/assets/js/13.fdb2bea3.js"><link rel="prefetch" href="/assets/js/14.62d9a88b.js"><link rel="prefetch" href="/assets/js/15.0358b10e.js"><link rel="prefetch" href="/assets/js/16.43a475d2.js"><link rel="prefetch" href="/assets/js/17.32fa8ea0.js"><link rel="prefetch" href="/assets/js/18.603a235b.js"><link rel="prefetch" href="/assets/js/19.5c4af839.js"><link rel="prefetch" href="/assets/js/2.5b001851.js"><link rel="prefetch" href="/assets/js/20.1bf2bcbb.js"><link rel="prefetch" href="/assets/js/21.dca6f5c4.js"><link rel="prefetch" href="/assets/js/22.db62cc12.js"><link rel="prefetch" href="/assets/js/23.5b796ecf.js"><link rel="prefetch" href="/assets/js/24.72fe0b8b.js"><link rel="prefetch" href="/assets/js/25.bbf8bff1.js"><link rel="prefetch" href="/assets/js/26.70321f43.js"><link rel="prefetch" href="/assets/js/27.505a813e.js"><link rel="prefetch" href="/assets/js/28.cdddd7aa.js"><link rel="prefetch" href="/assets/js/29.60b7285b.js"><link rel="prefetch" href="/assets/js/3.a51774e3.js"><link rel="prefetch" href="/assets/js/30.0222f21c.js"><link rel="prefetch" href="/assets/js/5.a59b20e1.js"><link rel="prefetch" href="/assets/js/6.e883523c.js"><link rel="prefetch" href="/assets/js/7.00dd2642.js"><link rel="prefetch" href="/assets/js/8.645ad4e8.js"><link rel="prefetch" href="/assets/js/9.9eb9244c.js">
|
<link rel="preload" href="/assets/css/0.styles.34d67128.css" as="style"><link rel="preload" href="/assets/js/app.60575df2.js" as="script"><link rel="preload" href="/assets/js/4.7d5f245c.js" as="script"><link rel="prefetch" href="/assets/js/10.13320b99.js"><link rel="prefetch" href="/assets/js/11.a76c2e4c.js"><link rel="prefetch" href="/assets/js/12.f815cfa2.js"><link rel="prefetch" href="/assets/js/13.fdb2bea3.js"><link rel="prefetch" href="/assets/js/14.7e909813.js"><link rel="prefetch" href="/assets/js/15.791d6b9d.js"><link rel="prefetch" href="/assets/js/16.4ae255f1.js"><link rel="prefetch" href="/assets/js/17.32fa8ea0.js"><link rel="prefetch" href="/assets/js/18.603a235b.js"><link rel="prefetch" href="/assets/js/19.5c4af839.js"><link rel="prefetch" href="/assets/js/2.5b001851.js"><link rel="prefetch" href="/assets/js/20.1bf2bcbb.js"><link rel="prefetch" href="/assets/js/21.081e4e30.js"><link rel="prefetch" href="/assets/js/22.0c08546e.js"><link rel="prefetch" href="/assets/js/23.94679012.js"><link rel="prefetch" href="/assets/js/24.9c5c2990.js"><link rel="prefetch" href="/assets/js/25.aead8972.js"><link rel="prefetch" href="/assets/js/26.b4625fe9.js"><link rel="prefetch" href="/assets/js/27.20a7e33d.js"><link rel="prefetch" href="/assets/js/28.3d35b618.js"><link rel="prefetch" href="/assets/js/29.60b7285b.js"><link rel="prefetch" href="/assets/js/3.a51774e3.js"><link rel="prefetch" href="/assets/js/30.7591e88a.js"><link rel="prefetch" href="/assets/js/5.abc10683.js"><link rel="prefetch" href="/assets/js/6.e883523c.js"><link rel="prefetch" href="/assets/js/7.e3b70354.js"><link rel="prefetch" href="/assets/js/8.a4432ff1.js"><link rel="prefetch" href="/assets/js/9.b1740bdf.js">
|
||||||
<link rel="stylesheet" href="/assets/css/0.styles.34d67128.css">
|
<link rel="stylesheet" href="/assets/css/0.styles.34d67128.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>Looks like we've got some broken links.</blockquote> <a href="/" class="router-link-active">
|
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>There's nothing here.</blockquote> <a href="/" class="router-link-active">
|
||||||
Take me home.
|
Take me home.
|
||||||
</a></div></div><div class="global-ui"></div></div>
|
</a></div></div><div class="global-ui"></div></div>
|
||||||
<script src="/assets/js/app.86b5ae26.js" defer></script><script src="/assets/js/4.7d5f245c.js" defer></script>
|
<script src="/assets/js/app.60575df2.js" defer></script><script src="/assets/js/4.7d5f245c.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
fizzgate.com
|
|
||||||
BIN
docs/aggr_config_redirect.png
Normal file
BIN
docs/aggr_config_redirect.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{358:function(t,v,e){"use strict";e.r(v);var r=e(42),_=Object(r.a)({},(function(){var t=this,v=t.$createElement,e=t._self._c||v;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("p",[t._v("1.创建服务")]),t._v(" "),e("p",[t._v("此服务是一个分组的概念,可以包含多个聚合接口,类似于微服务体系里的服务")]),t._v(" "),e("p",[t._v("2.创建服务编排接口")]),t._v(" "),e("p",[t._v("3.开通网关白名单和配置访问策略和插件")]),t._v(" "),e("p",[t._v("4.测试服务编排接口")]),t._v(" "),e("p",[t._v("5.发布接口")]),t._v(" "),e("p",[t._v("界面总览")]),t._v(" "),e("p",[e("img",{attrs:{src:"/aggr_overview1.png",alt:""}})]),t._v(" "),e("p",[e("img",{attrs:{src:"/aggr_overview2.png",alt:""}})])])}),[],!1,null,null,null);v.default=_.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{356:function(t,v,e){"use strict";e.r(v);var r=e(42),_=Object(r.a)({},(function(){var t=this,v=t.$createElement,e=t._self._c||v;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("p",[t._v("1.创建服务")]),t._v(" "),e("p",[t._v("此服务是一个分组的概念,可以包含多个聚合接口,类似于微服务体系里的服务")]),t._v(" "),e("p",[t._v("2.创建服务编排接口")]),t._v(" "),e("p",[t._v("3.开通网关白名单和配置访问策略和插件")]),t._v(" "),e("p",[t._v("4.测试服务编排接口")]),t._v(" "),e("p",[t._v("5.发布接口")]),t._v(" "),e("p",[t._v("界面总览")]),t._v(" "),e("p",[e("img",{attrs:{src:"/aggr_overview1.png",alt:""}})]),t._v(" "),e("p",[e("img",{attrs:{src:"/aggr_overview2.png",alt:""}})])])}),[],!1,null,null,null);v.default=_.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{355:function(t,_,v){"use strict";v.r(_);var a=v(42),e=Object(a.a)({},(function(){var t=this,_=t.$createElement,v=t._self._c||_;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h2",{attrs:{id:"基准测试结果"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基准测试结果"}},[t._v("#")]),t._v(" 基准测试结果")]),t._v(" "),v("p",[t._v("我们将Fizz与Spring官方spring-cloud-gateway进行比较,使用相同的环境和条件,测试对象均为单个节点。")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",{staticStyle:{"text-align":"center"}},[t._v("产品")]),t._v(" "),v("th",[t._v("QPS")]),t._v(" "),v("th",[t._v("90% Latency(ms)")])])]),t._v(" "),v("tbody",[v("tr",[v("td",{staticStyle:{"text-align":"center"}},[t._v("直接访问后端服务")]),t._v(" "),v("td",[t._v("9087.46")]),t._v(" "),v("td",[t._v("10.76")])]),t._v(" "),v("tr",[v("td",{staticStyle:{"text-align":"center"}},[t._v("fizz-gateway")]),t._v(" "),v("td",[t._v("5927.13")]),t._v(" "),v("td",[t._v("19.86")])]),t._v(" "),v("tr",[v("td",{staticStyle:{"text-align":"center"}},[t._v("spring-cloud-gateway")]),t._v(" "),v("td",[t._v("5044.04")]),t._v(" "),v("td",[t._v("22.91")])])])]),t._v(" "),v("h2",{attrs:{id:"基准测试详情"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基准测试详情"}},[t._v("#")]),t._v(" 基准测试详情")]),t._v(" "),v("h3",{attrs:{id:"硬件环境"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#硬件环境"}},[t._v("#")]),t._v(" 硬件环境")]),t._v(" "),v("p",[t._v("后端服务所在服务器:")]),t._v(" "),v("p",[t._v("4核8G内存")]),t._v(" "),v("p",[t._v("Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4")]),t._v(" "),v("p",[t._v("Linux version 3.10.0-327.el7.x86_64")]),t._v(" "),v("p",[t._v("节点所在服务器:")]),t._v(" "),v("p",[t._v("4核8G内存")]),t._v(" "),v("p",[t._v("Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4")]),t._v(" "),v("p",[t._v("Linux version 3.10.0-327.el7.x86_64")]),t._v(" "),v("p",[t._v("压测程序所在服务器:")]),t._v(" "),v("p",[t._v("4核8G内存")]),t._v(" "),v("p",[t._v("Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4")]),t._v(" "),v("p",[t._v("Linux version 3.10.0-327.el7.x86_64")]),t._v(" "),v("h3",{attrs:{id:"压测工具"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#压测工具"}},[t._v("#")]),t._v(" 压测工具")]),t._v(" "),v("p",[t._v("压测软件:wrk")]),t._v(" "),v("p",[t._v("并发连接: 100")]),t._v(" "),v("h3",{attrs:{id:"压测结果截图"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#压测结果截图"}},[t._v("#")]),t._v(" 压测结果截图")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("直接访问后端服务:\n"),v("img",{attrs:{src:"/benchmark_backend.png",alt:""}})])]),t._v(" "),v("li",[v("p",[t._v("fizz-gateway:\n"),v("img",{attrs:{src:"/benchmark_fizz.png",alt:""}})])]),t._v(" "),v("li",[v("p",[t._v("spring-cloud-gateway:\n"),v("img",{attrs:{src:"/benchmark_scgw.png",alt:""}})])])])])}),[],!1,null,null,null);_.default=e.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{357:function(t,_,v){"use strict";v.r(_);var a=v(42),e=Object(a.a)({},(function(){var t=this,_=t.$createElement,v=t._self._c||_;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h2",{attrs:{id:"基准测试结果"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基准测试结果"}},[t._v("#")]),t._v(" 基准测试结果")]),t._v(" "),v("p",[t._v("我们将Fizz与Spring官方spring-cloud-gateway进行比较,使用相同的环境和条件,测试对象均为单个节点。")]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",{staticStyle:{"text-align":"center"}},[t._v("产品")]),t._v(" "),v("th",[t._v("QPS")]),t._v(" "),v("th",[t._v("90% Latency(ms)")])])]),t._v(" "),v("tbody",[v("tr",[v("td",{staticStyle:{"text-align":"center"}},[t._v("直接访问后端服务")]),t._v(" "),v("td",[t._v("9087.46")]),t._v(" "),v("td",[t._v("10.76")])]),t._v(" "),v("tr",[v("td",{staticStyle:{"text-align":"center"}},[t._v("fizz-gateway")]),t._v(" "),v("td",[t._v("5927.13")]),t._v(" "),v("td",[t._v("19.86")])]),t._v(" "),v("tr",[v("td",{staticStyle:{"text-align":"center"}},[t._v("spring-cloud-gateway")]),t._v(" "),v("td",[t._v("5044.04")]),t._v(" "),v("td",[t._v("22.91")])])])]),t._v(" "),v("h2",{attrs:{id:"基准测试详情"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#基准测试详情"}},[t._v("#")]),t._v(" 基准测试详情")]),t._v(" "),v("h3",{attrs:{id:"硬件环境"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#硬件环境"}},[t._v("#")]),t._v(" 硬件环境")]),t._v(" "),v("p",[t._v("后端服务所在服务器:")]),t._v(" "),v("p",[t._v("4核8G内存")]),t._v(" "),v("p",[t._v("Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4")]),t._v(" "),v("p",[t._v("Linux version 3.10.0-327.el7.x86_64")]),t._v(" "),v("p",[t._v("节点所在服务器:")]),t._v(" "),v("p",[t._v("4核8G内存")]),t._v(" "),v("p",[t._v("Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4")]),t._v(" "),v("p",[t._v("Linux version 3.10.0-327.el7.x86_64")]),t._v(" "),v("p",[t._v("压测程序所在服务器:")]),t._v(" "),v("p",[t._v("4核8G内存")]),t._v(" "),v("p",[t._v("Intel(R) Xeon(R) CPU X5675 @ 3.07GHz * 4")]),t._v(" "),v("p",[t._v("Linux version 3.10.0-327.el7.x86_64")]),t._v(" "),v("h3",{attrs:{id:"压测工具"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#压测工具"}},[t._v("#")]),t._v(" 压测工具")]),t._v(" "),v("p",[t._v("压测软件:wrk")]),t._v(" "),v("p",[t._v("并发连接: 100")]),t._v(" "),v("h3",{attrs:{id:"压测结果截图"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#压测结果截图"}},[t._v("#")]),t._v(" 压测结果截图")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("直接访问后端服务:\n"),v("img",{attrs:{src:"/benchmark_backend.png",alt:""}})])]),t._v(" "),v("li",[v("p",[t._v("fizz-gateway:\n"),v("img",{attrs:{src:"/benchmark_fizz.png",alt:""}})])]),t._v(" "),v("li",[v("p",[t._v("spring-cloud-gateway:\n"),v("img",{attrs:{src:"/benchmark_scgw.png",alt:""}})])])])])}),[],!1,null,null,null);_.default=e.exports}}]);
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{359:function(a,r,t){"use strict";t.r(r);var e=t(42),_=Object(e.a)({},(function(){var a=this,r=a.$createElement,t=a._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),t("p",[a._v("聚合接口的发布|下线操作需要提交发布|下线申请,审核通过后申请人才能执行发布|下线操作。待审核功能用于审核发布|下线申请,下面介绍待审核功能。")]),a._v(" "),t("h2",{attrs:{id:"审核列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#审核列表"}},[a._v("#")]),a._v(" 审核列表")]),a._v(" "),t("p",[a._v("菜单位置:发布申请 > 待审核。点击菜单后进入审核列表页面,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_list_query.png",alt:"manager_aggregate_approve_list_query"}})]),a._v(" "),t("h2",{attrs:{id:"审核操作"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#审核操作"}},[a._v("#")]),a._v(" 审核操作")]),a._v(" "),t("p",[a._v("点击 查看 按钮可以查看发布|下线申请详情,详情页中可执行审核操作。")]),a._v(" "),t("p",[a._v("申请列表页提供快速审核操作,点击 审核 按钮后弹出审核确认窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_op_1.png",alt:"manager_aggregate_approve_op_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_op_2.png",alt:"manager_aggregate_approve_op_2"}})]),a._v(" "),t("p",[a._v("审核结果:勾选通过,审核后申请能可执行申请的操作;勾选不通过,审核后申请失败,申请人不能执行申请的操作。")]),a._v(" "),t("p",[a._v("审核后申请人会收到审核结果邮件通知,如下图是审核通过的邮件通知。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_op_3.png",alt:"manager_aggregate_approve_op_3"}})])])}),[],!1,null,null,null);r.default=_.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{360:function(a,r,t){"use strict";t.r(r);var e=t(42),_=Object(e.a)({},(function(){var a=this,r=a.$createElement,t=a._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),t("p",[a._v("聚合接口的发布|下线操作需要提交发布|下线申请,审核通过后申请人才能执行发布|下线操作。待审核功能用于审核发布|下线申请,下面介绍待审核功能。")]),a._v(" "),t("h2",{attrs:{id:"审核列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#审核列表"}},[a._v("#")]),a._v(" 审核列表")]),a._v(" "),t("p",[a._v("菜单位置:发布申请 > 待审核。点击菜单后进入审核列表页面,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_list_query.png",alt:"manager_aggregate_approve_list_query"}})]),a._v(" "),t("h2",{attrs:{id:"审核操作"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#审核操作"}},[a._v("#")]),a._v(" 审核操作")]),a._v(" "),t("p",[a._v("点击 查看 按钮可以查看发布|下线申请详情,详情页中可执行审核操作。")]),a._v(" "),t("p",[a._v("申请列表页提供快速审核操作,点击 审核 按钮后弹出审核确认窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_op_1.png",alt:"manager_aggregate_approve_op_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_op_2.png",alt:"manager_aggregate_approve_op_2"}})]),a._v(" "),t("p",[a._v("审核结果:勾选通过,审核后申请能可执行申请的操作;勾选不通过,审核后申请失败,申请人不能执行申请的操作。")]),a._v(" "),t("p",[a._v("审核后申请人会收到审核结果邮件通知,如下图是审核通过的邮件通知。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_approve_op_3.png",alt:"manager_aggregate_approve_op_3"}})])])}),[],!1,null,null,null);r.default=_.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{363:function(a,t,e){"use strict";e.r(t);var _=e(42),r=Object(_.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h2",{attrs:{id:"概述"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),e("p",[a._v("管理后台记录了发布|下线申请的审核操作日志,审核日志功能提供界面查询后台记录的审核操作日志。")]),a._v(" "),e("h2",{attrs:{id:"审核日志列表"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#审核日志列表"}},[a._v("#")]),a._v(" 审核日志列表")]),a._v(" "),e("p",[a._v("菜单位置:发布申请 > 审核日志。点击菜单后进入审核日志列表页面,如图所示。")]),a._v(" "),e("p",[e("img",{attrs:{src:"/manager_aggregate_approve_op_log_list_query.png",alt:"manager_aggregate_approve_op_log_list_query"}})]),a._v(" "),e("h2",{attrs:{id:"审核日志详情"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#审核日志详情"}},[a._v("#")]),a._v(" 审核日志详情")]),a._v(" "),e("p",[a._v("点击 查看 按钮弹出审核日志详情页面,如图所示。")]),a._v(" "),e("p",[e("img",{attrs:{src:"/manager_aggregate_approve_op_log_detail_1.png",alt:"manager_aggregate_approve_op_log_detail_1"}})]),a._v(" "),e("p",[e("img",{attrs:{src:"/manager_aggregate_approve_op_log_detail_2.png",alt:"manager_aggregate_approve_op_log_detail_2"}})])])}),[],!1,null,null,null);t.default=r.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{358:function(a,t,e){"use strict";e.r(t);var _=e(42),r=Object(_.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h2",{attrs:{id:"概述"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),e("p",[a._v("管理后台记录了发布|下线申请的审核操作日志,审核日志功能提供界面查询后台记录的审核操作日志。")]),a._v(" "),e("h2",{attrs:{id:"审核日志列表"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#审核日志列表"}},[a._v("#")]),a._v(" 审核日志列表")]),a._v(" "),e("p",[a._v("菜单位置:发布申请 > 审核日志。点击菜单后进入审核日志列表页面,如图所示。")]),a._v(" "),e("p",[e("img",{attrs:{src:"/manager_aggregate_approve_op_log_list_query.png",alt:"manager_aggregate_approve_op_log_list_query"}})]),a._v(" "),e("h2",{attrs:{id:"审核日志详情"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#审核日志详情"}},[a._v("#")]),a._v(" 审核日志详情")]),a._v(" "),e("p",[a._v("点击 查看 按钮弹出审核日志详情页面,如图所示。")]),a._v(" "),e("p",[e("img",{attrs:{src:"/manager_aggregate_approve_op_log_detail_1.png",alt:"manager_aggregate_approve_op_log_detail_1"}})]),a._v(" "),e("p",[e("img",{attrs:{src:"/manager_aggregate_approve_op_log_detail_2.png",alt:"manager_aggregate_approve_op_log_detail_2"}})])])}),[],!1,null,null,null);t.default=r.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{367:function(a,e,t){"use strict";t.r(e);var _=t(42),r=Object(_.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),t("p",[a._v("网关缓存功能用于查询Fizz网关实例本地缓存的已发布接口信息,可以快速的了解当前网关实例生效的全部接口,同时通过查看后台接口发布版本号与网关实例本地缓存的接口版本号是否一致可以排查接口缓存问题,下面介绍网关缓存功能的操作。")]),a._v(" "),t("h2",{attrs:{id:"网关列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#网关列表"}},[a._v("#")]),a._v(" 网关列表")]),a._v(" "),t("p",[a._v("菜单位置:服务编排 > 网关缓存。点击菜单后进入网关列表页面,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_list_query.png",alt:"manager_aggregate_gateway_list_query"}})]),a._v(" "),t("p",[a._v("Fizz网关与后台注册到同一个eureka注册中心,后台通过eureka获取网关的实例列表。")]),a._v(" "),t("h2",{attrs:{id:"网关缓存列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#网关缓存列表"}},[a._v("#")]),a._v(" 网关缓存列表")]),a._v(" "),t("p",[a._v("点击 查看 按钮后弹出网关详情页面,该页面显示所选网关实例的接口缓存列表,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_list_query_1.png",alt:"manager_aggregate_gateway_cache_list_query_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_list_query_2.png",alt:"manager_aggregate_gateway_cache_list_query_2"}})]),a._v(" "),t("h2",{attrs:{id:"网关缓存详情"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#网关缓存详情"}},[a._v("#")]),a._v(" 网关缓存详情")]),a._v(" "),t("p",[a._v("点击 查看 按钮弹出所选接口的配置详情,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_detail_1.png",alt:"manager_aggregate_gateway_cache_detail_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_detail_2.png",alt:"manager_aggregate_gateway_cache_detail_2"}})])])}),[],!1,null,null,null);e.default=r.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{368:function(a,e,t){"use strict";t.r(e);var _=t(42),r=Object(_.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),t("p",[a._v("网关缓存功能用于查询Fizz网关实例本地缓存的已发布接口信息,可以快速的了解当前网关实例生效的全部接口,同时通过查看后台接口发布版本号与网关实例本地缓存的接口版本号是否一致可以排查接口缓存问题,下面介绍网关缓存功能的操作。")]),a._v(" "),t("h2",{attrs:{id:"网关列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#网关列表"}},[a._v("#")]),a._v(" 网关列表")]),a._v(" "),t("p",[a._v("菜单位置:服务编排 > 网关缓存。点击菜单后进入网关列表页面,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_list_query.png",alt:"manager_aggregate_gateway_list_query"}})]),a._v(" "),t("p",[a._v("Fizz网关与后台注册到同一个eureka注册中心,后台通过eureka获取网关的实例列表。")]),a._v(" "),t("h2",{attrs:{id:"网关缓存列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#网关缓存列表"}},[a._v("#")]),a._v(" 网关缓存列表")]),a._v(" "),t("p",[a._v("点击 查看 按钮后弹出网关详情页面,该页面显示所选网关实例的接口缓存列表,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_list_query_1.png",alt:"manager_aggregate_gateway_cache_list_query_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_list_query_2.png",alt:"manager_aggregate_gateway_cache_list_query_2"}})]),a._v(" "),t("h2",{attrs:{id:"网关缓存详情"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#网关缓存详情"}},[a._v("#")]),a._v(" 网关缓存详情")]),a._v(" "),t("p",[a._v("点击 查看 按钮弹出所选接口的配置详情,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_detail_1.png",alt:"manager_aggregate_gateway_cache_detail_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_aggregate_gateway_cache_detail_2.png",alt:"manager_aggregate_gateway_cache_detail_2"}})])])}),[],!1,null,null,null);e.default=r.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{368:function(_,a,t){"use strict";t.r(a);var r=t(42),e=Object(r.a)({},(function(){var _=this,a=_.$createElement,t=_._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[_._v("#")]),_._v(" 概述")]),_._v(" "),t("p",[_._v("网关分组功能用于维护分组元数据,将网关实例IP与分组关联,通过为不同的分组配置不同的路由策略,从而实现网关的分组管理。")]),_._v(" "),t("h2",{attrs:{id:"分组示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#分组示例"}},[_._v("#")]),_._v(" 分组示例")]),_._v(" "),t("p",[_._v("我们的线上业务涉及To C(个人用户)、To B(企业)、To T(第三方),对于不同业务会有对应的机器接受请求访问,不同的业务需要有各自的路由策略,因此进行了如下的分组划分。")]),_._v(" "),t("table",[t("thead",[t("tr",[t("th",[_._v("分组ID")]),_._v(" "),t("th",[_._v("分组名称")]),_._v(" "),t("th",[_._v("描述")])])]),_._v(" "),t("tbody",[t("tr",[t("td",[_._v("default")]),_._v(" "),t("td",[_._v("默认分组")]),_._v(" "),t("td",[_._v("默认分组是后台默认创建的分组,不用指定IP,不属于其它分组的机器都归到默认分组,默认分组不可修改或删除")])]),_._v(" "),t("tr",[t("td",[_._v("c")]),_._v(" "),t("td",[_._v("2c分组")]),_._v(" "),t("td",[_._v("只接受面向个人用户的请求")])]),_._v(" "),t("tr",[t("td",[_._v("b")]),_._v(" "),t("td",[_._v("2b分组")]),_._v(" "),t("td",[_._v("只接受面向企业的请求")])]),_._v(" "),t("tr",[t("td",[_._v("t")]),_._v(" "),t("td",[_._v("面向第三方的分组")]),_._v(" "),t("td",[_._v("只接受面向第三方的请求")])])])]),_._v(" "),t("p",[_._v("下面介绍网关分组功能的操作。")]),_._v(" "),t("h2",{attrs:{id:"分组列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#分组列表"}},[_._v("#")]),_._v(" 分组列表")]),_._v(" "),t("p",[_._v("菜单位置:网关管理 > 网关分组。点击菜单后进入分组列表页面,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_list_query.png",alt:"manager_gateway_group_list_query"}})]),_._v(" "),t("h2",{attrs:{id:"新增分组"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#新增分组"}},[_._v("#")]),_._v(" 新增分组")]),_._v(" "),t("p",[_._v("点击 新增 按钮弹出新增窗口,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_add_1.png",alt:"manager_gateway_group_add_1"}})]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_add_2.png",alt:"manager_gateway_group_add_2"}})]),_._v(" "),t("p",[_._v("分组ID:分组的唯一标识,长度不能超过32个字符,必填;")]),_._v(" "),t("p",[_._v("分组名称:分组的名称,用于在分组选项时展示,长度不能超过32个字符,必填;")]),_._v(" "),t("p",[_._v("网关实例IP:Fizz网关集群内的机器IP地址,多个IP地址使用逗号分隔。")]),_._v(" "),t("h2",{attrs:{id:"编辑分组"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编辑分组"}},[_._v("#")]),_._v(" 编辑分组")]),_._v(" "),t("p",[_._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_edit_1.png",alt:"manager_gateway_group_edit_1"}})]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_edit_2.png",alt:"manager_gateway_group_edit_2"}})]),_._v(" "),t("h2",{attrs:{id:"删除分组"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#删除分组"}},[_._v("#")]),_._v(" 删除分组")]),_._v(" "),t("p",[_._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_delete_1.png",alt:"manager_gateway_group_delete_1"}})]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_delete_2.png",alt:"manager_gateway_group_delete_2"}})]),_._v(" "),t("p",[_._v("点击 确定 按钮后删除网关分组,如果网关分组存在关联的路由配置时,需要将关联的路由配置全部删除后才能删除分组。")])])}),[],!1,null,null,null);a.default=e.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{367:function(_,a,t){"use strict";t.r(a);var r=t(42),e=Object(r.a)({},(function(){var _=this,a=_.$createElement,t=_._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[_._v("#")]),_._v(" 概述")]),_._v(" "),t("p",[_._v("网关分组功能用于维护分组元数据,将网关实例IP与分组关联,通过为不同的分组配置不同的路由策略,从而实现网关的分组管理。")]),_._v(" "),t("h2",{attrs:{id:"分组示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#分组示例"}},[_._v("#")]),_._v(" 分组示例")]),_._v(" "),t("p",[_._v("我们的线上业务涉及To C(个人用户)、To B(企业)、To T(第三方),对于不同业务会有对应的机器接受请求访问,不同的业务需要有各自的路由策略,因此进行了如下的分组划分。")]),_._v(" "),t("table",[t("thead",[t("tr",[t("th",[_._v("分组ID")]),_._v(" "),t("th",[_._v("分组名称")]),_._v(" "),t("th",[_._v("描述")])])]),_._v(" "),t("tbody",[t("tr",[t("td",[_._v("default")]),_._v(" "),t("td",[_._v("默认分组")]),_._v(" "),t("td",[_._v("默认分组是后台默认创建的分组,不用指定IP,不属于其它分组的机器都归到默认分组,默认分组不可修改或删除")])]),_._v(" "),t("tr",[t("td",[_._v("c")]),_._v(" "),t("td",[_._v("2c分组")]),_._v(" "),t("td",[_._v("只接受面向个人用户的请求")])]),_._v(" "),t("tr",[t("td",[_._v("b")]),_._v(" "),t("td",[_._v("2b分组")]),_._v(" "),t("td",[_._v("只接受面向企业的请求")])]),_._v(" "),t("tr",[t("td",[_._v("t")]),_._v(" "),t("td",[_._v("面向第三方的分组")]),_._v(" "),t("td",[_._v("只接受面向第三方的请求")])])])]),_._v(" "),t("p",[_._v("下面介绍网关分组功能的操作。")]),_._v(" "),t("h2",{attrs:{id:"分组列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#分组列表"}},[_._v("#")]),_._v(" 分组列表")]),_._v(" "),t("p",[_._v("菜单位置:网关管理 > 网关分组。点击菜单后进入分组列表页面,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_list_query.png",alt:"manager_gateway_group_list_query"}})]),_._v(" "),t("h2",{attrs:{id:"新增分组"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#新增分组"}},[_._v("#")]),_._v(" 新增分组")]),_._v(" "),t("p",[_._v("点击 新增 按钮弹出新增窗口,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_add_1.png",alt:"manager_gateway_group_add_1"}})]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_add_2.png",alt:"manager_gateway_group_add_2"}})]),_._v(" "),t("p",[_._v("分组ID:分组的唯一标识,长度不能超过32个字符,必填;")]),_._v(" "),t("p",[_._v("分组名称:分组的名称,用于在分组选项时展示,长度不能超过32个字符,必填;")]),_._v(" "),t("p",[_._v("网关实例IP:Fizz网关集群内的机器IP地址,多个IP地址使用逗号分隔。")]),_._v(" "),t("h2",{attrs:{id:"编辑分组"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编辑分组"}},[_._v("#")]),_._v(" 编辑分组")]),_._v(" "),t("p",[_._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_edit_1.png",alt:"manager_gateway_group_edit_1"}})]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_edit_2.png",alt:"manager_gateway_group_edit_2"}})]),_._v(" "),t("h2",{attrs:{id:"删除分组"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#删除分组"}},[_._v("#")]),_._v(" 删除分组")]),_._v(" "),t("p",[_._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_delete_1.png",alt:"manager_gateway_group_delete_1"}})]),_._v(" "),t("p",[t("img",{attrs:{src:"/manager_gateway_group_delete_2.png",alt:"manager_gateway_group_delete_2"}})]),_._v(" "),t("p",[_._v("点击 确定 按钮后删除网关分组,如果网关分组存在关联的路由配置时,需要将关联的路由配置全部删除后才能删除分组。")])])}),[],!1,null,null,null);a.default=e.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{369:function(v,_,i){"use strict";i.r(_);var a=i(42),t=Object(a.a)({},(function(){var v=this,_=v.$createElement,i=v._self._c||_;return i("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[i("h2",{attrs:{id:"概述"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[v._v("#")]),v._v(" 概述")]),v._v(" "),i("p",[v._v("Fizz管理后台是Fizz网关的配套系统,基于Java、Vue开发,通过界面对Fizz网关集群进行各项配置。")]),v._v(" "),i("h2",{attrs:{id:"功能"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#功能"}},[v._v("#")]),v._v(" 功能")]),v._v(" "),i("p",[v._v("Fizz管理后台包含如下功能:")]),v._v(" "),i("ul",[i("li",[v._v("网关管理\n"),i("ul",[i("li",[v._v("网关分组:对Fizz网关集群内的机器进行逻辑上的分组,针对不同的分组可配置不同的路由策略。")]),v._v(" "),i("li",[v._v("插件管理:维护插件元数据,定义路由级别的自定义属性、插件级别的自定义配置信息。")]),v._v(" "),i("li",[v._v("appID管理:配置应用鉴权信息,可配置是否启用签名、是否启用IP白名单,AppID级别的自定义配置供自定义插件使用。")]),v._v(" "),i("li",[v._v("路由管理:配置服务或API路由规则,支持按请求路径转发、转发到指定后端服务两种转发规则,支持插件配置。")]),v._v(" "),i("li",[v._v("接口统计:Fizz网关接口访问统计功能,以图表的形式展示指定时间段内每日的接口总数、访问次数,可查看接口的历史访问总次数以及最近请求时间。")])])]),v._v(" "),i("li",[v._v("服务编排\n"),i("ul",[i("li",[v._v("服务管理:聚合接口归属于服务,服务通过该功能维护,创建人自动获得服务权限,服务权限可分配,拥有权限的用户才能操作对应的接口列表。")]),v._v(" "),i("li",[v._v("接口列表:基于现有的业务微服务使用在线配置的方式快速的生成一个聚合接口,同时提供在线测试功能,发布历史版本查看。")]),v._v(" "),i("li",[v._v("操作日志:查看聚合接口的新增、修改、发布、下线、回滚、删除操作日志。")]),v._v(" "),i("li",[v._v("网关缓存:查看Fizz网关当前在线的实例列表以及对应实例本地缓存的已发布接口信息。")])])]),v._v(" "),i("li",[v._v("发布申请\n"),i("ul",[i("li",[v._v("我的申请:提交接口发布|下线申请,审核通过后可以对相关接口执行发布|下线操作。")]),v._v(" "),i("li",[v._v("待审核:审核发布|下线申请。")]),v._v(" "),i("li",[v._v("审核日志:查看审核发布|下线申请操作日志。")])])]),v._v(" "),i("li",[v._v("权限管理\n"),i("ul",[i("li",[v._v("角色管理:维护角色数据,为角色分配权限。")])])]),v._v(" "),i("li",[v._v("系统管理\n"),i("ul",[i("li",[v._v("用户管理:维护用户数据,为用户分配角色。")])])])]),v._v(" "),i("h2",{attrs:{id:"界面"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#界面"}},[v._v("#")]),v._v(" 界面")]),v._v(" "),i("p",[i("img",{attrs:{src:"/manager_overview_1.png",alt:"manager_overview_1"}})]),v._v(" "),i("p",[i("img",{attrs:{src:"/manager_overview_2.png",alt:"manager_overview_2"}})])])}),[],!1,null,null,null);_.default=t.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{370:function(v,_,i){"use strict";i.r(_);var a=i(42),t=Object(a.a)({},(function(){var v=this,_=v.$createElement,i=v._self._c||_;return i("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[i("h2",{attrs:{id:"概述"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[v._v("#")]),v._v(" 概述")]),v._v(" "),i("p",[v._v("Fizz管理后台是Fizz网关的配套系统,基于Java、Vue开发,通过界面对Fizz网关集群进行各项配置。")]),v._v(" "),i("h2",{attrs:{id:"功能"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#功能"}},[v._v("#")]),v._v(" 功能")]),v._v(" "),i("p",[v._v("Fizz管理后台包含如下功能:")]),v._v(" "),i("ul",[i("li",[v._v("网关管理\n"),i("ul",[i("li",[v._v("网关分组:对Fizz网关集群内的机器进行逻辑上的分组,针对不同的分组可配置不同的路由策略。")]),v._v(" "),i("li",[v._v("插件管理:维护插件元数据,定义路由级别的自定义属性、插件级别的自定义配置信息。")]),v._v(" "),i("li",[v._v("appID管理:配置应用鉴权信息,可配置是否启用签名、是否启用IP白名单,AppID级别的自定义配置供自定义插件使用。")]),v._v(" "),i("li",[v._v("路由管理:配置服务或API路由规则,支持按请求路径转发、转发到指定后端服务两种转发规则,支持插件配置。")]),v._v(" "),i("li",[v._v("接口统计:Fizz网关接口访问统计功能,以图表的形式展示指定时间段内每日的接口总数、访问次数,可查看接口的历史访问总次数以及最近请求时间。")])])]),v._v(" "),i("li",[v._v("服务编排\n"),i("ul",[i("li",[v._v("服务管理:聚合接口归属于服务,服务通过该功能维护,创建人自动获得服务权限,服务权限可分配,拥有权限的用户才能操作对应的接口列表。")]),v._v(" "),i("li",[v._v("接口列表:基于现有的业务微服务使用在线配置的方式快速的生成一个聚合接口,同时提供在线测试功能,发布历史版本查看。")]),v._v(" "),i("li",[v._v("操作日志:查看聚合接口的新增、修改、发布、下线、回滚、删除操作日志。")]),v._v(" "),i("li",[v._v("网关缓存:查看Fizz网关当前在线的实例列表以及对应实例本地缓存的已发布接口信息。")])])]),v._v(" "),i("li",[v._v("发布申请\n"),i("ul",[i("li",[v._v("我的申请:提交接口发布|下线申请,审核通过后可以对相关接口执行发布|下线操作。")]),v._v(" "),i("li",[v._v("待审核:审核发布|下线申请。")]),v._v(" "),i("li",[v._v("审核日志:查看审核发布|下线申请操作日志。")])])]),v._v(" "),i("li",[v._v("权限管理\n"),i("ul",[i("li",[v._v("角色管理:维护角色数据,为角色分配权限。")])])]),v._v(" "),i("li",[v._v("系统管理\n"),i("ul",[i("li",[v._v("用户管理:维护用户数据,为用户分配角色。")])])])]),v._v(" "),i("h2",{attrs:{id:"界面"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#界面"}},[v._v("#")]),v._v(" 界面")]),v._v(" "),i("p",[i("img",{attrs:{src:"/manager_overview_1.png",alt:"manager_overview_1"}})]),v._v(" "),i("p",[i("img",{attrs:{src:"/manager_overview_2.png",alt:"manager_overview_2"}})])])}),[],!1,null,null,null);_.default=t.exports}}]);
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{371:function(a,r,t){"use strict";t.r(r);var _=t(42),e=Object(_.a)({},(function(){var a=this,r=a.$createElement,t=a._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),t("p",[a._v("角色管理功能维护角色元数据,通过配置角色拥有的菜单资源,限制用户只能操作拥有的角色对应的菜单资源,下面介绍角色管理功能的操作。")]),a._v(" "),t("h2",{attrs:{id:"角色列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#角色列表"}},[a._v("#")]),a._v(" 角色列表")]),a._v(" "),t("p",[a._v("菜单位置:权限管理 > 角色管理。点击菜单后进入角色列表页面,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_list_query.png",alt:"manager_role_list_query"}})]),a._v(" "),t("h2",{attrs:{id:"添加角色"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#添加角色"}},[a._v("#")]),a._v(" 添加角色")]),a._v(" "),t("p",[a._v("点击 新增 按钮弹出新增窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_add_1.png",alt:"manager_role_add_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_add_2.png",alt:"manager_role_add_2"}})]),a._v(" "),t("h2",{attrs:{id:"权限设置"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#权限设置"}},[a._v("#")]),a._v(" 权限设置")]),a._v(" "),t("p",[a._v("勾选需要分配权限的角色,点击 权限设置 按钮弹出角色权限配置窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_auth_1.png",alt:"manager_role_auth_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_auth_2.png",alt:"manager_role_auth_2"}})]),a._v(" "),t("p",[a._v("勾选菜单后点击 确定 按钮确认给角色分配菜单权限。")]),a._v(" "),t("h2",{attrs:{id:"编辑角色"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编辑角色"}},[a._v("#")]),a._v(" 编辑角色")]),a._v(" "),t("p",[a._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_edit_1.png",alt:"manager_role_edit_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_edit_2.png",alt:"manager_role_edit_2"}})]),a._v(" "),t("h2",{attrs:{id:"删除角色"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#删除角色"}},[a._v("#")]),a._v(" 删除角色")]),a._v(" "),t("p",[a._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_delete_1.png",alt:"manager_role_delete_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_delete_2.png",alt:"manager_role_delete_2"}})]),a._v(" "),t("p",[a._v("点击 确定 按钮后删除角色。")])])}),[],!1,null,null,null);r.default=e.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{369:function(a,r,t){"use strict";t.r(r);var _=t(42),e=Object(_.a)({},(function(){var a=this,r=a.$createElement,t=a._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h2",{attrs:{id:"概述"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),t("p",[a._v("角色管理功能维护角色元数据,通过配置角色拥有的菜单资源,限制用户只能操作拥有的角色对应的菜单资源,下面介绍角色管理功能的操作。")]),a._v(" "),t("h2",{attrs:{id:"角色列表"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#角色列表"}},[a._v("#")]),a._v(" 角色列表")]),a._v(" "),t("p",[a._v("菜单位置:权限管理 > 角色管理。点击菜单后进入角色列表页面,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_list_query.png",alt:"manager_role_list_query"}})]),a._v(" "),t("h2",{attrs:{id:"添加角色"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#添加角色"}},[a._v("#")]),a._v(" 添加角色")]),a._v(" "),t("p",[a._v("点击 新增 按钮弹出新增窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_add_1.png",alt:"manager_role_add_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_add_2.png",alt:"manager_role_add_2"}})]),a._v(" "),t("h2",{attrs:{id:"权限设置"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#权限设置"}},[a._v("#")]),a._v(" 权限设置")]),a._v(" "),t("p",[a._v("勾选需要分配权限的角色,点击 权限设置 按钮弹出角色权限配置窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_auth_1.png",alt:"manager_role_auth_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_auth_2.png",alt:"manager_role_auth_2"}})]),a._v(" "),t("p",[a._v("勾选菜单后点击 确定 按钮确认给角色分配菜单权限。")]),a._v(" "),t("h2",{attrs:{id:"编辑角色"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编辑角色"}},[a._v("#")]),a._v(" 编辑角色")]),a._v(" "),t("p",[a._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_edit_1.png",alt:"manager_role_edit_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_edit_2.png",alt:"manager_role_edit_2"}})]),a._v(" "),t("h2",{attrs:{id:"删除角色"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#删除角色"}},[a._v("#")]),a._v(" 删除角色")]),a._v(" "),t("p",[a._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_delete_1.png",alt:"manager_role_delete_1"}})]),a._v(" "),t("p",[t("img",{attrs:{src:"/manager_role_delete_2.png",alt:"manager_role_delete_2"}})]),a._v(" "),t("p",[a._v("点击 确定 按钮后删除角色。")])])}),[],!1,null,null,null);r.default=e.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{372:function(a,e,_){"use strict";_.r(e);var r=_(42),t=Object(r.a)({},(function(){var a=this,e=a.$createElement,_=a._self._c||e;return _("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[_("h2",{attrs:{id:"概述"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),_("p",[a._v("服务管理功能维护服务元数据。服务编排中的服务是一个逻辑上的概念,用于对聚合接口的归类以及权限的分配。Fizz网关聚合接口的请求路径格式为 http://{ip}:{port}/proxy/{service}{apiPath},服务对应{service}段。")]),a._v(" "),_("h2",{attrs:{id:"服务列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#服务列表"}},[a._v("#")]),a._v(" 服务列表")]),a._v(" "),_("p",[a._v("菜单位置:服务编排 > 服务管理。点击菜单后进入服务列表页面,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_list_query.png",alt:"manager_service_list_query"}})]),a._v(" "),_("h2",{attrs:{id:"新增服务"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#新增服务"}},[a._v("#")]),a._v(" 新增服务")]),a._v(" "),_("p",[a._v("点击 新增 按钮弹出新增窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_add_1.png",alt:"manager_service_add_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_add_2.png",alt:"manager_service_add_2"}})]),a._v(" "),_("p",[a._v("服务 ID:服务唯一标识,对应Fizz网关聚合接口请求路径(格式为 http://{ip}:{port}/proxy/{service}{apiPath})的{service}段,长度不能超过200个字符,必填;")]),a._v(" "),_("p",[a._v("服务名:服务名称,用于展示或者选项使用,必填;")]),a._v(" "),_("p",[a._v("团队:团队名称,长度不能超过200个字符;")]),a._v(" "),_("p",[a._v("负责人:负责人名称,长度不能超过200个字符;")]),a._v(" "),_("p",[a._v("描述:服务描述,长度不能超过2000个字符。")]),a._v(" "),_("h2",{attrs:{id:"编辑服务"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#编辑服务"}},[a._v("#")]),a._v(" 编辑服务")]),a._v(" "),_("p",[a._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_edit_1.png",alt:"manager_service_edit_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_edit_2.png",alt:"manager_service_edit_2"}})]),a._v(" "),_("h2",{attrs:{id:"删除服务"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#删除服务"}},[a._v("#")]),a._v(" 删除服务")]),a._v(" "),_("p",[a._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_delete_1.png",alt:"manager_service_delete_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_delete_2.png",alt:"manager_service_delete_2"}})]),a._v(" "),_("p",[a._v("点击 确定 按钮后删除服务,如果服务存在关联的聚合接口时,需要将关联的聚合接口全部删除后才能删除服务。")]),a._v(" "),_("h2",{attrs:{id:"服务权限分配"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#服务权限分配"}},[a._v("#")]),a._v(" 服务权限分配")]),a._v(" "),_("p",[a._v("点击 权限 按钮弹出权限配置窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_auth_1.png",alt:"manager_service_auth_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_auth_2.png",alt:"manager_service_auth_2"}})]),a._v(" "),_("p",[a._v("服务创建人自动获得服务权限,服务权限可分配,拥有权限的用户才能操作对应的接口列表。")])])}),[],!1,null,null,null);e.default=t.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{375:function(a,e,_){"use strict";_.r(e);var r=_(42),t=Object(r.a)({},(function(){var a=this,e=a.$createElement,_=a._self._c||e;return _("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[_("h2",{attrs:{id:"概述"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),_("p",[a._v("服务管理功能维护服务元数据。服务编排中的服务是一个逻辑上的概念,用于对聚合接口的归类以及权限的分配。Fizz网关聚合接口的请求路径格式为 http://{ip}:{port}/proxy/{service}{apiPath},服务对应{service}段。")]),a._v(" "),_("h2",{attrs:{id:"服务列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#服务列表"}},[a._v("#")]),a._v(" 服务列表")]),a._v(" "),_("p",[a._v("菜单位置:服务编排 > 服务管理。点击菜单后进入服务列表页面,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_list_query.png",alt:"manager_service_list_query"}})]),a._v(" "),_("h2",{attrs:{id:"新增服务"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#新增服务"}},[a._v("#")]),a._v(" 新增服务")]),a._v(" "),_("p",[a._v("点击 新增 按钮弹出新增窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_add_1.png",alt:"manager_service_add_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_add_2.png",alt:"manager_service_add_2"}})]),a._v(" "),_("p",[a._v("服务 ID:服务唯一标识,对应Fizz网关聚合接口请求路径(格式为 http://{ip}:{port}/proxy/{service}{apiPath})的{service}段,长度不能超过200个字符,必填;")]),a._v(" "),_("p",[a._v("服务名:服务名称,用于展示或者选项使用,必填;")]),a._v(" "),_("p",[a._v("团队:团队名称,长度不能超过200个字符;")]),a._v(" "),_("p",[a._v("负责人:负责人名称,长度不能超过200个字符;")]),a._v(" "),_("p",[a._v("描述:服务描述,长度不能超过2000个字符。")]),a._v(" "),_("h2",{attrs:{id:"编辑服务"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#编辑服务"}},[a._v("#")]),a._v(" 编辑服务")]),a._v(" "),_("p",[a._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_edit_1.png",alt:"manager_service_edit_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_edit_2.png",alt:"manager_service_edit_2"}})]),a._v(" "),_("h2",{attrs:{id:"删除服务"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#删除服务"}},[a._v("#")]),a._v(" 删除服务")]),a._v(" "),_("p",[a._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_delete_1.png",alt:"manager_service_delete_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_delete_2.png",alt:"manager_service_delete_2"}})]),a._v(" "),_("p",[a._v("点击 确定 按钮后删除服务,如果服务存在关联的聚合接口时,需要将关联的聚合接口全部删除后才能删除服务。")]),a._v(" "),_("h2",{attrs:{id:"服务权限分配"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#服务权限分配"}},[a._v("#")]),a._v(" 服务权限分配")]),a._v(" "),_("p",[a._v("点击 权限 按钮弹出权限配置窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_auth_1.png",alt:"manager_service_auth_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_service_auth_2.png",alt:"manager_service_auth_2"}})]),a._v(" "),_("p",[a._v("服务创建人自动获得服务权限,服务权限可分配,拥有权限的用户才能操作对应的接口列表。")])])}),[],!1,null,null,null);e.default=t.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{373:function(t,a,s){"use strict";s.r(a);var _=s(42),r=Object(_.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"概述"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[t._v("#")]),t._v(" 概述")]),t._v(" "),s("p",[t._v("Fizz网关会将访问请求数据(IP地址、网关分组、服务、应用、请求方法、API Path、请求时间)推送到Kafka中,管理后台消费Kafka消息统计接口访问数据。")]),t._v(" "),s("p",[t._v("接口统计功能以图表的形式展示指定时间段内每日的接口总数、访问次数,可查看接口的历史访问总次数以及最近请求时间。")]),t._v(" "),s("h2",{attrs:{id:"接口访问统计"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接口访问统计"}},[t._v("#")]),t._v(" 接口访问统计")]),t._v(" "),s("p",[t._v("菜单位置:网关管理 > 接口统计。点击菜单后进入接口统计页面,如图所示。")]),t._v(" "),s("p",[s("img",{attrs:{src:"/manager_source_statistics_1.png",alt:"manager_source_statistics_1.png"}})]),t._v(" "),s("p",[t._v("今天接口总数:从0时到当前时刻被调用不同接口的总数;")]),t._v(" "),s("p",[t._v("今天访问次数:从0时到当前时刻访问请求的总次数。")]),t._v(" "),s("p",[t._v("接口总数图表:显示指定时间段内每日被调用不同接口的总数曲线;")]),t._v(" "),s("p",[t._v("访问次数图表:显示指定时间段内每日访问请求的总次数曲线。")]),t._v(" "),s("h2",{attrs:{id:"请求统计"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#请求统计"}},[t._v("#")]),t._v(" 请求统计")]),t._v(" "),s("p",[t._v("接口统计界面下部为请求统计列表,如图所示。")]),t._v(" "),s("p",[s("img",{attrs:{src:"/manager_source_statistics_2.png",alt:"manager_source_statistics_2.png"}})]),t._v(" "),s("p",[t._v("来源IP:网关请求的实际入口IP地址;")]),t._v(" "),s("p",[t._v("请求次数:( 唯一[来源IP、网关分组、服务名、请求方法、appID、API Path])历史总请求次数;")]),t._v(" "),s("p",[t._v("最近请求时间:( 唯一[来源IP、网关分组、服务名、请求方法、appID、API Path])最近一次调用时间。")])])}),[],!1,null,null,null);a.default=r.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{374:function(t,a,s){"use strict";s.r(a);var _=s(42),r=Object(_.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"概述"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[t._v("#")]),t._v(" 概述")]),t._v(" "),s("p",[t._v("Fizz网关会将访问请求数据(IP地址、网关分组、服务、应用、请求方法、API Path、请求时间)推送到Kafka中,管理后台消费Kafka消息统计接口访问数据。")]),t._v(" "),s("p",[t._v("接口统计功能以图表的形式展示指定时间段内每日的接口总数、访问次数,可查看接口的历史访问总次数以及最近请求时间。")]),t._v(" "),s("h2",{attrs:{id:"接口访问统计"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接口访问统计"}},[t._v("#")]),t._v(" 接口访问统计")]),t._v(" "),s("p",[t._v("菜单位置:网关管理 > 接口统计。点击菜单后进入接口统计页面,如图所示。")]),t._v(" "),s("p",[s("img",{attrs:{src:"/manager_source_statistics_1.png",alt:"manager_source_statistics_1.png"}})]),t._v(" "),s("p",[t._v("今天接口总数:从0时到当前时刻被调用不同接口的总数;")]),t._v(" "),s("p",[t._v("今天访问次数:从0时到当前时刻访问请求的总次数。")]),t._v(" "),s("p",[t._v("接口总数图表:显示指定时间段内每日被调用不同接口的总数曲线;")]),t._v(" "),s("p",[t._v("访问次数图表:显示指定时间段内每日访问请求的总次数曲线。")]),t._v(" "),s("h2",{attrs:{id:"请求统计"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#请求统计"}},[t._v("#")]),t._v(" 请求统计")]),t._v(" "),s("p",[t._v("接口统计界面下部为请求统计列表,如图所示。")]),t._v(" "),s("p",[s("img",{attrs:{src:"/manager_source_statistics_2.png",alt:"manager_source_statistics_2.png"}})]),t._v(" "),s("p",[t._v("来源IP:网关请求的实际入口IP地址;")]),t._v(" "),s("p",[t._v("请求次数:( 唯一[来源IP、网关分组、服务名、请求方法、appID、API Path])历史总请求次数;")]),t._v(" "),s("p",[t._v("最近请求时间:( 唯一[来源IP、网关分组、服务名、请求方法、appID、API Path])最近一次调用时间。")])])}),[],!1,null,null,null);a.default=r.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{374:function(a,r,_){"use strict";_.r(r);var t=_(42),e=Object(t.a)({},(function(){var a=this,r=a.$createElement,_=a._self._c||r;return _("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[_("h2",{attrs:{id:"概述"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),_("p",[a._v("用户管理功能用于维护用户元数据,包括用户信息维护、密码维护、角色配置。")]),a._v(" "),_("h2",{attrs:{id:"用户列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#用户列表"}},[a._v("#")]),a._v(" 用户列表")]),a._v(" "),_("p",[a._v("菜单位置:系统管理 > 用户管理。点击菜单后进入用户列表页面,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_list_query.png",alt:"manager_user_list_query"}})]),a._v(" "),_("h2",{attrs:{id:"添加用户"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#添加用户"}},[a._v("#")]),a._v(" 添加用户")]),a._v(" "),_("p",[a._v("点击 新增 按钮弹出新增窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_add_1.png",alt:"manager_user_add_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_add_2.png",alt:"manager_user_add_2"}})]),a._v(" "),_("p",[a._v("电子邮箱:用户用于接收电子邮件的邮箱地址,后台涉及邮件发送业务使用该字段设置的邮箱地址来进行邮箱发送。")]),a._v(" "),_("h2",{attrs:{id:"重置密码"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#重置密码"}},[a._v("#")]),a._v(" 重置密码")]),a._v(" "),_("p",[a._v("勾选用户后点击 密码重置 按钮可为用户重置密码。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_reset_password_1.png",alt:"manager_user_reset_password_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_reset_password_2.png",alt:"manager_user_reset_password_2"}})]),a._v(" "),_("p",[a._v("重置后的默认密码为"),_("code",[a._v("AsdF1234!")]),a._v("。")]),a._v(" "),_("h2",{attrs:{id:"编辑用户"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#编辑用户"}},[a._v("#")]),a._v(" 编辑用户")]),a._v(" "),_("p",[a._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_edit_1.png",alt:"manager_user_edit_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_edit_2.png",alt:"manager_user_edit_2"}})]),a._v(" "),_("h2",{attrs:{id:"删除用户"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#删除用户"}},[a._v("#")]),a._v(" 删除用户")]),a._v(" "),_("p",[a._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_delete_1.png",alt:"manager_user_delete_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_delete_2.png",alt:"manager_user_delete_2"}})])])}),[],!1,null,null,null);r.default=e.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{371:function(a,r,_){"use strict";_.r(r);var t=_(42),e=Object(t.a)({},(function(){var a=this,r=a.$createElement,_=a._self._c||r;return _("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[_("h2",{attrs:{id:"概述"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#概述"}},[a._v("#")]),a._v(" 概述")]),a._v(" "),_("p",[a._v("用户管理功能用于维护用户元数据,包括用户信息维护、密码维护、角色配置。")]),a._v(" "),_("h2",{attrs:{id:"用户列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#用户列表"}},[a._v("#")]),a._v(" 用户列表")]),a._v(" "),_("p",[a._v("菜单位置:系统管理 > 用户管理。点击菜单后进入用户列表页面,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_list_query.png",alt:"manager_user_list_query"}})]),a._v(" "),_("h2",{attrs:{id:"添加用户"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#添加用户"}},[a._v("#")]),a._v(" 添加用户")]),a._v(" "),_("p",[a._v("点击 新增 按钮弹出新增窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_add_1.png",alt:"manager_user_add_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_add_2.png",alt:"manager_user_add_2"}})]),a._v(" "),_("p",[a._v("电子邮箱:用户用于接收电子邮件的邮箱地址,后台涉及邮件发送业务使用该字段设置的邮箱地址来进行邮箱发送。")]),a._v(" "),_("h2",{attrs:{id:"重置密码"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#重置密码"}},[a._v("#")]),a._v(" 重置密码")]),a._v(" "),_("p",[a._v("勾选用户后点击 密码重置 按钮可为用户重置密码。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_reset_password_1.png",alt:"manager_user_reset_password_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_reset_password_2.png",alt:"manager_user_reset_password_2"}})]),a._v(" "),_("p",[a._v("重置后的默认密码为"),_("code",[a._v("AsdF1234!")]),a._v("。")]),a._v(" "),_("h2",{attrs:{id:"编辑用户"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#编辑用户"}},[a._v("#")]),a._v(" 编辑用户")]),a._v(" "),_("p",[a._v("点击 编辑 按钮弹出编辑窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_edit_1.png",alt:"manager_user_edit_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_edit_2.png",alt:"manager_user_edit_2"}})]),a._v(" "),_("h2",{attrs:{id:"删除用户"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#删除用户"}},[a._v("#")]),a._v(" 删除用户")]),a._v(" "),_("p",[a._v("点击 删除 按钮弹出删除确认窗口,如图所示。")]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_delete_1.png",alt:"manager_user_delete_1"}})]),a._v(" "),_("p",[_("img",{attrs:{src:"/manager_user_delete_2.png",alt:"manager_user_delete_2"}})])])}),[],!1,null,null,null);r.default=e.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{375:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"路由转发介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#路由转发介绍"}},[t._v("#")]),t._v(" 路由转发介绍")]),t._v(" "),s("p",[t._v("路由转发也叫反向代理,为内部微服务提供统一的对外入口。支持以下功能:")]),t._v(" "),s("ul",[s("li",[t._v("支持服务注册与发现")]),t._v(" "),s("li",[t._v("支持负载均衡")]),t._v(" "),s("li",[t._v("支持黑白名单机制")]),t._v(" "),s("li",[t._v("支持配置插件")])]),t._v(" "),s("h2",{attrs:{id:"接入路由转发"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接入路由转发"}},[t._v("#")]),t._v(" 接入路由转发")]),t._v(" "),s("ul",[s("li",[t._v("前提条件:接入Eureka注册中心")]),t._v(" "),s("li",[t._v("开通白名单,接入注册中心的服务默认不对公网开放 (白名单在配置文件里配置serviceWhiteList)")]),t._v(" "),s("li",[t._v("配置访问权限 (管理后台-接口代理-API查询)")])])])}),[],!1,null,null,null);e.default=r.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{373:function(t,e,s){"use strict";s.r(e);var a=s(42),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"路由转发介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#路由转发介绍"}},[t._v("#")]),t._v(" 路由转发介绍")]),t._v(" "),s("p",[t._v("路由转发也叫反向代理,为内部微服务提供统一的对外入口。支持以下功能:")]),t._v(" "),s("ul",[s("li",[t._v("支持服务注册与发现")]),t._v(" "),s("li",[t._v("支持负载均衡")]),t._v(" "),s("li",[t._v("支持黑白名单机制")]),t._v(" "),s("li",[t._v("支持配置插件")])]),t._v(" "),s("h2",{attrs:{id:"接入路由转发"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#接入路由转发"}},[t._v("#")]),t._v(" 接入路由转发")]),t._v(" "),s("ul",[s("li",[t._v("前提条件:接入Eureka注册中心")]),t._v(" "),s("li",[t._v("开通白名单,接入注册中心的服务默认不对公网开放 (白名单在配置文件里配置serviceWhiteList)")]),t._v(" "),s("li",[t._v("配置访问权限 (管理后台-接口代理-API查询)")])])])}),[],!1,null,null,null);e.default=r.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{352:function(t,e,n){"use strict";n.r(e);var s=n(42),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{351:function(t,e,n){"use strict";n.r(e);var s=n(42),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{353:function(t,n,s){"use strict";s.r(n);var e=s(42),o=Object(e.a)({},(function(){var t=this.$createElement,n=this._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[n("p",[this._v("coming soon")])])}),[],!1,null,null,null);n.default=o.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{352:function(t,n,s){"use strict";s.r(n);var e=s(42),o=Object(e.a)({},(function(){var t=this.$createElement,n=this._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[n("p",[this._v("coming soon")])])}),[],!1,null,null,null);n.default=o.exports}}]);
|
||||||
@@ -1 +1 @@
|
|||||||
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{351:function(t,a,r){"use strict";r.r(a);var s=r(42),_=Object(s.a)({},(function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h2",{attrs:{id:"什么是服务编排"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#什么是服务编排"}},[t._v("#")]),t._v(" 什么是服务编排")]),t._v(" "),r("p",[t._v("服务编排主要基于现有的业务微服务使用在线配置的方式快速的生成一个聚合接口。")]),t._v(" "),r("p",[t._v("特点: 在线API设计、在线测试、快速开发")]),t._v(" "),r("h2",{attrs:{id:"举例说明"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#举例说明"}},[t._v("#")]),t._v(" 举例说明")]),t._v(" "),r("p",[t._v("订单详情页面需要展示订单信息、商品信息和用户信息。可通过配置的方式生成一个接口先后调用底层微服务的订单详情接口、商品信息接口和用户信息接口,再从这3个接口的返回结果里提取需要的字段返回给前端页面。")]),t._v(" "),r("h2",{attrs:{id:"服务编排架构"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#服务编排架构"}},[t._v("#")]),t._v(" 服务编排架构")]),t._v(" "),r("p",[r("img",{attrs:{src:"/fizz_aggregate.jpg",alt:""}})]),t._v(" "),r("h2",{attrs:{id:"适用场景"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#适用场景"}},[t._v("#")]),t._v(" 适用场景")]),t._v(" "),r("h3",{attrs:{id:"前端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端"}},[t._v("#")]),t._v(" 前端")]),t._v(" "),r("p",[t._v("1、一个页面调用多个接口时,可以编排好返回聚合结果,提高页面数据的加载速度")]),t._v(" "),r("p",[t._v("2、移动设备计算能力有限,可以把数据计算或业务处理逻辑放到服务端完成,加快页面响应")]),t._v(" "),r("h3",{attrs:{id:"后端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#后端"}},[t._v("#")]),t._v(" 后端")]),t._v(" "),r("p",[t._v("1、替换应用层的聚合接口,减少应用层的胶水代码")]),t._v(" "),r("p",[t._v("2、快速生成透传数据类型的接口")]),t._v(" "),r("p",[t._v("3、数据转换和映射")])])}),[],!1,null,null,null);a.default=_.exports}}]);
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{353:function(t,a,r){"use strict";r.r(a);var s=r(42),_=Object(s.a)({},(function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h2",{attrs:{id:"什么是服务编排"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#什么是服务编排"}},[t._v("#")]),t._v(" 什么是服务编排")]),t._v(" "),r("p",[t._v("服务编排主要基于现有的业务微服务使用在线配置的方式快速的生成一个聚合接口。")]),t._v(" "),r("p",[t._v("特点: 在线API设计、在线测试、快速开发")]),t._v(" "),r("h2",{attrs:{id:"举例说明"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#举例说明"}},[t._v("#")]),t._v(" 举例说明")]),t._v(" "),r("p",[t._v("订单详情页面需要展示订单信息、商品信息和用户信息。可通过配置的方式生成一个接口先后调用底层微服务的订单详情接口、商品信息接口和用户信息接口,再从这3个接口的返回结果里提取需要的字段返回给前端页面。")]),t._v(" "),r("h2",{attrs:{id:"服务编排架构"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#服务编排架构"}},[t._v("#")]),t._v(" 服务编排架构")]),t._v(" "),r("p",[r("img",{attrs:{src:"/fizz_aggregate.jpg",alt:""}})]),t._v(" "),r("h2",{attrs:{id:"适用场景"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#适用场景"}},[t._v("#")]),t._v(" 适用场景")]),t._v(" "),r("h3",{attrs:{id:"前端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端"}},[t._v("#")]),t._v(" 前端")]),t._v(" "),r("p",[t._v("1、一个页面调用多个接口时,可以编排好返回聚合结果,提高页面数据的加载速度")]),t._v(" "),r("p",[t._v("2、移动设备计算能力有限,可以把数据计算或业务处理逻辑放到服务端完成,加快页面响应")]),t._v(" "),r("h3",{attrs:{id:"后端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#后端"}},[t._v("#")]),t._v(" 后端")]),t._v(" "),r("p",[t._v("1、替换应用层的聚合接口,减少应用层的胶水代码")]),t._v(" "),r("p",[t._v("2、快速生成透传数据类型的接口")]),t._v(" "),r("p",[t._v("3、数据转换和映射")])])}),[],!1,null,null,null);a.default=_.exports}}]);
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@
|
|||||||
<meta name="generator" content="VuePress 1.5.2">
|
<meta name="generator" content="VuePress 1.5.2">
|
||||||
|
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<link rel="preload" href="/assets/css/0.styles.34d67128.css" as="style"><link rel="preload" href="/assets/js/app.86b5ae26.js" as="script"><link rel="preload" href="/assets/js/2.5b001851.js" as="script"><link rel="preload" href="/assets/js/5.a59b20e1.js" as="script"><link rel="prefetch" href="/assets/js/10.b57afcaa.js"><link rel="prefetch" href="/assets/js/11.21242c7f.js"><link rel="prefetch" href="/assets/js/12.61089982.js"><link rel="prefetch" href="/assets/js/13.fdb2bea3.js"><link rel="prefetch" href="/assets/js/14.62d9a88b.js"><link rel="prefetch" href="/assets/js/15.0358b10e.js"><link rel="prefetch" href="/assets/js/16.43a475d2.js"><link rel="prefetch" href="/assets/js/17.32fa8ea0.js"><link rel="prefetch" href="/assets/js/18.603a235b.js"><link rel="prefetch" href="/assets/js/19.5c4af839.js"><link rel="prefetch" href="/assets/js/20.1bf2bcbb.js"><link rel="prefetch" href="/assets/js/21.dca6f5c4.js"><link rel="prefetch" href="/assets/js/22.db62cc12.js"><link rel="prefetch" href="/assets/js/23.5b796ecf.js"><link rel="prefetch" href="/assets/js/24.72fe0b8b.js"><link rel="prefetch" href="/assets/js/25.bbf8bff1.js"><link rel="prefetch" href="/assets/js/26.70321f43.js"><link rel="prefetch" href="/assets/js/27.505a813e.js"><link rel="prefetch" href="/assets/js/28.cdddd7aa.js"><link rel="prefetch" href="/assets/js/29.60b7285b.js"><link rel="prefetch" href="/assets/js/3.a51774e3.js"><link rel="prefetch" href="/assets/js/30.0222f21c.js"><link rel="prefetch" href="/assets/js/4.7d5f245c.js"><link rel="prefetch" href="/assets/js/6.e883523c.js"><link rel="prefetch" href="/assets/js/7.00dd2642.js"><link rel="prefetch" href="/assets/js/8.645ad4e8.js"><link rel="prefetch" href="/assets/js/9.9eb9244c.js">
|
<link rel="preload" href="/assets/css/0.styles.34d67128.css" as="style"><link rel="preload" href="/assets/js/app.60575df2.js" as="script"><link rel="preload" href="/assets/js/2.5b001851.js" as="script"><link rel="preload" href="/assets/js/5.abc10683.js" as="script"><link rel="prefetch" href="/assets/js/10.13320b99.js"><link rel="prefetch" href="/assets/js/11.a76c2e4c.js"><link rel="prefetch" href="/assets/js/12.f815cfa2.js"><link rel="prefetch" href="/assets/js/13.fdb2bea3.js"><link rel="prefetch" href="/assets/js/14.7e909813.js"><link rel="prefetch" href="/assets/js/15.791d6b9d.js"><link rel="prefetch" href="/assets/js/16.4ae255f1.js"><link rel="prefetch" href="/assets/js/17.32fa8ea0.js"><link rel="prefetch" href="/assets/js/18.603a235b.js"><link rel="prefetch" href="/assets/js/19.5c4af839.js"><link rel="prefetch" href="/assets/js/20.1bf2bcbb.js"><link rel="prefetch" href="/assets/js/21.081e4e30.js"><link rel="prefetch" href="/assets/js/22.0c08546e.js"><link rel="prefetch" href="/assets/js/23.94679012.js"><link rel="prefetch" href="/assets/js/24.9c5c2990.js"><link rel="prefetch" href="/assets/js/25.aead8972.js"><link rel="prefetch" href="/assets/js/26.b4625fe9.js"><link rel="prefetch" href="/assets/js/27.20a7e33d.js"><link rel="prefetch" href="/assets/js/28.3d35b618.js"><link rel="prefetch" href="/assets/js/29.60b7285b.js"><link rel="prefetch" href="/assets/js/3.a51774e3.js"><link rel="prefetch" href="/assets/js/30.7591e88a.js"><link rel="prefetch" href="/assets/js/4.7d5f245c.js"><link rel="prefetch" href="/assets/js/6.e883523c.js"><link rel="prefetch" href="/assets/js/7.e3b70354.js"><link rel="prefetch" href="/assets/js/8.a4432ff1.js"><link rel="prefetch" href="/assets/js/9.b1740bdf.js">
|
||||||
<link rel="stylesheet" href="/assets/css/0.styles.34d67128.css">
|
<link rel="stylesheet" href="/assets/css/0.styles.34d67128.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -32,6 +32,6 @@
|
|||||||
</a></p></header> <div class="features"><div class="feature"><h2>智能路由</h2> <p>支持服务注册与发现,支持负载均衡,支持配置插件和黑白名单。</p></div><div class="feature"><h2>服务编排</h2> <p>基于现有的业务微服务通过在线配置的方式快速的生成一个聚合接口。减少中间层胶水代码以及降低编码投入</p></div><div class="feature"><h2>插件机制</h2> <p>强大的插件系统,内置通用常用插件,同时支持自定义插件开发。</p></div></div> <div class="theme-default-content custom content__default"></div> <div class="footer">
|
</a></p></header> <div class="features"><div class="feature"><h2>智能路由</h2> <p>支持服务注册与发现,支持负载均衡,支持配置插件和黑白名单。</p></div><div class="feature"><h2>服务编排</h2> <p>基于现有的业务微服务通过在线配置的方式快速的生成一个聚合接口。减少中间层胶水代码以及降低编码投入</p></div><div class="feature"><h2>插件机制</h2> <p>强大的插件系统,内置通用常用插件,同时支持自定义插件开发。</p></div></div> <div class="theme-default-content custom content__default"></div> <div class="footer">
|
||||||
GNU v3 Licensed | Copyright © 2020-present Fizz
|
GNU v3 Licensed | Copyright © 2020-present Fizz
|
||||||
</div></main></div><div class="global-ui"></div></div>
|
</div></main></div><div class="global-ui"></div></div>
|
||||||
<script src="/assets/js/app.86b5ae26.js" defer></script><script src="/assets/js/2.5b001851.js" defer></script><script src="/assets/js/5.a59b20e1.js" defer></script>
|
<script src="/assets/js/app.60575df2.js" defer></script><script src="/assets/js/2.5b001851.js" defer></script><script src="/assets/js/5.abc10683.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -39,6 +39,15 @@ public class CommonConstants {
|
|||||||
public static final String WILDCARD_STAR = "*";
|
public static final String WILDCARD_STAR = "*";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the underlying processes and response immediately, using in scripts
|
||||||
|
*/
|
||||||
public static final String STOP_AND_RESPONSE_KEY = "_stopAndResponse";
|
public static final String STOP_AND_RESPONSE_KEY = "_stopAndResponse";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the underlying processes and redirect to the specified URL immediately, work with STOP_AND_RESPONSE_KEY using in scripts
|
||||||
|
*/
|
||||||
|
public static final String REDIRECT_URL_KEY = "_redirectUrl";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
45
src/main/java/we/exception/RedirectException.java
Normal file
45
src/main/java/we/exception/RedirectException.java
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 the original author or authors.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package we.exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francis
|
||||||
|
*/
|
||||||
|
public class RedirectException extends RuntimeException {
|
||||||
|
|
||||||
|
private String redirectUrl;
|
||||||
|
|
||||||
|
public RedirectException(String message, String redirectUrl) {
|
||||||
|
super(message);
|
||||||
|
this.redirectUrl = redirectUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public String getRedirectUrl() {
|
||||||
|
return redirectUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRedirectUrl(String redirectUrl) {
|
||||||
|
this.redirectUrl = redirectUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
package we.exception;
|
package we.exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author unknown
|
* @author Francis
|
||||||
*/
|
*/
|
||||||
public class StopAndResponseException extends RuntimeException {
|
public class StopAndResponseException extends RuntimeException {
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
package we.filter;
|
package we.filter;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
@@ -27,6 +29,7 @@ import org.springframework.http.server.reactive.ServerHttpResponse;
|
|||||||
import org.springframework.web.server.ServerWebExchange;
|
import org.springframework.web.server.ServerWebExchange;
|
||||||
import org.springframework.web.server.WebExceptionHandler;
|
import org.springframework.web.server.WebExceptionHandler;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
import we.exception.RedirectException;
|
||||||
import we.exception.StopAndResponseException;
|
import we.exception.StopAndResponseException;
|
||||||
import we.util.WebUtils;
|
import we.util.WebUtils;
|
||||||
|
|
||||||
@@ -48,6 +51,15 @@ public class FilterExceptionHandlerConfig {
|
|||||||
resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
|
resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
|
||||||
return resp.writeWith(Mono.just(resp.bufferFactory().wrap(ex.getData().toString().getBytes())));
|
return resp.writeWith(Mono.just(resp.bufferFactory().wrap(ex.getData().toString().getBytes())));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (t instanceof RedirectException) {
|
||||||
|
RedirectException ex = (RedirectException) t;
|
||||||
|
if (ex.getRedirectUrl() != null) {
|
||||||
|
ServerHttpResponse resp = exchange.getResponse();
|
||||||
|
resp.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
|
||||||
|
resp.getHeaders().setLocation(URI.create(ex.getRedirectUrl()));
|
||||||
|
return Mono.empty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Mono<Void> vm = WebUtils.responseError(exchange, filterExceptionHandler, HttpStatus.INTERNAL_SERVER_ERROR.value(), t.getMessage(), t);
|
Mono<Void> vm = WebUtils.responseError(exchange, filterExceptionHandler, HttpStatus.INTERNAL_SERVER_ERROR.value(), t.getMessage(), t);
|
||||||
return vm;
|
return vm;
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import we.constants.CommonConstants;
|
import we.constants.CommonConstants;
|
||||||
|
import we.exception.RedirectException;
|
||||||
import we.exception.StopAndResponseException;
|
import we.exception.StopAndResponseException;
|
||||||
import we.fizz.StepContext;
|
import we.fizz.StepContext;
|
||||||
import we.util.Script;
|
import we.util.Script;
|
||||||
@@ -136,10 +137,18 @@ public class ScriptHelper {
|
|||||||
&& rs.get(CommonConstants.STOP_AND_RESPONSE_KEY) instanceof Boolean
|
&& rs.get(CommonConstants.STOP_AND_RESPONSE_KEY) instanceof Boolean
|
||||||
&& (Boolean) rs.get(CommonConstants.STOP_AND_RESPONSE_KEY)) {
|
&& (Boolean) rs.get(CommonConstants.STOP_AND_RESPONSE_KEY)) {
|
||||||
rs.remove(CommonConstants.STOP_AND_RESPONSE_KEY);
|
rs.remove(CommonConstants.STOP_AND_RESPONSE_KEY);
|
||||||
|
|
||||||
|
// redirect
|
||||||
|
if(rs.get(CommonConstants.REDIRECT_URL_KEY) != null) {
|
||||||
|
throw new RedirectException("stop and redirect", String.valueOf(rs.get(CommonConstants.REDIRECT_URL_KEY)));
|
||||||
|
}
|
||||||
|
|
||||||
// 测试模式返回StepContext
|
// 测试模式返回StepContext
|
||||||
if (stepContext.returnContext()) {
|
if (stepContext.returnContext()) {
|
||||||
rs.put("_context", stepContext);
|
rs.put("_context", stepContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// exception
|
||||||
throw new StopAndResponseException("stop and response", JSON.toJSONString(rs));
|
throw new StopAndResponseException("stop and response", JSON.toJSONString(rs));
|
||||||
} else {
|
} else {
|
||||||
rs.remove(CommonConstants.STOP_AND_RESPONSE_KEY);
|
rs.remove(CommonConstants.STOP_AND_RESPONSE_KEY);
|
||||||
|
|||||||
Reference in New Issue
Block a user