写给初学者的话:这是一套完整的、易懂的 FastAPI 教程。我会像朋友一样,手把手教你从零开始学习 FastAPI。每个例子都有详细的中文注释,保证你能看懂!
FastAPI 是一个用 Python 写 Web API 的现代框架。简单来说:
- 🏃 超快:性能堪比 Node.js 和 Go
- 😊 简单:代码少、易学易用
- 🔍 智能:编辑器会自动提示,写代码像聊天一样轻松
- 📖 自动文档:不用写文档,FastAPI 自动生成漂亮的 API 文档
- 🛡️ 安全:自动验证数据,防止错误
类比:如果说写网站是开餐厅,FastAPI 就是一个超级厨房助手,帮你准备好所有工具,还会提醒你每一步怎么做!
| 特性 | FastAPI | Flask | Django |
|---|---|---|---|
| 学习难度 | ⭐⭐ 简单 | ⭐⭐ 简单 | ⭐⭐⭐⭐ 复杂 |
| 性能 | ⚡⚡⚡ 很快 | ⚡ 一般 | ⚡⚡ 较快 |
| 自动文档 | ✅ 有 | ❌ 无 | ❌ 无 |
| 类型检查 | ✅ 强大 | ❌ 无 | ⚡ 一般 |
| 异步支持 | ✅ 原生支持 | ⚡ 需要插件 | ✅ 支持 |
| 适用场景 | API 开发 | 小项目 | 大型网站 |
- 开发手机 APP 的后端 API
- 微服务架构
- 数据科学项目的 API 接口
- 机器学习模型部署
- 前后端分离项目
确保你的 Python 版本 >= 3.7
# 检查 Python 版本
python --version
# 或者
python3 --version# 创建文件夹
mkdir my-fastapi-learning
cd my-fastapi-learning# 创建虚拟环境(推荐)
python -m venv venv
# 激活虚拟环境
# Mac/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# 激活成功后,命令行前面会显示 (venv)为什么要虚拟环境? 就像给每个项目一个独立的工具箱,不会和其他项目的工具混在一起。
# 安装 FastAPI 和运行服务器
pip install fastapi uvicorn[standard]
# 安装其他需要的包
pip install pydantic python-multipart sqlalchemy# 检查是否安装成功
pip list | grep fastapi学习内容:
- 什么是 API?
- 创建最简单的 FastAPI 应用
- 访问自动生成的文档
预计时间:30 分钟
实际效果:运行后能看到 "欢迎来到 FastAPI 世界!"
学习内容:
- URL 里传递变量(比如:
/users/123) - 类型转换和验证
- 使用枚举限制参数值
生活例子:
网址:/users/123
就像:告诉快递员送到"3号楼123室"
预计时间:45 分钟
学习内容:
- URL 参数(比如:
?page=1&size=10) - 可选参数和必需参数
- 分页、搜索、过滤
生活例子:
网址:/products?color=red&size=large
就像:在淘宝搜索"红色"的"大号"商品
预计时间:45 分钟
学习内容:
- 接收 JSON 数据
- Pydantic 模型验证
- 自定义验证规则
生活例子:
发送用户注册信息:
{
"username": "张三",
"email": "zhangsan@example.com",
"age": 25
}预计时间:1 小时
学习内容:
- 控制返回的数据格式
- 隐藏敏感信息(比如密码)
- 统一响应格式
为什么重要:保护用户隐私,不会把密码返回给前端!
预计时间:1 小时
学习内容:
- 处理 HTML 表单
- 上传文件(图片、文档)
- 文件类型和大小验证
实际应用:上传头像、上传简历
预计时间:1 小时
学习内容:
- 优雅地处理错误
- 自定义错误消息
- 统一错误格式
生活例子:
用户输入错误 → 友好提示 "用户名至少3个字符"
而不是 → "500 Internal Server Error"
预计时间:1 小时
学习内容:
- 代码复用
- 身份验证
- 权限控制
为什么重要:这是 FastAPI 最强大的功能!
预计时间:1.5 小时
学习内容:
- 连接 SQLite 数据库
- 使用 SQLAlchemy ORM
- 增删改查(CRUD)操作
实际应用:保存用户、商品、订单数据
预计时间:2 小时
学习内容:
- 日志记录
- 性能监控
- CORS 跨域
- 限流保护
生活例子:中间件就像安检,每个请求都要经过检查
预计时间:1.5 小时
- 打开文件:从
01_hello_world.py开始 - 阅读注释:每行代码都有详细的中文注释
- 运行代码:
uvicorn 01_hello_world:app --reload
- 打开浏览器:访问 http://127.0.0.1:8000/docs
- 测试 API:在自动文档里点击 "Try it out" 测试
- 修改代码:尝试改改代码,看看会发生什么
每节课后都有 🎯 练习题,建议你都做一遍!
- 快速模式(每天 2 小时):2 周完成
- 正常模式(每天 1 小时):1 个月完成
- 轻松模式(周末学习):2 个月完成
重要提示:不要急,理解比速度重要!
- 创建文件
hello.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def hello():
return {"message": "你好,FastAPI!"}- 运行:
uvicorn hello:app --reload-
打开浏览器:
-
看到响应:
{"message": "你好,FastAPI!"}🎉 恭喜!你已经创建了第一个 API!
学完本教程,你将能够:
✅ 独立开发 RESTful API
✅ 连接数据库进行数据操作
✅ 实现用户认证和权限控制
✅ 处理文件上传
✅ 编写可维护的、专业的代码
✅ 部署自己的 API 服务
答:当然可以!本教程就是为新手设计的。只要你:
- 懂一点 Python 基础(变量、函数、类)
- 愿意动手实践
- 遇到问题善于思考
答:强烈建议按顺序学!因为:
- 后面的课程会用到前面的知识
- 知识点循序渐进,不会感到吃力
答:因人而异:
- 有 Python 基础:1-2 周
- 编程初学者:1-2 个月
- 记住:理解 > 速度
答:uvicorn 是运行 FastAPI 的服务器,就像:
- 代码是饭菜
- uvicorn 是炉灶
- 没有炉灶,饭菜做不出来
答:开启"热重载":
- 修改代码后自动重启服务器
- 不用手动停止再启动
- 开发时超级方便!
# 不用类型提示
def add(a, b):
return a + b
# 使用类型提示
def add(a: int, b: int) -> int:
return a + b好处:
- 编辑器会提示错误
- FastAPI 自动验证数据
- 代码更容易理解
答:可以!但建议:
- 变量名、函数名用英文
- 注释、文档用中文
- 返回给用户的内容用中文
- B站搜索 "FastAPI 教程"
- YouTube: "FastAPI Tutorial"
- 博客系统:用户、文章、评论
- 电商 API:商品、购物车、订单
- 待办事项:增删改查、用户管理
- 图片床:文件上传、用户认证
- 动手敲代码:不要只看,一定要自己敲
- 做笔记:记录重点和疑问
- 测试 API:在
/docs里多测试 - 看错误信息:错误信息会告诉你问题在哪
- 做练习:每节课后的练习题都做一遍
只看不练跳着学复制粘贴不思考遇到错误就放弃
第1天:环境准备 + Hello World
↓
第2-4天:路径参数、查询参数、请求体
↓
第5-7天:响应模型、文件上传、错误处理
↓
第8-10天:依赖注入、数据库、中间件
↓
第11-14天:完整项目实战
↓
🎉 你已经掌握 FastAPI!
遇到问题时:
- 查看错误信息:90% 的错误信息会告诉你问题所在
- 查看代码注释:每个文件都有详细注释
- 访问
/docs:查看 API 文档和测试 - Google/百度:搜索错误信息
- 查看官方文档:FastAPI 文档
准备好了吗?从第一课开始吧!
# 运行第一个示例
uvicorn 01_hello_world:app --reload
# 打开浏览器访问
# http://127.0.0.1:8000/docs记住:编程是一项技能,需要练习!
祝你学习愉快!加油!💪
- v1.0 (2024): 完整的 FastAPI 中文教程
- 包含 10+ 个完整示例
- 所有代码都有详细注释
- 适合完全初学者
最后更新:2024 年
作者寄语:学习编程就像学游泳,开始可能会呛几口水,但只要坚持练习,很快就能自由游泳。FastAPI 是一个很棒的框架,希望你能享受学习的过程!🎉