内容
<p align="center">
<img src="docs/banner.png" alt="动态 API 平台" width="100%" />
</p>
# 动态 API 平台
**用于创建、管理、测试 REST API 的开源平台,无需编写后端代码。**
[](https://github.com/Dynamic-API-Platform/Dynamic-API-Platform/releases/tag/v1.4.0)
[](LICENSE)
[](docker-compose.yml)
[](k8s/)
[](backend/package.json)
[](frontend/package.json)
[文档](https://dynamic-api-platform.github.io/Dynamic-API-Platform/) · [Wiki](https://github.com/Dynamic-API-Platform/Dynamic-API-Platform/wiki) · [快速开始](#快速开始) · [部署](#部署) · [截图](#截图) · [问题](https://github.com/Dynamic-API-Platform/Dynamic-API-Platform/issues)
---
## 概述
动态 API 平台允许您通过 Web 管理面板定义 REST 端点,附加 JSON 模式,配置访问控制,并立即提供数据 — 由 MongoDB 和运行时 API 引擎提供支持。
**新端点在您保存它们时立即生效** — 无需重启服务器,无需重新加载进程,也无需重新部署。路由定义存储在 MongoDB 中,并在每次请求时解析。
适用于原型设计、内部工具、轻量级 BaaS、AI 代理后端(MCP)和需要快速构建 API 的团队,无需样板。
### 什么使它与众不同
| | 动态 API 平台 | 典型的 CMS / 自定义后端 |
|--|----------------------|------------------------------|
| 添加 REST 端点 | 在管理 UI 中保存 → 立即调用 | 编辑代码 → 重建和/或重启 |
| 更改路径或模式 | 在 UI 中更新,立即生效 | 重新部署或重启工作进程 |
| 服务器停机时间 | API 更改时无停机时间 | 通常需要 |
## 快速开始
```bash
git clone https://github.com/Dynamic-API-Platform/Dynamic-API-Platform.git
cd Dynamic-API-Platform
docker compose up -d
```
| 服务 | URL |
|---------|-----|
| **管理面板** | http://localhost:8080 |
| **后端 API** | http://localhost:3001 |
| **健康检查** | http://localhost:3001/api/health |
**默认登录:** `admin` / `Admin123!` — 立即在生产环境中更改。
## 部署
三种选项 — [完整比较](docs/deployment-variants.md):
| 变体 | 命令 | 用例 |
|---------|---------|----------|
| **1. Docker(单个)** | `docker compose up -d` | 开发、演示、简单生产 |
| **2. Docker 副本集** | `docker compose -f docker-compose.replica.yml up -d` | Docker 上的高可用 MongoDB |
| **3. Kubernetes** | `./k8s/scripts/deploy.sh` | K8s 集群,扩展后端 |
```bash
npm run docker:replica:up # 变体 2
npm run k8s:deploy # 变体 3
```
## 截图
<p align="center">
<img src="docs/screenshots/dashboard.png" alt="带有自动化 KPI 和图表的仪表板" width="720" />
</p>
<p align="center">
<a href="docs/screenshots.md">完整画廊</a> — 登录、端点、MCP、cron、webhooks、API 密钥、日志、设置、系统
</p>
从正在运行的实例重新生成:`npm run screenshots`
## 功能
### 动态 API 引擎
- REST 端点(GET/POST/PUT/PATCH/DELETE)通过 UI — **立即生效**
- **`reference` 字段** — 外键,带有 `?populate=`
- 模式构建器、路径参数、验证、**网络访问** (域/IP 池)
- 内置 API 测试器和 OpenAPI / Swagger 文档
### 自动化和集成
- **Cron 作业** — 调度 JavaScript、HTTP 或端点操作
- **Webhooks** — 带可选 HMAC 的出站事件
- **API 密钥** — 机器到机器身份验证
- **MCP 服务器** — 将端点暴露为 AI 代理工具(`POST /api/mcp`,在 `/mcp` 处的管理员 UI)
- **JavaScript 处理程序** — 自定义 `async function handler(req, db)` 每个端点
- **API 版本控制** — 可选 `/api/v1/...` 路径
### 安全
- JWT + 刷新令牌,RBAC(5 个系统组 + 自定义)
- 网络访问规则、速率限制、登录锁定、审计日志
- Helmet、CORS、CSRF、bcrypt
### 管理面板
- **仪表板** — 自动化 KPI、请求/错误图表、健康小部件
- 端点、组、**API 模式** (ER 图)、**数据库资源管理器**
- 用户、组、**审计日志**,带有源过滤器
- 系统监控、设置(导出/导入)、浅色/深色主题
### DevOps
- Docker Compose、**MongoDB 副本集**、**Kubernetes** 清单
- Vitest 单元测试(27)、负载测试、GitHub Actions CI
- 健康检查、持久卷、nginx API 代理
- [GitHub Pages](https://dynamic-api-platform.github.io/Dynamic-API-Platform/) 文档 + [Wiki](https://github.com/Dynamic-API-Platform/Dynamic-API-Platform/wiki)
## 示例
```bash
TOKEN=$(curl -s -X POST http://localhost:3001/api/auth/login \
-H "Content-Type: application/json" \
-d '{"login":"admin","password":"Admin123!"}' | jq -r '.data.accessToken')
curl -X POST http://localhost:3001/api/products \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Laptop","price":999}'
```
## 文档
| 文档 | 描述 |
|----------|-------------|
| [入门](docs/getting-started.md) | 安装和第一个端点 |
| [部署变体](docs/deployment-variants.md) | Docker / 副本集 / Kubernetes |
| [架构](docs/architecture.md) | 系统设计和数据流 |
| [自动化](docs/automation.md) | Cron、webhooks、MCP、API 密钥、处理程序 |
| [API 参考](docs/api-reference.md) | 管理 REST API |
| [测试](docs/testing.md) | 单元测试、负载测试、CI |
| [Kubernetes](docs/kubernetes.md) | K8s 部署指南 |
| [MongoDB 副本集](docs/mongodb-replica-set.md) | 3 节点 Docker 副本集 |
| [截图](docs/screenshots.md) | UI 画廊 |
| [FAQ](docs/faq.md) | 常见问题 |
**在线:** https://dynamic-api-platform.github.io/Dynamic-API-Platform/
## 项目结构
```
├── docker-compose.yml # 变体 1 — 单个 MongoDB
├── docker-compose.replica.yml # 变体 2 — 3 节点副本集
├── k8s/ # 变体 3 — Kubernetes 清单
├── scripts/capture-screenshots.mjs
├── docs/ # GitHub Pages 文档
├── wiki/ # GitHub Wiki 镜像
├── backend/src/ # Express API、服务、模型
└── frontend/src/ # React 管理面板
```
## 本地开发
```bash
docker run -d -p 27017:27017 mongo:7
cd backend && npm install && npm run dev # :3001
cd frontend && npm install && npm run dev # :5173
```
参见 [开发指南](docs/development.md)。
## 测试
```bash
cd backend
npm test # Vitest — 27 个测试,无需 MongoDB
npm run test:load # autocannon — 后端必须正在运行
```
CI 在每次推送时运行 `npm test` + 构建。详情:[docs/testing.md](docs/testing.md)。
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `JWT_SECRET` | *(更改我)* | JWT 签名密钥 |
| `MONGODB_URI` | `mongodb://mongodb:27017/dynamic_api` | 数据库 URL(参见 `.env.example` 获取副本集) |
| `CORS_ORIGIN` | `http://localhost:8080` | 前端源 |
| `ADMIN_LOGIN` / `ADMIN_PASSWORD` | `admin` / `Admin123!` | 种子管理员 |
完整列表: [.env.example](.env.example)
## 贡献
参见 [CONTRIBUTING.md](CONTRIBUTING.md) 和 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。
## 更新日志
**[v1.4.0](https://github.com/Dynamic-API-Platform/Dynamic-API-Platform/releases/tag/v1.4.0)** (最新)— 部署变体(Docker 副本集,K8s),测试套件,仪表板自动化可观察性,严格验证,刷新截图。
完整历史: [CHANGELOG.md](CHANGELOG.md)
## 许可证
[Apache License 2.0](LICENSE) © 2026 动态 API 平台