144 lines
54 KiB
HTML
144 lines
54 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="/fizz-gateway-community/assets/css/0.styles.233b9b7b.css" as="style"><link rel="preload" href="/fizz-gateway-community/assets/js/app.bf39d9b6.js" as="script"><link rel="preload" href="/fizz-gateway-community/assets/js/2.5b001851.js" as="script"><link rel="preload" href="/fizz-gateway-community/assets/js/14.cc27c55a.js" as="script"><link rel="prefetch" href="/fizz-gateway-community/assets/js/10.1253731e.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/11.8c833bde.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/12.61089982.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/13.25760eda.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/15.c6e43d45.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/16.d04bc2ac.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/17.7cec28a6.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/18.91abb322.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/19.a05f9317.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/20.e44fcf7d.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/21.8859e956.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/22.69bbe610.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/23.d558c8c3.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/24.90d6ddb8.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/25.0f5aa895.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/26.48d84783.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/27.b9f6747b.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/28.79d861a5.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/29.338541e0.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/3.a51774e3.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/30.37a581ce.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/4.7d5f245c.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/5.abc10683.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/6.ee90ff38.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/7.e3b70354.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/8.834b8e71.js"><link rel="prefetch" href="/fizz-gateway-community/assets/js/9.5f299cef.js">
|
|||
|
|
<link rel="stylesheet" href="/fizz-gateway-community/assets/css/0.styles.233b9b7b.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="/fizz-gateway-community/" 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="/fizz-gateway-community/" class="nav-link">
|
|||
|
|
首页
|
|||
|
|
</a></div><div class="nav-item"><a href="/fizz-gateway-community/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="/fizz-gateway-community/" class="nav-link">
|
|||
|
|
首页
|
|||
|
|
</a></div><div class="nav-item"><a href="/fizz-gateway-community/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="/fizz-gateway-community/guide/intro/" class="sidebar-link">什么是Fizz网关</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/intro/#什么是fizz网关" class="sidebar-link">什么是Fizz网关</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/intro/#fizz的设计" class="sidebar-link">Fizz的设计</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/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="/fizz-gateway-community/guide/installation/" class="sidebar-link">安装</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/installation/#安装依赖" class="sidebar-link">安装依赖</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/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="/fizz-gateway-community/guide/proxy/" class="sidebar-link">路由转发</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/proxy/#路由转发介绍" class="sidebar-link">路由转发介绍</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/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="/fizz-gateway-community/guide/aggregate/" class="sidebar-link">服务编排介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/#什么是服务编排" class="sidebar-link">什么是服务编排</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/#举例说明" class="sidebar-link">举例说明</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/#服务编排架构" class="sidebar-link">服务编排架构</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/#适用场景" class="sidebar-link">适用场景</a></li></ul></li><li><a href="/fizz-gateway-community/guide/aggregate/overview.html" class="sidebar-link">步骤总览</a></li><li><a href="/fizz-gateway-community/guide/aggregate/configuration.html" class="sidebar-link">服务编排配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/configuration.html#创建服务" class="sidebar-link">创建服务</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/configuration.html#创建聚合接口" class="sidebar-link">创建聚合接口</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/configuration.html#配置输入" class="sidebar-link">配置输入</a></li><li class="sidebar-sub-header"><a href="/fizz-gateway-community/guide/aggregate/configuration.html#配置<E9858D>
|
|||
|
|
</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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/manager_aggregate_add_6.png" alt="manager_aggregate_add_6"></p> <p>点击 新增 按钮后弹出脚本配置窗口,如图所示。</p> <p><img src="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/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="/fizz-gateway-community/manager_aggregate_add_10.png" alt="manager_aggregate_add_10"></p> <p>配置入参:配置调用底层服务接口的请求参数;</p> <p>配置响应:配置调用底层服务接口的响应内容。</p> <p><img src="/fizz-gateway-community/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="/fizz-gateway-community/manager_aggregate_add_12.png" alt="manager_aggregate_add_12"></p> <p><img src="/fizz-gateway-c
|
|||
|
|
←
|
|||
|
|
<a href="/fizz-gateway-community/guide/manager/manager_service.html" class="prev">
|
|||
|
|
服务管理
|
|||
|
|
</a></span> <span class="next"><a href="/fizz-gateway-community/guide/manager/manager_aggregate_op_log.html">
|
|||
|
|
操作日志
|
|||
|
|
</a>
|
|||
|
|
→
|
|||
|
|
</span></p></div> </main></div><div class="global-ui"></div></div>
|
|||
|
|
<script src="/fizz-gateway-community/assets/js/app.bf39d9b6.js" defer></script><script src="/fizz-gateway-community/assets/js/2.5b001851.js" defer></script><script src="/fizz-gateway-community/assets/js/14.cc27c55a.js" defer></script>
|
|||
|
|
</body>
|
|||
|
|
</html>
|