API 代理(作为代理的 API Gateway)
什么是 API 代理
API 代理(API Gateway)是一台中间服务器,它接收来自客户端的 API 请求,进行处理后转发给后端服务。与普通 HTTP 代理不同,API Gateway 专门用于管理 API 流量:路由、认证、限流、转换和监控。
API Gateway 是微服务架构的关键组件,也是安全地将 API 开放给外部使用者的重要工具。
API 代理的作用
1. 统一入口
客户端访问单一地址(api.example.com),网关将请求路由到相应的微服务:
- api.example.com/users → user-service
- api.example.com/orders → order-service
- api.example.com/products → product-service
2. 认证与授权
网关在请求到达后端之前校验 API 密钥、JWT 令牌和 OAuth 凭据。这减轻了微服务的负担。
3. 限流
限制单个客户端/IP 在一段时间内的请求数量。防止滥用和过载。
4. 请求转换
修改请求头、参数以及请求/响应体。例如,为遗留服务把 XML 转换为 JSON。
5. 缓存
缓存 API 响应,以降低后端负载并加快响应速度。
6. 监控与日志
为每个 API 端点收集指标:请求数、延迟、错误率。
代理语境下的 API Gateway
与普通反向代理的区别
| 参数 | 反向代理(Nginx) | API Gateway |
|---|---|---|
| 侧重点 | 通用 HTTP 流量 | API 专用流量 |
| 路由 | 按 URL/Host | 按 API 路径、版本、请求头 |
| 认证 | Basic | OAuth、JWT、API 密钥、HMAC |
| 限流 | 简单(按 IP) | 高级(按用户、按套餐) |
| 转换 | 极少 | 完整(JSON/XML、协议) |
| 版本管理 | 无 | /v1/、/v2/ 路由 |
| 开发者门户 | 无 | 文档、密钥、监控 |
作为外部 API 代理的 API Gateway
除了作为自有服务的前端网关,API 代理还可以用于访问外部 API:
- 聚合 —— 把对多个 API 的请求合并为一个
- 绕过限流 —— 通过 IP 池分散请求
- 缓存 —— 减少对 API 的实际请求次数
- 故障切换 —— 在多个 API 服务商之间切换
常见的 API Gateway 方案
开源
| 方案 | 语言 | 特点 |
|---|---|---|
| Kong | Lua/Go | 最流行,插件化架构 |
| Tyk | Go | 内置分析和门户 |
| KrakenD | Go | 极快,无状态 |
| APISIX | Lua | Apache 基金会,动态路由 |
| Gravitee | Java | 事件原生,基于策略 |
云服务
| 方案 | 服务商 | 特点 |
|---|---|---|
| AWS API Gateway | Amazon | Lambda 集成,全托管 |
| Azure API Management | Microsoft | 开发者门户,功能完整的平台 |
| Google Cloud Endpoints | gRPC 原生,集成 Cloud Run | |
| Cloudflare API Shield | Cloudflare | DDoS 防护,边缘部署 |
API 代理的使用模式
API 编排
网关把多个微服务的响应合并为返回给客户端的单一响应。
Backend for Frontend(BFF)
为不同客户端(移动应用、Web、IoT)配置各自的 API Gateway,每个都针对相应的客户端类型做优化。
API 版本管理
把请求路由到不同版本的后端:
- /api/v1/users → 旧服务
- /api/v2/users → 新服务
熔断器(Circuit Breaker)
当错误率超过阈值时自动摘除有问题的后端。请求转而返回降级响应。
流量影子(Request Shadowing)
把流量复制到测试后端进行压测,同时不影响生产环境。
用 API 代理绕过限制
为付费 API 做代理
在付费 API 前面加一层代理,用于:
- 增加缓存(降低成本)
- 监控用量
- 故障时切换到备用 API
- 客户端侧限流
绕过 CORS
部署在您自己域名下的 API 代理,可解决从浏览器访问外部 API 时的 CORS 问题。
协议转换
通过 API Gateway 在 REST、GraphQL、gRPC、SOAP 之间转换。客户端使用一种协议通信,而后端使用另一种。
API Gateway 安全
关键措施
- TLS 终止 —— 在入口处启用 HTTPS
- 输入校验 —— 检查请求参数
- IP 白名单 —— 按 IP 限制访问
- JWT 校验 —— 验证令牌
- 请求大小限制 —— 限制请求体积
- SQL 注入防护 —— 过滤恶意请求
与 WAF 集成
API Gateway 通常会与 Web 应用防火墙集成,以获得额外的攻击防护。
结论
API 代理和 API Gateway 是用于管理 API 流量的专用代理类型。它们保障 API 的安全性、可扩展性和可观测性。在微服务架构中,API Gateway 是不可或缺的组件;而在与外部 API 打交道的场景中,它是强大的优化与管控工具。
