# 实现思路(important)
![](https://oss.showapi.com/doc/3105/69/e676cdb2641e4a59af687a0e72e0f263.png)
全部流程应该是: **从req开始, 到req_response结束。 **
--
如果您对编程足够熟练,看完这个部分,结合页面布局, 您将完全可以开始使用,应该能满足一般业务需要。
另外, 因为版本更新,可能细节有改动, 所以你了解我们的设计思路, 除了更容易上手之外,也对未来的使用很有帮助,
有任何使用上的问题或建议,请联系我们的客服qq: 2802673087
## Req ---> Balance
### 1. 数据组成
该阶段最终实现目的是: 生成数据源级别参数列表。 额外的还有一些连接数据源数据库等附加操作。这里只介绍如何生成这两个参数列表。
首先,我们向数据源提供者请求数据,这时它会给我们一个请求参数列表(视为数据源级别),数据源级别的数据,由多部分组成:
```
{
name: '',
appId: '', //密钥
userUniqueId: '' // 如果接口需要一个调用者唯一性的unique标记
}
```
1. 让用户提供过来一部分(视为用户级别),比如name
2. 你再拼接上一部分, 比如常量appId,
3. 由showapi提供一部分, 比如userUniqueId.
嗯, 数据有了, 但是还有一个问题, 我们指定给用户传入的变量名, 结构。和数据源提供者需要的并非完全一样! 而且,当你一个接入点调用多个节点(你知道的给一个抽象的事物起一个好名称很困难,所以这里你就简单理解成数据源)来提供数据时,数据结构将变得更加复杂。因此, 需要一个地方来做变量名的映射(重命名,重置结构...)
### 2. 配置位置
`用户级别的数据:` 完全在req中指定, 各种字段的类型, 长度等字段约束均在req中,
![图1](https://oss.showapi.com/doc/3105/4/e8edec5ed6b14388b17e3718f5cda42a.png)
`由你拼接的数据:`:
+ 两种任选其一:
+ req中, 把字段类型设置成常量即可,如上图,
+ req_proxy中, 合成字段配置
![req_proxy中, 合成字段配置](https://oss.showapi.com/doc/3105/4/644c805fbc4c47e3821c49abb58623da.png)
`showapi提供的参数:`: req_proxy, 系统字段转发
> 注意: 仅仅是像时间戳一样的unique字符串, 跟showapi的用户数据库无关联
![](https://oss.showapi.com/doc/3105/4/8ae1471c077d4e81b20fb7d20ccc17b0.png)
### 3. 展示位置
**数据源级别和showapi级别的数据并不需要展示**
`用户级别的数据:` api接口详情页里`请求参数`下`应用级参数`, 比如[天气预报](https://www.showapi.com/apiGateway/view/?apiCode=9&pointCode=4 "天气预报")
![](https://oss.showapi.com/doc/3105/69/a9c0d006fa694d7687b2960f6106d91d.png)
### 4. 映射位置
三种参数均在proxy里配置映射, 最终给节点使用, 主要是修改参数的名称, 位置,以及给哪个节点使用
![](https://oss.showapi.com/doc/3105/4/6e20ee04ff374e7db449f0ae73d610d9.png)
`输入转发字段映射:` 用户级别的数据,以及设置了常量的数据源级别数据在这里做映射,
`系统字段转发:`showapi级别的数据,
`合成字段配置:` 你拼接的数据。除此之外,该功能允许你使用mustache语法将多个变量合并为一个, 这些变量来源于一个来源于用户输入, 一个来源于侧边栏的用户环境变量,另外为了方便调试, 也可以使用调试页面的用户输入, 因为没加前缀, 使用时尽量别命名空间冲突
`代码转换:` 暂无说明
## balance_response --> req_response
从节点返回的数据,也需要做变量声明和映射,再传给用户。跟 req--> balance阶段很相似,就不再赘述,除此之外, 你应该使用我们提供的负载均衡配置,以便让多个节点之间工作得更好。
正常逻辑, 当一个节点因为超时等故障需要切换到下一个备用节点,当所有节点均不能正常工作时应该返回一个mock数据(在balance_response里声明)
还需要有错误的日志, 或者因为未知原因,一段时间内你不想再提供数据, 你可以在请求参数里拼接一个我们规定好的常量, 若如此做,直接返回一个mock,而不走节点, 这个mock在req_response页面声明
![](https://oss.showapi.com/doc/3105/4/c2dcefcfe3d045b4a829be82899b4ad4.png)