144 lines
52 KiB
HTML
144 lines
52 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>接口列表 | Fizz Gateway</title>
|
||
<meta name="generator" content="VuePress 1.5.2">
|
||
|
||
<meta name="description" content="">
|
||
<link rel="preload" href="/assets/css/0.styles.34d67128.css" as="style"><link rel="preload" href="/assets/js/app.307fd529.js" as="script"><link rel="preload" href="/assets/js/2.5b001851.js" as="script"><link rel="preload" href="/assets/js/14.7e909813.js" as="script"><link rel="prefetch" href="/assets/js/10.13320b99.js"><link rel="prefetch" href="/assets/js/11.e86eaecd.js"><link rel="prefetch" href="/assets/js/12.4047a547.js"><link rel="prefetch" href="/assets/js/13.beb516ad.js"><link rel="prefetch" href="/assets/js/15.0358b10e.js"><link rel="prefetch" href="/assets/js/16.f0131aa9.js"><link rel="prefetch" href="/assets/js/17.53dd322c.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.94679012.js"><link rel="prefetch" href="/assets/js/24.dc881ae9.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.2160d3a0.js"><link rel="prefetch" href="/assets/js/29.ab810898.js"><link rel="prefetch" href="/assets/js/3.13d0117a.js"><link rel="prefetch" href="/assets/js/30.37a581ce.js"><link rel="prefetch" href="/assets/js/31.35595b86.js"><link rel="prefetch" href="/assets/js/4.7d5f245c.js"><link rel="prefetch" href="/assets/js/5.a59b20e1.js"><link rel="prefetch" href="/assets/js/6.b5dc0bcc.js"><link rel="prefetch" href="/assets/js/7.d2312c9e.js"><link rel="prefetch" href="/assets/js/8.645ad4e8.js"><link rel="prefetch" href="/assets/js/9.6a35b918.js">
|
||
<link rel="stylesheet" href="/assets/css/0.styles.34d67128.css">
|
||
</head>
|
||
<body>
|
||
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">Fizz Gateway</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
|
||
首页
|
||
</a></div><div class="nav-item"><a href="/guide/intro/" class="nav-link">
|
||
使用文档
|
||
</a></div> <a href="https://github.com/wehotel/fizz-gateway-community" target="_blank" rel="noopener noreferrer" class="repo-link">
|
||
查看源码
|
||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">
|
||
首页
|
||
</a></div><div class="nav-item"><a href="/guide/intro/" class="nav-link">
|
||
使用文档
|
||
</a></div> <a href="https://github.com/wehotel/fizz-gateway-community" target="_blank" rel="noopener noreferrer" class="repo-link">
|
||
查看源码
|
||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>Fizz简介</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/intro/" class="sidebar-link">什么是Fizz网关</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/intro/#什么是fizz网关" class="sidebar-link">什么是Fizz网关</a></li><li class="sidebar-sub-header"><a href="/guide/intro/#fizz的设计" class="sidebar-link">Fizz的设计</a></li><li class="sidebar-sub-header"><a href="/guide/intro/#产品特性" class="sidebar-link">产品特性</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>安装部署</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/installation/" class="sidebar-link">安装</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/installation/#安装依赖" class="sidebar-link">安装依赖</a></li><li class="sidebar-sub-header"><a href="/guide/installation/#安装fizz" class="sidebar-link">安装Fizz</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>路由转发</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/proxy/" class="sidebar-link">路由转发</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/proxy/#路由转发介绍" class="sidebar-link">路由转发介绍</a></li><li class="sidebar-sub-header"><a href="/guide/proxy/#接入路由转发" class="sidebar-link">接入路由转发</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>服务编排</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/aggregate/" class="sidebar-link">服务编排介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/aggregate/#什么是服务编排" class="sidebar-link">什么是服务编排</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/#举例说明" class="sidebar-link">举例说明</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/#服务编排架构" class="sidebar-link">服务编排架构</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/#适用场景" class="sidebar-link">适用场景</a></li></ul></li><li><a href="/guide/aggregate/overview.html" class="sidebar-link">步骤总览</a></li><li><a href="/guide/aggregate/configuration.html" class="sidebar-link">服务编排配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#创建服务" class="sidebar-link">创建服务</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#创建聚合接口" class="sidebar-link">创建聚合接口</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置输入" class="sidebar-link">配置输入</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置校验结果" class="sidebar-link">配置校验结果</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置步骤" class="sidebar-link">配置步骤</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置输出" class="sidebar-link">配置输出</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#脚本-2" class="sidebar-link">脚本</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#抛出异常" class="sidebar-link">抛出异常</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#重定向" class="sidebar-link">重定向</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置路由" class="sidebar-link">配置路由</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#在线测试" class="sidebar-link">在线测试</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#脚本执行异常" class="sidebar-link">脚本执行异常</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#导入导出" class="sidebar-link">导入导出</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#发布-下线和审核" class="sidebar-link">发布|下线和审核</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>插件机制</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/plugin/" class="sidebar-link">插件开发</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/plugin/#概述" class="sidebar-link">概述</a></li><li class="sidebar-sub-header"><a href="/guide/plugin/#gateway开发" class="sidebar-link">gateway开发</a></li><li class="sidebar-sub-header"><a href="/guide/plugin/#manager配置" class="sidebar-link">manager配置</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>基准测试</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/benchmark/" class="sidebar-link">benchmark</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/benchmark/#基准测试结果" class="sidebar-link">基准测试结果</a></li><li class="sidebar-sub-header"><a href="/guide/benchmark/#基准测试详情" class="sidebar-link">基准测试详情</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/benchmark/#硬件环境" class="sidebar-link">硬件环境</a></li><li class="sidebar-sub-header"><a href="/guide/benchmark/#压测工具" class="sidebar-link">压测工具</a></li><li class="sidebar-sub-header"><a href="/guide/benchmark/#压测结果截图" class="sidebar-link">压测结果截图</a></li></ul></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>管理后台</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/manager/manager_overview.html" class="sidebar-link">管理后台简介</a></li><li><a href="/guide/manager/manager_gateway_group.html" class="sidebar-link">网关分组</a></li><li><a href="/guide/manager/manager_plugin.html" class="sidebar-link">插件管理</a></li><li><a href="/guide/manager/manager_app_id.html" class="sidebar-link">appID管理</a></li><li><a href="/guide/manager/manager_api_auth.html" class="sidebar-link">路由管理</a></li><li><a href="/guide/manager/manager_service.html" class="sidebar-link">服务管理</a></li><li><a href="/guide/manager/manager_aggregate.html" aria-current="page" class="active sidebar-link">接口列表</a></li><li><a href="/guide/manager/manager_aggregate_op_log.html" class="sidebar-link">操作日志</a></li><li><a href="/guide/manager/manager_gateway_aggregate_cache.html" class="sidebar-link">网关缓存</a></li><li><a href="/guide/manager/manager_aggregate_my_apply.html" class="sidebar-link">我的申请</a></li><li><a href="/guide/manager/manager_aggregate_approve.html" class="sidebar-link">待审核</a></li><li><a href="/guide/manager/manager_aggregate_approve_op_log.html" class="sidebar-link">审核日志</a></li><li><a href="/guide/manager/manager_role.html" class="sidebar-link">角色管理</a></li><li><a href="/guide/manager/manager_user.html" class="sidebar-link">用户管理</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>Roadmap</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/roadmap/" class="sidebar-link">Roadmap</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/roadmap/#v1-2-x" class="sidebar-link">v1.2.x</a></li><li class="sidebar-sub-header"><a href="/guide/roadmap/#v1-3-x" class="sidebar-link">v1.3.x</a></li><li class="sidebar-sub-header"><a href="/guide/roadmap/#v1-4-x" class="sidebar-link">v1.4.x</a></li><li class="sidebar-sub-header"><a href="/guide/roadmap/#v1-5-x" class="sidebar-link">v1.5.x</a></li><li class="sidebar-sub-header"><a href="/guide/roadmap/#v1-6-x" class="sidebar-link">v1.6.x</a></li></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h2 id="概述"><a href="#概述" class="header-anchor">#</a> 概述</h2> <p>接口列表功能用于维护聚合接口,聚合接口从外部调用方角度看是一个简单的接口,通过入参请求获取响应结果,内部实现会调用多个底层后端服务,将多个调用结果聚合转换成外部调用方想要的数据格式,更多详情请查看服务编排介绍,下面介绍接口列表功能的操作。</p> <h2 id="接口列表"><a href="#接口列表" class="header-anchor">#</a> 接口列表</h2> <p>菜单位置:服务编排 > 接口列表。点击菜单后进入接口列表页面,如图所示。</p> <p><img src="/manager_aggregate_list_query.png" alt="manager_aggregate_list_query"></p> <h2 id="新增接口"><a href="#新增接口" class="header-anchor">#</a> 新增接口</h2> <p>点击 新增 按钮弹出新增窗口,如图所示。</p> <p><img src="/manager_aggregate_add_1.png" alt="manager_aggregate_add_1"></p> <h3 id="基础信息"><a href="#基础信息" class="header-anchor">#</a> 基础信息</h3> <p><img src="/manager_aggregate_add_2.png" alt="manager_aggregate_add_2"></p> <p>所属服务:接口所属服务,更多详情请查看服务管理功能介绍,必选;</p> <p>接口名:接口名称,用于展示使用,长度不能超过200个字符,必填;</p> <p>方法:接口请求方法类型,可选GET|POST,必选;</p> <p>路径:接口请求路径后缀,长度不能超过2000个字符,必填;</p> <p>开发人员:接口对应负责的开发人员,长度不能超过200个字符;</p> <p>描述:接口功能描述,长度不能超过2000个字符;</p> <p>举个例子,所属服务设置my-test-service,方法设置POST,路径设置test-aggregate-post,对应的聚合接口请求为 POST http://{Fizz网关ip地址}:{port端口}/proxy/my-test-service/test-aggregate-post。</p> <h3 id="配置输入"><a href="#配置输入" class="header-anchor">#</a> 配置输入</h3> <p>聚合接口的入参大部分是通过JSON Schema来定义的,下面先简单地介绍下JSON Schema。</p> <h4 id="json-schema介绍"><a href="#json-schema介绍" class="header-anchor">#</a> JSON Schema介绍</h4> <p>JSON Schema实际上也是JSON数据,用于标注和验证JSON文档,可以类比于XML Schema,当前最新版本2019-09。</p> <p>作为普通用户,我们并不需要去了解JSON Schema的规范内容,只要能够构建JSON Schema即可。</p> <blockquote><p>要理解JSON Schema,首先要理解什么是JSON。JSON是JavaScript Object Notation的缩写,一种简单的数据交换格式。最初JSON是基于JavaScript,广泛的应用于万维网。由于其简洁和清晰的层次结构、易于人阅读等特性,使得越来越多的场景下被采用。</p> <p>JSON包含以下数据结构:</p> <ul><li>object:<div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span> <span class="token string">"key1"</span><span class="token operator">:</span> <span class="token string">"value1"</span><span class="token punctuation">,</span> <span class="token string">"key2"</span><span class="token operator">:</span> <span class="token string">"value2"</span> <span class="token punctuation">}</span>
|
||
</code></pre></div></li> <li>array:<div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">[</span> <span class="token string">"first"</span><span class="token punctuation">,</span> <span class="token string">"second"</span><span class="token punctuation">,</span> <span class="token string">"third"</span> <span class="token punctuation">]</span>
|
||
</code></pre></div></li> <li>number:<div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token number">42</span>
|
||
<span class="token number">3.1415926</span>
|
||
</code></pre></div></li> <li>string:<div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token string">"This is a string"</span>
|
||
</code></pre></div></li> <li>boolean:<div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token boolean">true</span>
|
||
<span class="token boolean">false</span>
|
||
</code></pre></div></li> <li>null:<div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token keyword">null</span>
|
||
</code></pre></div></li></ul> <p>通过以上的简单数据类型,就能构造复杂的结构化数据了。下面举两个例子:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
|
||
<span class="token string">"name"</span><span class="token operator">:</span> <span class="token string">"George Washington"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"birthday"</span><span class="token operator">:</span> <span class="token string">"February 22, 1732"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"address"</span><span class="token operator">:</span> <span class="token string">"Mount Vernon, Virginia, United States"</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
|
||
<span class="token string">"first_name"</span><span class="token operator">:</span> <span class="token string">"George"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"last_name"</span><span class="token operator">:</span> <span class="token string">"Washington"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"birthday"</span><span class="token operator">:</span> <span class="token string">"1732-02-22"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"address"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"street_address"</span><span class="token operator">:</span> <span class="token string">"3200 Mount Vernon Memorial Highway"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"city"</span><span class="token operator">:</span> <span class="token string">"Mount Vernon"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"state"</span><span class="token operator">:</span> <span class="token string">"Virginia"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"country"</span><span class="token operator">:</span> <span class="token string">"United States"</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><p>以上两个例子都是有效的JSON数据,包含一样的有效信息,但是当程序读取数据时,需要准确的知道数据是怎么组织的,比如哪些字段是必须,这些字段是什么类型。这时候JSON Schema就派上用场了,看以下JSON Schema例子:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"object"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"properties"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"first_name"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"last_name"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"birthday"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token string">"format"</span><span class="token operator">:</span> <span class="token string">"date"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"address"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"object"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"properties"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"street_address"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"city"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"state"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"country"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token string">"type"</span> <span class="token operator">:</span> <span class="token string">"string"</span> <span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><p>用以上JSON Schema验证第一个例子时,验证失败;但是第二个例子验证通过。</p> <p>JSON Schema本身也是通过JSON编写,其本身也是数据,不是一个计算机程序,只是一种“描述其它数据的结构”的声明格式。这既是长处,也是弱点,JSON Schema可以简洁地描述数据的结构并且自动验证数据,但是对于数据元素间的关系表达就力不能及了。</p></blockquote> <p>更多JSON Schema知识可以阅读<a href="https://json-schema.org/understanding-json-schema/" target="_blank" rel="noopener noreferrer">Understanding JSON Schema<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>。</p> <h4 id="请求头部"><a href="#请求头部" class="header-anchor">#</a> 请求头部</h4> <p>定义聚合接口的请求Header参数。</p> <p><img src="/manager_aggregate_add_3.png" alt="manager_aggregate_add_3"></p> <p>举个例子:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"object"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"properties"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"headerParam1"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"title"</span><span class="token operator">:</span> <span class="token string">"请求头参数1"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"titleEn"</span><span class="token operator">:</span> <span class="token string">"headerParam1"</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"required"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">"headerParam1"</span>
|
||
<span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><p>以上例子定义了必传请求头参数<code>headerParam1</code>。</p> <p><code>title</code>字段用于验证失败时提示使用,例如请求接口时没传请求头时会提示“请求头参数1不能为空”(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_header_1.png" alt="manager_aggregate_add_input_header_1"></p> <p>当定义了语言配置(详情请查看后文的语言配置介绍)选项为英文时会使用<code>titleEn</code>字段用于验证失败时提示使用,例如请求接口时没传请求头时会提示“headerParam1 is missing but it is required”(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_header_2.png" alt="manager_aggregate_add_input_header_2"></p> <h4 id="请求体"><a href="#请求体" class="header-anchor">#</a> 请求体</h4> <p>定义聚合接口的请求体参数。</p> <p><img src="/manager_aggregate_add_4.png" alt="manager_aggregate_add_4"></p> <p>举个例子:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"object"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"properties"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"bodyParam1"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"title"</span><span class="token operator">:</span> <span class="token string">"请求体参数1"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"titleEn"</span><span class="token operator">:</span> <span class="token string">"bodyParam1"</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"required"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">"bodyParam1"</span>
|
||
<span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><p>以上例子定义了必传请求体参数<code>bodyParam1</code>。</p> <p><code>title</code>字段用于验证失败时提示使用,例如请求接口时没传请求体参数时会提示“请求体参数1不能为空”(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_body_1.png" alt="manager_aggregate_add_input_body_1"></p> <p>当定义了语言配置(详情请查看后文的语言配置介绍)选项为英文时会使用<code>titleEn</code>字段用于验证失败时提示使用,例如请求接口时没传请求体参数时会提示“bodyParam1 is missing but it is required”(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_body_2.png" alt="manager_aggregate_add_input_body_2"></p> <h4 id="query参数"><a href="#query参数" class="header-anchor">#</a> Query参数</h4> <p>定义聚合接口的Query参数。</p> <p><img src="/manager_aggregate_add_5.png" alt="manager_aggregate_add_5"></p> <p>举个例子:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"object"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"properties"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"queryParam1"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||
<span class="token string">"type"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"title"</span><span class="token operator">:</span> <span class="token string">"query参数1"</span><span class="token punctuation">,</span>
|
||
<span class="token string">"titleEn"</span><span class="token operator">:</span> <span class="token string">"queryParam1"</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||
<span class="token string">"required"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||
<span class="token string">"queryParam1"</span>
|
||
<span class="token punctuation">]</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre></div><p>以上例子定义了必传Query参数<code>queryParam1</code>。</p> <p><code>title</code>字段用于验证失败时提示使用,例如请求接口时没传Query参数时会提示“query参数1不能为空”(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_query_1.png" alt="manager_aggregate_add_input_query_1"></p> <p>当定义了语言配置(详情请查看后文的语言配置介绍)选项为英文时会使用<code>titleEn</code>字段用于验证失败时提示使用,例如请求接口时没传Query参数时会提示“queryParam1 is missing but it is required”(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_query_2.png" alt="manager_aggregate_add_input_query_2"></p> <h4 id="脚本校验"><a href="#脚本校验" class="header-anchor">#</a> 脚本校验</h4> <p>对于JSON Schema规范无法覆盖的校验场景可以使用脚本对入参进行更加灵活的处理。</p> <p><img src="/manager_aggregate_add_6.png" alt="manager_aggregate_add_6"></p> <p>点击 新增 按钮后弹出脚本配置窗口,如图所示。</p> <p><img src="/manager_aggregate_add_7.png" alt="manager_aggregate_add_7"></p> <p>脚本类型:可选javascript|groovy,必选;</p> <p>脚本内容:所选的脚本类型语言编写的入参验证脚本,必填。</p> <p>举个例子:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token comment">// javascript脚本函数名不能修改</span>
|
||
<span class="token keyword">function</span> <span class="token function">dyFunc</span><span class="token punctuation">(</span><span class="token parameter">paramsJsonStr</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token comment">// 上下文, 数据结构请参考 context.js</span>
|
||
<span class="token keyword">var</span> context <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>paramsJsonStr<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token string">'context'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
||
<span class="token comment">// common为内置的上下文便捷操作工具类,详情请参考common.js;例如:</span>
|
||
<span class="token comment">// var data = common.getStepRespBody(context, 'step2', 'request1', 'data');</span>
|
||
|
||
<span class="token comment">// do something</span>
|
||
<span class="token keyword">var</span> headerParam1 <span class="token operator">=</span> common<span class="token punctuation">.</span><span class="token function">getInputReqHeader</span><span class="token punctuation">(</span>context<span class="token punctuation">,</span> <span class="token string">'headerParam1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">var</span> bodyParam1 <span class="token operator">=</span> common<span class="token punctuation">.</span><span class="token function">getInputReqBody</span><span class="token punctuation">(</span>context<span class="token punctuation">,</span> <span class="token string">'bodyParam1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">var</span> queryParam1 <span class="token operator">=</span> common<span class="token punctuation">.</span><span class="token function">getInputReqParam</span><span class="token punctuation">(</span>context<span class="token punctuation">,</span> <span class="token string">'queryParam1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">var</span> result <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span>headerParam1 <span class="token operator">!=</span> bodyParam1<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
result<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">"headerParam1与bodyParam1不一致"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span>queryParam1 <span class="token operator">!=</span> bodyParam1<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
result<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">"queryParam1与bodyParam1不一致"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span>headerParam1 <span class="token operator">!=</span> queryParam1<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
result<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token string">"headerParam1与queryParam1不一致"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token comment">// 返回结果为Array或Object时要先转为json字符串</span>
|
||
<span class="token keyword">return</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
</code></pre></div><p>以上例子使用javascript编写参数校验,限制入参<code>headerParam1</code>、<code>bodyParam1</code>、<code>queryParam1</code>必须一致,不一致将提示错误信息(错误提示输出通过校验结果配置,详情请看后文介绍),如图所示。</p> <p><img src="/manager_aggregate_add_input_script.png" alt="manager_aggregate_add_input_script"></p> <h4 id="语言配置"><a href="#语言配置" class="header-anchor">#</a> 语言配置</h4> <p>聚合接口默认使用中文响应校验失败提示,通过配置可通过入参选择不同的提示语言,目前支持中文、英文提示(已满足我们的业务使用场景,有其他语言要求的小伙伴可以联系我们添加)。</p> <p><img src="/manager_aggregate_add_8.png" alt="manager_aggregate_add_8"></p> <p>字段:入参字段值,例如<code>input.request.body.languageCode</code>使用请求体参数<code>languageCode</code>的值来决定使用哪种语言;</p> <p>中文:中文与入参字段值的映射关系,例如配置<code>0</code>,当请求入参字段值为<code>0</code>时使用中文提示校验结果;</p> <p>英文:英文与入参字段值的映射关系,例如配置<code>1</code>,当请求入参字段值为<code>1</code>时使用中文提示校验结果。</p> <h3 id="配置步骤"><a href="#配置步骤" class="header-anchor">#</a> 配置步骤</h3> <p>聚合接口调用底层服务是通过多个step实现的,多个step串行执行,每个step包含多个request(对底层服务接口的调用),同个step里的多个request并行执行,后执行的step可以获取已执行step的执行结果,更多详情请查看服务编排文章的介绍,下面介绍配置步骤的使用。</p> <p><img src="/manager_aggregate_add_9.png" alt="manager_aggregate_add_9"></p> <p>是否执行完此步骤后结束:勾选后实际请求只执行完该步骤后即响应结果,不执行后续步骤,用于调试使用;</p> <p>请求方法:调用底层服务接口的请求类型,可选GET|POST,必选;</p> <p>默认URL:调用底层服务接口的默认URL,当Fizz网关启动环境没有配置URL时使用该默认URL;</p> <p>开发环境URL:开发环境调用底层服务接口的URL,当Fizz网关启动使用spring.profiles.active=dev时使用该URL;</p> <p>测试环境URL:测试环境调用底层服务接口的URL,当Fizz网关启动使用spring.profiles.active=test时使用该URL;</p> <p>预生产环境URL:预生产环境调用底层服务接口的URL,当Fizz网关启动使用spring.profiles.active=pre时使用该URL;</p> <p>生产环境URL:生产环境调用底层服务接口的URL,当Fizz网关启动使用spring.profiles.active=prod时使用该URL;</p> <p>超时时间(毫秒):调用底层服务接口的超时时间,超时抛出异常,单位毫秒;</p> <p>Fallback:可选stop|continue,控制当调用底层服务接口失败后是否继续执行后续操作;</p> <p>请求预处理:勾选后可配置预处理脚本,预处理脚本返回true时才执行调用底层服务接口。</p> <p><img src="/manager_aggregate_add_10.png" alt="manager_aggregate_add_10"></p> <p>配置入参:配置调用底层服务接口的请求参数;</p> <p>配置响应:配置调用底层服务接口的响应内容。</p> <p><img src="/manager_aggregate_add_11.png" alt="manager_aggregate_add_11"></p> <p>配置步骤结果:配置step执行完成后的响应内容。</p> <h3 id="配置输出"><a href="#配置输出" class="header-anchor">#</a> 配置输出</h3> <p>配置聚合接口调用完成的响应内容。在响应体、响应头配置中可以配置简单的响应固定值、响应引用值,对于需要逻辑处理得到结果的响应可以通过脚本配置灵活处理,如图所示。</p> <p><img src="/manager_aggregate_add_12.png" alt="manager_aggregate_add_12"></p> <p><img src="/manager_aggregate_add_13.png" alt="manager_aggregate_add_13"></p> <h3 id="校验结果"><a href="#校验结果" class="header-anchor">#</a> 校验结果</h3> <p>配置聚合接口入参校验失败后的响应内容,在响应体、响应头配置中可以配置简单的响应固定值、响应引用值,对于需要逻辑处理得到结果的响应可以通过脚本配置灵活处理,如图所示。</p> <p><img src="/manager_aggregate_add_14.png" alt="manager_aggregate_add_14"></p> <p>校验结果有一个专用的引用值<code>validateMsg</code>,该引用值用于存放入参验证错误提示信息。</p> <h3 id="保存接口"><a href="#保存接口" class="header-anchor">#</a> 保存接口</h3> <p>所有配置完成后点击 保存 按钮,完成聚合接口的配置。</p> <p><img src="/manager_aggregate_add_15.png" alt="manager_aggregate_add_15"></p> <h2 id="导出接口"><a href="#导出接口" class="header-anchor">#</a> 导出接口</h2> <p>导出功能将聚合接口以配置文件的形式导出,导出的文件可通过导入功能重新导入系统,当我们的系统分多个环境时,可使用导出导入功能实现聚合接口的快速同步,下面介绍导出功能。</p> <p><img src="/manager_aggregate_export_1.png" alt="manager_aggregate_export_1"></p> <p>勾选想到导出的接口,点击 导出 按钮弹出确认窗口,如图所示。</p> <p><img src="/manager_aggregate_export_2.png" alt="manager_aggregate_export_2"></p> <p>点击 确定 按钮,浏览器保存配置文件,如图所示。</p> <p><img src="/manager_aggregate_export_3.png" alt="manager_aggregate_export_3"></p> <h2 id="导入接口"><a href="#导入接口" class="header-anchor">#</a> 导入接口</h2> <p>导入功能将配置文件中的聚合接口转化成后台的持久化存储,导入的文件可以通过导出功能获取或者通过编写好的聚合配置JSON文件转化得到(转换工具可以联系我们获取)。当我们的系统分多个环境时,可使用导出导入功能实现聚合接口的快速同步,下面介绍导出功能。</p> <p><img src="/manager_aggregate_import_1.png" alt="manager_aggregate_import_1"></p> <p>点击 导入 按钮弹出导入配置窗口,如图所示。</p> <p><img src="/manager_aggregate_import_2.png" alt="manager_aggregate_import_2"></p> <p>点击 选取文件 按钮后选取要导入的配置文件;</p> <p>强制覆盖:通过请求类型(GET|POST)、请求路径(/proxy/{service}/{apiPath})可以唯一确定一个聚合接口,当聚合接口已存在时,未勾选该选项时忽略该聚合接口导入,勾选该选项时覆盖已存在的聚合接口配置;</p> <p>点击 确定 按钮后导入聚合接口配置。</p> <h2 id="调试模式"><a href="#调试模式" class="header-anchor">#</a> 调试模式</h2> <p>调试模式用于对接口开发过程中的调试使用,当打开调试模式后,Fizz网关会将聚合接口调用底层服务接口的请求响应信息以及耗时、聚合结果、步骤上下文打印到日志中,通过日志可以清楚的了解聚合接口的实际执行情况。调试模式会对网关性能造成影响,因此不建议在生产环境打开调试模式,当调试完成后及时关闭调试模式,避免打印过多日志造成资源浪费,下面介绍调试模式的使用。</p> <p>勾选想要打开调试模式的接口,点击 打开调试模式 按钮弹出确认窗口,如图所示。</p> <p><img src="/manager_aggregate_debug_mode_1.png" alt="manager_aggregate_debug_mode_1"></p> <p>点击 确定 按钮确认打开调试模式。</p> <p><img src="/manager_aggregate_debug_mode_2.png" alt="manager_aggregate_debug_mode_2"></p> <p>勾选想要关闭调试模式的接口,点击 关闭调试模式 按钮弹出确认窗口,如图所示。</p> <p><img src="/manager_aggregate_debug_mode_3.png" alt="manager_aggregate_debug_mode_3"></p> <p>点击 确定 按钮确认关闭调试模式。</p> <p><img src="/manager_aggregate_debug_mode_4.png" alt="manager_aggregate_debug_mode_4"></p> <h2 id="编辑接口"><a href="#编辑接口" class="header-anchor">#</a> 编辑接口</h2> <p>点击 编辑 按钮弹出编辑窗口,如图所示。</p> <p><img src="/manager_aggregate_edit_1.png" alt="manager_aggregate_edit_1"></p> <p><img src="/manager_aggregate_edit_2.png" alt="manager_aggregate_edit_2"></p> <h2 id="删除接口"><a href="#删除接口" class="header-anchor">#</a> 删除接口</h2> <p>点击 删除 按钮弹出删除确认窗口,如图所示。</p> <p><img src="/manager_aggregate_delete_1.png" alt="manager_aggregate_delete_1"></p> <p><img src="/manager_aggregate_delete_2.png" alt="manager_aggregate_delete_2"></p> <p>点击 确定 按钮后删除接口,处于已发布状态的接口无法删除,需要下线后才能操作删除。</p> <h2 id="发布-下线申请"><a href="#发布-下线申请" class="header-anchor">#</a> 发布|下线申请</h2> <p>发布|下线申请用于聚合接口的发布或者下线申请,只有通过审核人审核后申请人才能执行发布|下线操作,避免误操作‘,保证接口的安全。</p> <p>点击 发布|下线申请 按钮,弹出发布|下线申请窗口,如图所示。</p> <p><img src="/manager_aggregate_apply_1.png" alt="manager_aggregate_apply_1"></p> <p><img src="/manager_aggregate_apply_2.png" alt="manager_aggregate_apply_2"></p> <p>点击 添加 按钮后,弹出接口列表,勾选需要操作的接口,点击 确定 添加进申请中。</p> <p><img src="/manager_aggregate_apply_3.png" alt="manager_aggregate_apply_3"></p> <p>标题:申请的标题,长度不能超过200个字符,必填;</p> <p>类型:申请类型,可选发布|下线,必选;</p> <p>申请原因:申请的原因,长度不能超过2000个字符;</p> <p>选择审核人:选择有审核权限的人对申请进行审核,列表根据需要操作的接口动态变化(未添加接口时列表为空,拥有服务权限并且有待审核菜单权限的人、操作管理员角色的人为可选审核人),必选;</p> <p>点击 确定 按钮后提交申请,选择的审核人会收到申请审核邮件(审核人邮箱地址通过用户管理设置,更多详情请查看用户管理功能介绍),如图所示。</p> <p><img src="/manager_aggregate_apply_4.png" alt="manager_aggregate_apply_4"></p> <h2 id="接口测试"><a href="#接口测试" class="header-anchor">#</a> 接口测试</h2> <p>后台提供了可视化的接口调用界面,聚合接口创建完成后可通过该界面对接口进行调用测试。通过点击接口详情页面的 测试 按钮打开接口测试页面,如图所示。</p> <p><img src="/manager_aggregate_test_1.png" alt="manager_aggregate_test_1"></p> <p>跳转页面的同时后台会将接口当前的最新配置推送给Fizz网关生成一个测试接口,请求路径为/proxytest/{service}/{apiPath}。</p> <p><img src="/manager_aggregate_test_2.png" alt="manager_aggregate_test_2"></p> <p>点击 发送 按钮向指定接口发送一次请求,Response响应结果区域显示调用接口结果,如图所示。</p> <p><img src="/manager_aggregate_test_3.png" alt="manager_aggregate_test_3"></p> <p><img src="/manager_aggregate_test_4.png" alt="manager_aggregate_test_4"></p> <p>请求体tab用于配置请求的请求体参数。</p> <p><img src="/manager_aggregate_test_5.png" alt="manager_aggregate_test_5"></p> <p>请求头tab用于配置请求的请求头参数。</p> <p><img src="/manager_aggregate_test_6.png" alt="manager_aggregate_test_6"></p> <p>Query参数用于配置请求的Query参数。</p> <p><img src="/manager_aggregate_test_7.png" alt="manager_aggregate_test_7"></p> <p>返回Context:Fizz网关中一次聚合接口的请求过程中内部会持有一个Context对象,该对象保存了本次请求过程的入参信息、底层服务接口调用信息、响应信息,通过勾选该选项,接口会将Context随接口响应一起返回,通过查看Context可以清楚地了解接口的实际调用过程。</p> <p>未勾选 返回Context 选项时,接口按配置输出的设置响应结果,如图所示。</p> <p><img src="/manager_aggregate_test_8.png" alt="manager_aggregate_test_8"></p> <p>勾选 返回Context 选项后,接口会将Context随接口响应一起返回,如图所示。</p> <p><img src="/manager_aggregate_test_9.png" alt="manager_aggregate_test_9"></p> <p>测试接口:调用测试接口,请求路径为/proxytest/{service}/{apiPath};</p> <p>正式接口:调用正式接口,请求路径为/proxy/{service}/{apiPath};</p> <p><img src="/manager_aggregate_test_10.png" alt="manager_aggregate_test_10"></p> <p>点击 保存 按钮会将本次测试请求数据保存下来,通过选取已保存的测试记录可以快速恢复请求数据,如图所示。</p> <p><img src="/manager_aggregate_test_11.png" alt="manager_aggregate_test_11"></p> <p>标题:本次测试数据保存时使用的标题,长度不能超过2000个字符,保存后在历史测试记录列表显示,如图所示。</p> <p><img src="/manager_aggregate_test_12.png" alt="manager_aggregate_test_12"></p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">2020-11-9 11:50</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
|
||
←
|
||
<a href="/guide/manager/manager_service.html" class="prev">
|
||
服务管理
|
||
</a></span> <span class="next"><a href="/guide/manager/manager_aggregate_op_log.html">
|
||
操作日志
|
||
</a>
|
||
→
|
||
</span></p></div> </main></div><div class="global-ui"></div></div>
|
||
<script src="/assets/js/app.307fd529.js" defer></script><script src="/assets/js/2.5b001851.js" defer></script><script src="/assets/js/14.7e909813.js" defer></script>
|
||
</body>
|
||
</html>
|