这是一个包含三种主流后端技术栈的完整项目脚手架,适合快速启动 API 服务开发。
- 框架: NestJS 10
- 语言: TypeScript
- ORM: TypeORM
- 特点: 企业级框架,模块化设计,依赖注入,适合大型项目
- 框架: FastAPI
- 语言: Python 3.11+
- ORM: SQLAlchemy 2.0
- 特点: 现代化、高性能、自动文档生成,类型提示完善
- 框架: Gin
- 语言: Go 1.21+
- ORM: GORM
- 特点: 高性能、轻量级、编译型语言,适合高并发场景
所有三个脚手架都包含以下功能:
- ✅ RESTful API 设计
- ✅ JWT 身份认证
- ✅ 用户管理模块(CRUD)
- ✅ 数据验证和类型安全
- ✅ API 文档(Swagger/OpenAPI)
- ✅ 数据库集成(PostgreSQL)
- ✅ 密码加密存储
- ✅ CORS 支持
- ✅ Docker 容器化
- ✅ 开发环境热重载
- ✅ 统一的响应格式
- ✅ 错误处理
speed-knowledge-server/
├── .cursorrules # Cursor AI 编码规则
├── nodejs-nestjs/ # NestJS 项目
├── python-fastapi/ # FastAPI 项目
├── go-gin/ # Gin 项目
└── README.md # 本文件
根据你的需求和偏好,进入对应的目录:
cd nodejs-nestjs
pnpm install
cp .env.example .env
# 编辑 .env 配置数据库
pnpm run start:dev访问: http://localhost:3000/api/docs
cd python-fastapi
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# 编辑 .env 配置数据库
python -m app.main访问: http://localhost:8000/api/docs
cd go-gin
go mod download
cp .env.example .env
# 编辑 .env 配置数据库
make swag # 生成 Swagger 文档
make run访问: http://localhost:8080/swagger/index.html
每个项目都包含 Docker 支持,可以一键启动:
# 进入任意项目目录
cd nodejs-nestjs # 或 python-fastapi 或 go-gin
# 启动服务(包含数据库)
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down| 特性 | NestJS | FastAPI | Gin |
|---|---|---|---|
| 语言 | TypeScript | Python | Go |
| 性能 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 学习曲线 | 中等 | 简单 | 中等 |
| 类型安全 | 强 | 强 | 强 |
| 生态系统 | 丰富 | 丰富 | 丰富 |
| 部署 | 容器/云平台 | 容器/云平台 | 单二进制文件 |
| 适用场景 | 企业应用 | AI/ML集成 | 高并发服务 |
| 开发速度 | 快 | 非常快 | 快 |
| 内存占用 | 中 | 中 | 低 |
如果你主要做前端开发,建议学习顺序:
-
首选 NestJS (Node.js + TypeScript)
- 与前端技术栈相似
- TypeScript 语法熟悉
- npm 生态系统熟悉
- 容易理解和上手
-
进阶 FastAPI (Python)
- 语法简洁易学
- 适合数据处理和 AI 集成
- 开发效率高
-
高级 Gin (Go)
- 学习编译型语言
- 理解高性能服务设计
- 掌握并发编程
每个项目都提供完整的 API 文档:
- NestJS: http://localhost:3000/api/docs
- FastAPI: http://localhost:8000/api/docs
- Gin: http://localhost:8080/swagger/index.html
GET /- 欢迎信息GET /health- 健康状态
POST /api/v1/auth/login- 用户登录
POST /api/v1/users- 创建用户GET /api/v1/users- 获取所有用户GET /api/v1/users/{id}- 获取单个用户PATCH /api/v1/users/{id}- 更新用户DELETE /api/v1/users/{id}- 删除用户
- API 测试: Postman, Insomnia, HTTPie
- 数据库管理: pgAdmin, DBeaver, TablePlus
- 容器管理: Docker Desktop, Portainer
- 版本控制: Git
NestJS:
- VSCode + TypeScript 扩展
- ESLint + Prettier
- Jest (测试)
FastAPI:
- VSCode/PyCharm
- Black (格式化)
- Pytest (测试)
Go:
- VSCode + Go 扩展 / GoLand
- Air (热重载)
- golangci-lint (代码检查)
每个项目都需要配置 .env 文件,主要配置项:
PORT- 服务端口DATABASE_URL- 数据库连接JWT_SECRET- JWT 密钥CORS_ORIGINS- 跨域配置
详细配置请查看各项目的 .env.example 文件。
# NestJS
cd nodejs-nestjs
pnpm run test
# FastAPI
cd python-fastapi
pytest
# Go
cd go-gin
go test -v ./...-
Docker 容器化部署 (推荐)
- 使用
docker-compose或 Kubernetes - 配置环境变量
- 设置健康检查
- 使用
-
云平台部署
- AWS (ECS, Lambda)
- Google Cloud (Cloud Run)
- Azure (App Service)
- 阿里云/腾讯云
-
传统服务器
- Nginx 反向代理
- PM2/Supervisor/Systemd 进程管理
- 配置 HTTPS
- 使用强 JWT 密钥(至少 32 字符)
- 启用 HTTPS
- 配置合适的 CORS 策略
- 实施请求限流
- 定期更新依赖
- 使用环境变量管理敏感信息
- 实施日志监控
- 数据库连接使用密码认证
欢迎提交 Issue 和 Pull Request!
MIT
Q: 我应该选择哪个技术栈? A: 如果你是前端工程师,推荐从 NestJS 开始。如果需要高性能,选择 Go。如果做数据分析或 AI,选择 FastAPI。
Q: 可以同时学习多个吗? A: 建议先精通一个,再学习其他的。基础的 REST API 概念是相通的。
Q: 生产环境使用哪个? A: 三个都可以用于生产环境。NestJS 适合企业应用,FastAPI 适合快速迭代,Gin 适合高并发场景。
Q: 如何切换数据库? A: 修改 ORM 配置和连接字符串即可。代码层面改动较小。
如有问题,欢迎提 Issue 或联系维护者。
祝你开发愉快!🎉