# 实现思路(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)