跳到主要内容

代理转发模式

代理转发模式不连接数据库,而是把平台接口作为反向代理:调用方访问平台地址,平台按配置转发到第三方 HTTP/HTTPS 接口,并把响应原样或按规则返回。适合统一出入参、隐藏真实地址、附加鉴权、收敛错误码等场景。

适用场景​

  • 第三方系统只提供固定接口,希望统一由平台鉴权、限流、记录日志。
  • 需要在调用第三方时附加固定 Token / API Key,避免把密钥下发给调用方。
  • 第三方响应错误码不统一,需要转换为平台业务错误码。
  • 需要把第三方接口纳入订阅、配额、缓存、监控等治理体系。

创建步骤​

  1. 进入【工作台】,点击「代理转发模式」。
  2. 配置路由:平台请求路径、第三方域名与路径、协议与方法。
  3. 按需配置请求体类型、响应类型。
  4. 配置第三方鉴权(如 Bearer Token)。
  5. 在右侧「请求参数」「返回参数」中声明对外暴露的参数,并建立上下游参数映射。
  6. 使用「测试」验证转发结果,确认后保存并发布。

路由配置​

字段说明示例
接口名称平台内展示名称查询订单
请求路径平台对外路径,带项目统一前缀/order/query
第三方域名/IP目标主机,可带 http://、https:// 前缀api.partner.com
第三方路径目标接口路径/v1/orders/query
协议https 或 http;域名已带协议时以域名中的协议为准https
请求方式GET / POST / PUT / DELETE / PATCHPOST
连接超时与第三方建立连接的超时,单位 ms5000
响应超时等待第三方响应的超时,单位 ms10000

平台最终访问地址为「协议 + 第三方域名/IP + 第三方路径」,路径拼接会自动处理首尾 /。请求路径与第三方路径都不允许包含 * 通配符。

请求与响应格式​

配置可选值说明
请求体类型JSON / x-www-form-urlencoded仅非 GET 请求展示
响应类型JSON / 文本JSON 才会参与错误码映射与结构化返回
  • 请求体类型为 JSON 时,Body 参数会组装为 JSON 对象。
  • 为 x-www-form-urlencoded 时,Body 参数会组装为表单。
  • 请求头只透传 Accept、Accept-Language、Content-Type 三个安全头,其余客户端请求头默认丢弃。
  • 返回响应会过滤 Content-Length、Connection、Transfer-Encoding 等逐跳头。
  • 非流式响应体最大读取 10 MB,超出直接报错。

第三方鉴权​

在「鉴权配置」中选择平台访问第三方时使用的认证方式:

类型配置项实际效果
无鉴权—不附加认证信息
Bearer TokenToken添加 Authorization: Bearer <token>
Basic Auth用户名、密码添加 Authorization: Basic <base64>
API Key(Header)Key 名、Key 值在指定请求头中附加 Key
API Key(Query)Key 名、Key 值在查询参数中附加 Key
密钥保管

第三方 Token、密码、Key 保存在接口定义中,调用方不可见。请限制接口编辑权限,避免密钥通过导出或截图外泄。

参数映射​

代理模式的请求参数支持「平台参数名 → 下游参数名」映射:

  • 位置为 Query 的参数拼接到第三方 URL 查询串。
  • 位置为 Header 的参数写入转发请求头。
  • 位置为 Path 的参数替换第三方路径中的 {name} 占位符;框架会同时尝试 columnName 与 paramName 两种写法。
  • 位置为 Body 的参数按请求体类型组装。

未配置任何 Query 参数时,平台会把调用方原始查询参数整体透传;一旦配置了 Query 参数,则只转发配置项及未被消费的原始参数。

返回参数侧提供「导入」:粘贴第三方 JSON 响应示例,平台自动解析为树形字段,便于快速建立响应结构。源参数名 用于把第三方字段映射为平台对外字段。

路径参数安全限制

Path 参数值不允许包含 /、\、..、% 及控制字符,防止在允许的第三方主机内穿越到非预期端点。

错误码映射​

第三方错误默认保留原始 HTTP 语义。若希望统一转换为平台业务错误,可在「错误映射」中配置:

字段说明
来源类型HTTP 状态码 或 业务码(读取响应 JSON 的 code 字段)
来源值要匹配的状态码或业务码
目标错误码转换后的平台错误码;留空默认 40016
目标提示转换后的提示文案;留空时尝试提取第三方 msg/message/error

匹配顺序:先按业务码匹配,HTTP 状态码为 4xx/5xx 时再按状态码匹配。只有响应类型为 JSON 时才生效;文本响应保持第三方原始语义。未配置映射时,第三方 HTTP 错误按原始状态返回。

出网安全​

平台内置代理出网闸门(SSRF 防护):

  • 仅允许 http / https 协议。
  • 硬拒绝 localhost、云厂商元数据地址(如 169.254.169.254、100.100.100.200)等主机。
  • 默认禁止访问内网地址;启用白名单后,只有白名单内的主机(可带端口)可以出网。
  • 域名解析失败按拒绝处理(fail-closed)。
  • 相关配置:apigo.egress.enabled(默认 true)、apigo.egress.allowed-hosts(逗号/分号/空格分隔)。

被拦截时返回 40022「目标地址不被允许访问」。生产环境如需访问内网第三方系统,应由管理员显式配置白名单,而不是关闭闸门。

测试与发布​

  • 点击底部「测试」打开调试面板,按参数位置填写后发起真实转发。
  • 测试用例可保存请求快照,后续回归。
  • Mock 规则可在第三方不可用时模拟响应。
  • 发布后接口进入当前环境,供凭证授权与订阅使用。

常见问题​

现象原因处理
40022 目标地址不被允许访问命中出网闸门或不在白名单检查目标地址,联系管理员配置白名单
40016 第三方接口调用失败连接失败、超时或第三方异常检查域名、端口、超时与第三方状态
第三方返回 401/403鉴权配置缺失或错误核对 Bearer / Basic / API Key 配置
请求体为空GET 请求不发送 Body,或未配置 Body 参数改用 POST 或补充 Body 参数
响应字段缺失未声明返回参数在返回参数中导入或补充映射
路径参数报非法字符Path 值包含 /、..、% 等对路径参数做编码或改用 Query

相关阅读​