作为独立开发者,我需要频繁调用各种第三方 API。每次都要:
1. 去不同平台注册
2. 读不同的文档
3. 适配不同的请求/响应格式
4. 管理一堆 API Key
于是萌生了做 API 聚合网关的想法——一个入口,统一格式,调用所有 API。
点击空白处退出提示
作为独立开发者,我需要频繁调用各种第三方 API。每次都要:
1. 去不同平台注册
2. 读不同的文档
3. 适配不同的请求/响应格式
4. 管理一堆 API Key
于是萌生了做 API 聚合网关的想法——一个入口,统一格式,调用所有 API。
三两句 API 网关是一个公益性质的开源项目,旨在为开发者提供统一的 API 聚合入口。只需一个 API Key,即可调用天气、翻译、汇率、编码转换等上百个公共服务,告别为每个服务单独申请密钥的繁琐流程。
项目采用 Monorepo 架构,后端基于 Fastify + TypeScript + Prisma + PostgreSQL,前端基于 Next.js 14 + Tailwind CSS,全栈 TypeScript,类型安全从数据库到 UI 一以贯之。
安全是我们的生命线。API Key 使用 SHA-256 哈希存储(仅展示一次),密码用 bcrypt(cost factor 12),认证用 RS256 非对称 JWT,上游第三方密钥通过 AES-256-GCM 加密后落库,全链路 HTTPS 加密
项目已上线在http://139.224.42.59/
**技术选型:**
- **后端**: Fastify (比 Express 快 2-3倍) + TypeScript + Prisma ORM
- **数据库**: PostgreSQL (事务/关系) + Redis (限流/缓存/验证码)
- **前端**: Next.js 14 + Tailwind CSS + shadcn/ui
- **文档**: Scalar (比 Swagger UI 好看)
- **部署**: Docker Compose 一键启动
- API Key: SHA-256 哈希存储,仅生成时展示一次
- JWT: RS256 非对称签名,access 15min + refresh 7天
- 登录保护: 5次失败 → 15分钟锁定
- 限流: Redis 滑动窗口,按 Key + IP 双重维度
- 防滥用: 每小时超限自动封禁





评论