一个完整的 FastAPI 博客系统实现,通过 7 天渐进式学习,从基础搭建到 JWT 认证的完整开发过程。
本项目配套完整的博客教程系列7天入门FastAPI,详细讲解每个版本的实现过程:
- Day1: 基础搭建 - FastAPI 项目初始化和基本 API
- Day2: 数据验证增强 - Pydantic 模型和输入验证
- Day3: 数据持久化 - SQLAlchemy 数据库集成
- Day4: 异步优化 - 异步数据库操作和性能提升
- Day5: 中间件系统 - CORS、日志记录和异常处理
- Day6: 依赖注入 - FastAPI 依赖系统和代码组织
- Day7: JWT 认证 - 用户认证和权限控制
- ✅ 用户注册和登录
- ✅ 文章创建、编辑、删除
- ✅ 文章列表和详情查看
- ✅ 用户个人资料管理
- ✅ 数据验证: Pydantic 模型验证
- ✅ 数据库: SQLAlchemy ORM + SQLite
- ✅ 异步支持: 全异步数据库操作
- ✅ 中间件: CORS、日志、异常处理
- ✅ 依赖注入: 模块化代码组织
- ✅ JWT 认证: 安全的用户认证系统
- ✅ API 文档: 自动生成的 Swagger 文档
fastapi-blog-basic/
├── versions/ # 各版本实现
│ ├── v1_basic/ # Day1: 基础搭建
│ ├── v2_validation/ # Day2: 数据验证增强
│ ├── v3_database/ # Day3: 数据持久化
│ ├── v4_async/ # Day4: 异步优化
│ ├── v5_middleware/ # Day5: 中间件系统
│ ├── v6_dependency/ # Day6: 依赖注入
│ └── v7_jwt/ # Day7: JWT 认证
├── README.md # 项目说明
└── LICENSE # 开源协议
- Web 框架: FastAPI
- 数据库: SQLite + SQLAlchemy
- 数据验证: Pydantic
- 认证: JWT (JSON Web Tokens)
- 异步支持: asyncio + aiosqlite
- API 文档: Swagger UI (自动生成)
- FastAPI 应用初始化
- 基本的用户和文章 API
- 内存数据存储
- 简单的数据模型
- Pydantic 数据验证模型
- 输入数据校验和错误处理
- API 文档完善
- 响应模型标准化
- SQLAlchemy ORM 集成
- SQLite 数据库存储
- 数据库模型定义
- CRUD 操作实现
- 异步数据库操作
- 性能优化
- 分页和搜索功能
- 异步会话管理
- CORS 跨域支持
- 请求日志记录
- 全局异常处理
- 统一错误响应格式
- FastAPI 依赖系统
- 代码模块化组织
- 分页参数依赖
- 数据库会话依赖
- JWT token 生成和验证
- 用户认证依赖
- 权限控制系统
- 安全的 API 访问
- Python 3.8+
- pip 包管理器
# 克隆项目
git clone https://github.com/yourusername/fastapi-blog-basic.git
cd fastapi-blog-basic
# 安装依赖 (以 v7_jwt 为例)
cd versions/v7_jwt
pip install fastapi uvicorn sqlalchemy aiosqlite python-jose[cryptography] python-multipart email-validator# 启动开发服务器
uvicorn main:app --reload
# 访问应用
# API 文档: http://localhost:8000/docs
# 应用首页: http://localhost:8000POST /users/register- 用户注册POST /users/login- 用户登录GET /users/profile- 获取用户信息GET /users- 用户列表
POST /posts- 创建文章GET /posts- 文章列表 (支持分页和搜索)GET /posts/{id}- 文章详情PUT /posts/{id}- 更新文章DELETE /posts/{id}- 删除文章GET /users/{id}/posts- 用户文章列表
GET /- 应用信息GET /health- 健康检查
SECRET_KEY = "your-secret-key" # 生产环境请使用强密钥
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30DATABASE_URL = "sqlite:///./blog.db" # SQLite 数据库
# 生产环境建议使用 PostgreSQL- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 协议 - 查看 LICENSE 文件了解详情
- FastAPI - 现代、快速的 Web 框架
- SQLAlchemy - Python SQL 工具包
- Pydantic - 数据验证库
如有问题或建议,欢迎通过以下方式联系:
- 提交 Issue
- 发起 Discussion
- 邮件联系
⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!