2020-09-09 14:42:18 +08:00
|
|
|
|
<!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="">
|
2020-11-09 11:57:42 +08:00
|
|
|
|
<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/9.9eb9244c.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/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="stylesheet" href="/assets/css/0.styles.34d67128.css">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
</head>
|
|
|
|
|
|
<body>
|
2020-11-09 11:57:42 +08:00
|
|
|
|
<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">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
首页
|
2020-11-09 11:57:42 +08:00
|
|
|
|
</a></div><div class="nav-item"><a href="/guide/intro/" class="nav-link">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
使用文档
|
|
|
|
|
|
</a></div> <a href="https://github.com/wehotel/fizz-gateway-community" target="_blank" rel="noopener noreferrer" class="repo-link">
|
|
|
|
|
|
查看源码
|
2020-11-09 11:57:42 +08:00
|
|
|
|
<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">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
首页
|
2020-11-09 11:57:42 +08:00
|
|
|
|
</a></div><div class="nav-item"><a href="/guide/intro/" class="nav-link">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
使用文档
|
|
|
|
|
|
</a></div> <a href="https://github.com/wehotel/fizz-gateway-community" target="_blank" rel="noopener noreferrer" class="repo-link">
|
|
|
|
|
|
查看源码
|
2020-11-09 11:57:42 +08:00
|
|
|
|
<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 open"><span>服务编排</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/aggregate/" aria-current="page" 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" aria-current="page" class="active 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"
|
2020-09-09 14:42:18 +08:00
|
|
|
|
input.request.headers.aaa
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment"># 获取入参请求体bbb字段的值</span>
|
|
|
|
|
|
input.request.body.bbb
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment"># 获取入参URL Query参数fff字段的值</span>
|
|
|
|
|
|
input.request.params.fff
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment"># 获取步骤1里request1的请求头ccc的值</span>
|
|
|
|
|
|
step1.request1.request.headers.ccc
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment"># 获取步骤1里request1的响应体ddd的值</span>
|
|
|
|
|
|
step1.request1.response.body.ddd
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment"># 获取步骤1结果里eee的值</span>
|
|
|
|
|
|
step1.result.eee
|
|
|
|
|
|
|
2020-11-09 11:57:42 +08:00
|
|
|
|
</code></pre></div><ul><li>支持单值引用,如:string,int等</li> <li>支持对象类型的引用</li></ul> <p>input: 表示调用方的输入数据,如H5页面提交上来的参数</p> <p>stepN.requestN: 表示步骤N里调用接口N的相关参数</p> <p>stepN.result: 表示步骤N的转换结果</p> <h4 id="fallback与预处理条件"><a href="#fallback与预处理条件" class="header-anchor">#</a> Fallback与预处理条件</h4> <p><img src="/aggr_config_step_fallback.png" alt=""></p> <p>Fallback:</p> <p>当调用接口发生异常(如超时、网络或系统异常)可配置fallback方案:</p> <ul><li>Stop: 终止请求并立即返回</li> <li>Continue: 继续后续的操作,且要设置默认的fallback json</li></ul> <p>预处理: 根据条件判断是否要调用接口,脚本返回true时才调用接口</p> <h4 id="配置步骤结果处理"><a href="#配置步骤结果处理" class="header-anchor">#</a> 配置步骤结果处理</h4> <p><img src="/aggr_config_step_result.png" alt=""></p> <ul><li><p>支持对步骤里调用的每一个接口的返回结果做数据转换,如果配置数据转换规则原样返回并存储到上下文里供后续使用</p></li> <li><p>支持对步骤里调用的一个或多个接口的返回结果做处理,并把处理完的结果存储到上下文里供后续使用,不配置则不处理</p></li></ul> <h2 id="配置输出"><a href="#配置输出" class="header-anchor">#</a> 配置输出</h2> <p><img src="/aggr_config_output.png" alt=""></p> <p>配置返回给调用方的结果</p> <ul><li>支持配置响应头</li> <li>支持配置响应体</li> <li>支持自定脚本处理复杂的业务逻辑</li></ul> <h2 id="脚本-2"><a href="#脚本-2" class="header-anchor">#</a> 脚本</h2> <p>目前支持以下脚本语言:</p> <p>Javascript (推荐) - ECMAScript 5标准</p> <p>JS脚本只支持单函数,且函数名不可变,在创建脚本时系统会自动生成初始模板,模板里包含相关使用说明</p> <p><img src="/aggr_config_script_1.png" alt=""></p> <p>Groovy</p> <p><img src="/aggr_config_script_2.png" alt=""></p> <h3 id="common-js-提供了操作context上下文的便捷操作函数"><a href="#common-js-提供了操作context上下文的便捷操作函数" class="header-anchor">#</a> common.js 提供了操作context上下文的便捷操作函数</h3> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token comment">/**
|
2020-09-09 14:42:18 +08:00
|
|
|
|
* context 上下文便捷操作函数
|
|
|
|
|
|
*
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token keyword">var</span> common <span class="token operator">=</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token comment">/* *********** private function begin *********** */</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 获取上下文中客户端请求对象</span>
|
|
|
|
|
|
<span class="token function-variable function">getInputReq</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>ctx <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span><span class="token string">'input'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span><span class="token string">'input'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'request'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">return</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token keyword">return</span> ctx<span class="token punctuation">[</span><span class="token string">'input'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'request'</span><span class="token punctuation">]</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 获取上下文步骤中请求接口的请求对象</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepReq</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>ctx <span class="token operator">||</span> <span class="token operator">!</span>stepName <span class="token operator">||</span> <span class="token operator">!</span>requestName<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">return</span> <span class="token punctuation">{</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><span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span><span class="token punctuation">[</span>requestName<span class="token punctuation">]</span> <span class="token operator">||</span>
|
|
|
|
|
|
<span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span><span class="token punctuation">[</span>requestName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'request'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">return</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token keyword">return</span> ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span><span class="token punctuation">[</span>requestName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'request'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 获取上下文步骤中请求接口的响应对象</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepResp</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>ctx <span class="token operator">||</span> <span class="token operator">!</span>stepName <span class="token operator">||</span> <span class="token operator">!</span>requestName<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">return</span> <span class="token punctuation">{</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><span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span><span class="token punctuation">[</span>requestName<span class="token punctuation">]</span> <span class="token operator">||</span>
|
|
|
|
|
|
<span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span><span class="token punctuation">[</span>requestName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'response'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">return</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token keyword">return</span> ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'requests'</span><span class="token punctuation">]</span><span class="token punctuation">[</span>requestName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'response'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/* *********** private function end *********** */</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/* *********** input begin ************ */</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取客户端请求头
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} headerName 请求头字段名 【选填】,不传时返回所有请求头
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getInputReqHeader</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> headerName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getInputReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> headers <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'headers'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> headerName <span class="token operator">?</span> headers<span class="token punctuation">[</span>headerName<span class="token punctuation">]</span> <span class="token operator">:</span> headers<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取客户端URL请求参数(query string)
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} paramName URL参数名 【选填】,不传时返回所有请求参数
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getInputReqParam</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> paramName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getInputReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> params <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'params'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> paramName <span class="token operator">?</span> params<span class="token punctuation">[</span>paramName<span class="token punctuation">]</span> <span class="token operator">:</span> params<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取客户端请求体
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} field 字段名 【选填】,不传时返回整个请求体
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getInputReqBody</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> field</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getInputReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> body <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'body'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> field <span class="token operator">?</span> body<span class="token punctuation">[</span>field<span class="token punctuation">]</span> <span class="token operator">:</span> body<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取返回给客户端的响应头
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} headerName 响应头字段名 【选填】,不传时返回所有响应头
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getInputRespHeader</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> headerName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getInputReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> headers <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'headers'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> headerName <span class="token operator">?</span> headers<span class="token punctuation">[</span>headerName<span class="token punctuation">]</span> <span class="token operator">:</span> headers<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取返回给客户端的响应体
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} field 字段名 【选填】,不传时返回整个响应体
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getInputRespBody</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> field</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getInputReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> body <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'body'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> field <span class="token operator">?</span> body<span class="token punctuation">[</span>field<span class="token punctuation">]</span> <span class="token operator">:</span> body<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/* *********** input begin ************ */</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/* *********** step request begin ************ */</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取步骤中调用的接口的请求头
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} stepName 步骤名【必填】
|
|
|
|
|
|
* @param {*} requestName 请求的接口名 【必填】
|
|
|
|
|
|
* @param {*} headerName 请求头字段名 【选填】,不传时返回所有请求头
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepReqHeader</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">,</span> headerName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getStepReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> headers <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'headers'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> headerName <span class="token operator">?</span> headers<span class="token punctuation">[</span>headerName<span class="token punctuation">]</span> <span class="token operator">:</span> headers<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取步骤中调用的接口的URL参数
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} stepName 步骤名【必填】
|
|
|
|
|
|
* @param {*} requestName 请求的接口名 【必填】
|
|
|
|
|
|
* @param {*} paramName URL参数名 【选填】,不传时返回所有URL参数
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepReqParam</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">,</span> paramName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getStepReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> params <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'params'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> paramName <span class="token operator">?</span> params<span class="token punctuation">[</span>paramName<span class="token punctuation">]</span> <span class="token operator">:</span> params<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取步骤中调用的接口的请求体
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} stepName 步骤名【必填】
|
|
|
|
|
|
* @param {*} requestName 请求的接口名 【必填】
|
|
|
|
|
|
* @param {*} field 字段名 【选填】,不传时返回整个请求体
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepReqBody</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">,</span> field</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> req <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getStepReq</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> body <span class="token operator">=</span> req<span class="token punctuation">[</span><span class="token string">'body'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> field <span class="token operator">?</span> body<span class="token punctuation">[</span>field<span class="token punctuation">]</span> <span class="token operator">:</span> body<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取步骤中调用的接口的响应头
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} stepName 步骤名【必填】
|
|
|
|
|
|
* @param {*} requestName 请求的接口名 【必填】
|
|
|
|
|
|
* @param {*} headerName 响应头字段名 【选填】,不传时返回所有响应头
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepRespHeader</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">,</span> headerName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> resp <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getStepResp</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> headers <span class="token operator">=</span> resp<span class="token punctuation">[</span><span class="token string">'headers'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> headerName <span class="token operator">?</span> headers<span class="token punctuation">[</span>headerName<span class="token punctuation">]</span> <span class="token operator">:</span> headers<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取步骤中调用的接口的响应头
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} stepName 步骤名【必填】
|
|
|
|
|
|
* @param {*} requestName 请求的接口名 【必填】
|
|
|
|
|
|
* @param {*} field 字段名 【选填】,不传时返回整个响应头
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepRespBody</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">,</span> field</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">var</span> resp <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getStepResp</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> requestName<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">var</span> body <span class="token operator">=</span> resp<span class="token punctuation">[</span><span class="token string">'body'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> field <span class="token operator">?</span> body<span class="token punctuation">[</span>field<span class="token punctuation">]</span> <span class="token operator">:</span> body<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/**
|
|
|
|
|
|
* 获取步骤结果
|
|
|
|
|
|
* @param {*} ctx 上下文 【必填】
|
|
|
|
|
|
* @param {*} stepName 步骤名【必填】
|
|
|
|
|
|
* @param {*} field 字段名 【选填】,不传时返回整个步骤结果对象
|
|
|
|
|
|
*/</span>
|
|
|
|
|
|
<span class="token function-variable function">getStepResult</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">ctx<span class="token punctuation">,</span> stepName<span class="token punctuation">,</span> field</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>ctx <span class="token operator">||</span> <span class="token operator">!</span>stepName <span class="token operator">||</span> <span class="token operator">!</span>ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token keyword">return</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token keyword">var</span> result <span class="token operator">=</span> ctx<span class="token punctuation">[</span>stepName<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'result'</span><span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token keyword">return</span> field <span class="token operator">?</span> result<span class="token punctuation">[</span>field<span class="token punctuation">]</span> <span class="token operator">:</span> result<span class="token punctuation">;</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">/* *********** step request end ************ */</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">;</span>
|
|
|
|
|
|
|
|
|
|
|
|
</code></pre></div><h3 id="context-js-数据结构"><a href="#context-js-数据结构" class="header-anchor">#</a> context.js 数据结构</h3> <div class="language-javascript extra-class"><pre class="language-javascript"><code>
|
|
|
|
|
|
<span class="token comment">// 上下文,用于保存客户输入输出和每个步骤的输入与输出结果</span>
|
|
|
|
|
|
<span class="token keyword">var</span> context <span class="token operator">=</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token comment">// 是否DEBUG模式</span>
|
|
|
|
|
|
debug<span class="token operator">:</span><span class="token boolean">false</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 各个操作的耗时</span>
|
|
|
|
|
|
elapsedTimes<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token punctuation">[</span>actionName<span class="token punctuation">]</span><span class="token operator">:</span> <span class="token number">123</span><span class="token punctuation">,</span> <span class="token comment">// 操作名称:耗时</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 客户输入和接口的返回结果</span>
|
|
|
|
|
|
input<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
request<span class="token operator">:</span><span class="token punctuation">{</span>
|
|
|
|
|
|
path<span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
|
|
|
|
|
|
method<span class="token operator">:</span> <span class="token string">"GET/POST"</span><span class="token punctuation">,</span>
|
|
|
|
|
|
headers<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
body<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
params<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
response<span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token comment">// 聚合接口的响应</span>
|
|
|
|
|
|
headers<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
body<span class="token operator">:</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>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 步骤</span>
|
|
|
|
|
|
step1<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
requests<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token comment">// 接口1</span>
|
|
|
|
|
|
request1<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
<span class="token comment">// 请求相关参数</span>
|
|
|
|
|
|
request<span class="token operator">:</span><span class="token punctuation">{</span>
|
|
|
|
|
|
url<span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
|
|
|
|
|
|
method<span class="token operator">:</span> <span class="token string">"GET/POST"</span><span class="token punctuation">,</span>
|
|
|
|
|
|
headers<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
body<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
<span class="token comment">// 根据转换规则转换后的接口响应</span>
|
|
|
|
|
|
response<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
headers<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
body<span class="token operator">:</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>
|
|
|
|
|
|
<span class="token comment">// 接口2</span>
|
|
|
|
|
|
request2<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
request<span class="token operator">:</span><span class="token punctuation">{</span>
|
|
|
|
|
|
url<span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
|
|
|
|
|
|
method<span class="token operator">:</span> <span class="token string">"GET/POST"</span><span class="token punctuation">,</span>
|
|
|
|
|
|
headers<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
body<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
response<span class="token operator">:</span> <span class="token punctuation">{</span>
|
|
|
|
|
|
headers<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
body<span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token punctuation">}</span>
|
|
|
|
|
|
<span class="token comment">//...</span>
|
|
|
|
|
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="token comment">// 步骤结果</span>
|
|
|
|
|
|
result<span class="token operator">:</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>
|
|
|
|
|
|
|
2020-11-09 11:57:42 +08:00
|
|
|
|
</code></pre></div><h2 id="异常处理"><a href="#异常处理" class="header-anchor">#</a> 异常处理</h2> <p>当要在脚本里中止请求时可以通过以下方式来实现</p> <p><img src="/aggr_config_exception.png" alt=""></p> <p>返回一个对象且这个对象包含一个_stopAndResponse等于true的属性,Fizz会终止后续的操作并把这个对象返回给调用方。</p> <h2 id="配置路由"><a href="#配置路由" class="header-anchor">#</a> 配置路由</h2> <p>至此服务编排的接口配置完成,但此时还不能通过网关访问接口,需要到网关管理-路由管理里配置路由</p> <p><img src="/aggr_config_route.png" alt=""></p> <h2 id="在线测试"><a href="#在线测试" class="header-anchor">#</a> 在线测试</h2> <p><img src="/aggr_config_test.png" alt=""></p> <ul><li>支持在线实时测试</li> <li>支持测试接口和正式接口隔离</li> <li>支持返回上下文,可以查看整个执行过程中各个步骤及请求的输入与输出</li> <li>支持保存历史测试记录</li></ul> <p><img src="/aggr_config_test2.png" alt=""></p> <p>支持调试模式,在测试接口和正式接口均可使用,修改后重新发布可实时生效,在调试模式下会打印请求日志及报文,主要用于排查线上问题</p> <h2 id="导入导出"><a href="#导入导出" class="header-anchor">#</a> 导入导出</h2> <p><img src="/aggr_config_import_export.png" alt=""></p> <p>导入导出主要用于在各个环境间同步接口配置,在开发环境配置好后导到测试环境中测试,测试完后导到生产环境进行发布</p> <h2 id="发布-下线和审核"><a href="#发布-下线和审核" class="header-anchor">#</a> 发布|下线和审核</h2> <p><img src="/aggr_release_1.png" alt=""></p> <p><img src="/aggr_release_2.png" alt=""></p> <p>目前发布|下线申请有以上两个入口。</p> <p><img src="/aggr_release_rollback1.png" alt=""></p> <p><img src="/aggr_release_rollback.png" alt=""></p> <ul><li>批量发布:对发布单里的接口进行批量发布</li> <li>批量回滚:对发布单里的接口进行批量回滚</li> <li>发布:实时发布到网关</li> <li>回滚:支持回滚到历史任何一个版本,可在发布历史里指定一个版本进行回滚</li> <li>下线:从网关删除接口,在后台可以通过发布功能再次上线</li></ul> <h3 id="发布流程说明"><a href="#发布流程说明" class="header-anchor">#</a> 发布流程说明</h3> <p>申请发布、审核、发布和下线功能的权限可根据需要灵活分配给不同角色,如:开发人员只能申请发布,上级领导审核,运维或测试人员执行发布、回滚或下线。在开发、测试和预生产环境为了方便开发人员调试也可把申请发布、审核、发布和下线功能都分配给开发人员。</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">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
←
|
2020-11-09 11:57:42 +08:00
|
|
|
|
<a href="/guide/aggregate/overview.html" class="prev">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
步骤总览
|
2020-11-09 11:57:42 +08:00
|
|
|
|
</a></span> <span class="next"><a href="/guide/plugin/">
|
2020-09-09 14:42:18 +08:00
|
|
|
|
插件开发
|
|
|
|
|
|
</a>
|
|
|
|
|
|
→
|
|
|
|
|
|
</span></p></div> </main></div><div class="global-ui"></div></div>
|
2020-11-09 11:57:42 +08:00
|
|
|
|
<script src="/assets/js/app.86b5ae26.js" defer></script><script src="/assets/js/2.5b001851.js" defer></script><script src="/assets/js/9.9eb9244c.js" defer></script>
|
2020-09-09 14:42:18 +08:00
|
|
|
|
</body>
|
|
|
|
|
|
</html>
|