Skip to content

lyston11/fastapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 FastAPI 从零到精通 - 完全教程

写给初学者的话:这是一套完整的、易懂的 FastAPI 教程。我会像朋友一样,手把手教你从零开始学习 FastAPI。每个例子都有详细的中文注释,保证你能看懂!

📚 目录


🤔 什么是 FastAPI?

FastAPI 是一个用 Python 写 Web API 的现代框架。简单来说:

  • 🏃 超快:性能堪比 Node.js 和 Go
  • 😊 简单:代码少、易学易用
  • 🔍 智能:编辑器会自动提示,写代码像聊天一样轻松
  • 📖 自动文档:不用写文档,FastAPI 自动生成漂亮的 API 文档
  • 🛡️ 安全:自动验证数据,防止错误

类比:如果说写网站是开餐厅,FastAPI 就是一个超级厨房助手,帮你准备好所有工具,还会提醒你每一步怎么做!


💡 为什么学习 FastAPI?

对比其他框架

特性 FastAPI Flask Django
学习难度 ⭐⭐ 简单 ⭐⭐ 简单 ⭐⭐⭐⭐ 复杂
性能 ⚡⚡⚡ 很快 ⚡ 一般 ⚡⚡ 较快
自动文档 ✅ 有 ❌ 无 ❌ 无
类型检查 ✅ 强大 ❌ 无 ⚡ 一般
异步支持 ✅ 原生支持 ⚡ 需要插件 ✅ 支持
适用场景 API 开发 小项目 大型网站

🎯 最适合的场景

  • 开发手机 APP 的后端 API
  • 微服务架构
  • 数据科学项目的 API 接口
  • 机器学习模型部署
  • 前后端分离项目

🛠️ 环境准备

第一步:安装 Python

确保你的 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

# 安装 FastAPI 和运行服务器
pip install fastapi uvicorn[standard]

# 安装其他需要的包
pip install pydantic python-multipart sqlalchemy

第五步:验证安装

# 检查是否安装成功
pip list | grep fastapi

🗺️ 学习路线图

📘 第一阶段:基础入门(1-4课)从这里开始!

第 1 课:01_hello_world.py - 你的第一个 API

学习内容

  • 什么是 API?
  • 创建最简单的 FastAPI 应用
  • 访问自动生成的文档

预计时间:30 分钟

实际效果:运行后能看到 "欢迎来到 FastAPI 世界!"


第 2 课:02_path_parameters.py - 路径参数

学习内容

  • URL 里传递变量(比如:/users/123
  • 类型转换和验证
  • 使用枚举限制参数值

生活例子

网址:/users/123 
就像:告诉快递员送到"3号楼123室"

预计时间:45 分钟


第 3 课:03_query_parameters.py - 查询参数

学习内容

  • URL 参数(比如:?page=1&size=10
  • 可选参数和必需参数
  • 分页、搜索、过滤

生活例子

网址:/products?color=red&size=large
就像:在淘宝搜索"红色"的"大号"商品

预计时间:45 分钟


第 4 课:04_request_body.py - 请求体

学习内容

  • 接收 JSON 数据
  • Pydantic 模型验证
  • 自定义验证规则

生活例子

发送用户注册信息:
{
  "username": "张三",
  "email": "zhangsan@example.com",
  "age": 25
}

预计时间:1 小时


📗 第二阶段:进阶技能(5-7课)

第 5 课:05_response_model.py - 响应模型

学习内容

  • 控制返回的数据格式
  • 隐藏敏感信息(比如密码)
  • 统一响应格式

为什么重要:保护用户隐私,不会把密码返回给前端!

预计时间:1 小时


第 6 课:06_form_file.py - 表单和文件

学习内容

  • 处理 HTML 表单
  • 上传文件(图片、文档)
  • 文件类型和大小验证

实际应用:上传头像、上传简历

预计时间:1 小时


第 7 课:07_error_handling.py - 错误处理

学习内容

  • 优雅地处理错误
  • 自定义错误消息
  • 统一错误格式

生活例子

用户输入错误 → 友好提示 "用户名至少3个字符"
而不是 → "500 Internal Server Error"

预计时间:1 小时


📙 第三阶段:高级特性(8-10课)

第 8 课:08_dependencies.py - 依赖注入

学习内容

  • 代码复用
  • 身份验证
  • 权限控制

为什么重要:这是 FastAPI 最强大的功能!

预计时间:1.5 小时


第 9 课:09_database.py - 数据库

学习内容

  • 连接 SQLite 数据库
  • 使用 SQLAlchemy ORM
  • 增删改查(CRUD)操作

实际应用:保存用户、商品、订单数据

预计时间:2 小时


第 10 课:10_middleware.py - 中间件

学习内容

  • 日志记录
  • 性能监控
  • CORS 跨域
  • 限流保护

生活例子:中间件就像安检,每个请求都要经过检查

预计时间:1.5 小时


📖 如何使用本教程

方式一:跟着代码学(推荐⭐)

  1. 打开文件:从 01_hello_world.py 开始
  2. 阅读注释:每行代码都有详细的中文注释
  3. 运行代码
    uvicorn 01_hello_world:app --reload
  4. 打开浏览器:访问 http://127.0.0.1:8000/docs
  5. 测试 API:在自动文档里点击 "Try it out" 测试
  6. 修改代码:尝试改改代码,看看会发生什么

方式二:边做边学

每节课后都有 🎯 练习题,建议你都做一遍!

学习时间表(供参考)

  • 快速模式(每天 2 小时):2 周完成
  • 正常模式(每天 1 小时):1 个月完成
  • 轻松模式(周末学习):2 个月完成

重要提示:不要急,理解比速度重要!


🚀 快速开始

5 分钟体验 FastAPI

  1. 创建文件 hello.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def hello():
    return {"message": "你好,FastAPI!"}
  1. 运行:
uvicorn hello:app --reload
  1. 打开浏览器:

  2. 看到响应:

{"message": "你好,FastAPI!"}

🎉 恭喜!你已经创建了第一个 API!


🎯 学习目标

学完本教程,你将能够:

✅ 独立开发 RESTful API
✅ 连接数据库进行数据操作
✅ 实现用户认证和权限控制
✅ 处理文件上传
✅ 编写可维护的、专业的代码
✅ 部署自己的 API 服务


💬 常见问题

Q1: 我是完全的新手,能学会吗?

:当然可以!本教程就是为新手设计的。只要你:

  • 懂一点 Python 基础(变量、函数、类)
  • 愿意动手实践
  • 遇到问题善于思考

Q2: 我应该按顺序学习吗?

:强烈建议按顺序学!因为:

  • 后面的课程会用到前面的知识
  • 知识点循序渐进,不会感到吃力

Q3: 学完需要多长时间?

:因人而异:

  • 有 Python 基础:1-2 周
  • 编程初学者:1-2 个月
  • 记住:理解 > 速度

Q4: uvicorn 是什么?

:uvicorn 是运行 FastAPI 的服务器,就像:

  • 代码是饭菜
  • uvicorn 是炉灶
  • 没有炉灶,饭菜做不出来

Q5: --reload 参数是干什么的?

:开启"热重载":

  • 修改代码后自动重启服务器
  • 不用手动停止再启动
  • 开发时超级方便!

Q6: 为什么要用类型提示?

# 不用类型提示
def add(a, b):
    return a + b

# 使用类型提示
def add(a: int, b: int) -> int:
    return a + b

好处

  1. 编辑器会提示错误
  2. FastAPI 自动验证数据
  3. 代码更容易理解

Q7: 我可以用中文命名吗?

:可以!但建议:

  • 变量名、函数名用英文
  • 注释、文档用中文
  • 返回给用户的内容用中文

📚 推荐学习资源

官方文档

视频教程

  • B站搜索 "FastAPI 教程"
  • YouTube: "FastAPI Tutorial"

练习项目推荐

  1. 博客系统:用户、文章、评论
  2. 电商 API:商品、购物车、订单
  3. 待办事项:增删改查、用户管理
  4. 图片床:文件上传、用户认证

🎓 学习建议

✅ 推荐的做法

  1. 动手敲代码:不要只看,一定要自己敲
  2. 做笔记:记录重点和疑问
  3. 测试 API:在 /docs 里多测试
  4. 看错误信息:错误信息会告诉你问题在哪
  5. 做练习:每节课后的练习题都做一遍

❌ 不推荐的做法

  1. 只看不练
  2. 跳着学
  3. 复制粘贴不思考
  4. 遇到错误就放弃

🔥 学习路径总结

第1天:环境准备 + Hello World
    ↓
第2-4天:路径参数、查询参数、请求体
    ↓
第5-7天:响应模型、文件上传、错误处理
    ↓
第8-10天:依赖注入、数据库、中间件
    ↓
第11-14天:完整项目实战
    ↓
🎉 你已经掌握 FastAPI!

📞 需要帮助?

遇到问题时:

  1. 查看错误信息:90% 的错误信息会告诉你问题所在
  2. 查看代码注释:每个文件都有详细注释
  3. 访问 /docs:查看 API 文档和测试
  4. Google/百度:搜索错误信息
  5. 查看官方文档FastAPI 文档

🌟 开始学习

准备好了吗?从第一课开始吧!

# 运行第一个示例
uvicorn 01_hello_world:app --reload

# 打开浏览器访问
# http://127.0.0.1:8000/docs

记住:编程是一项技能,需要练习!

祝你学习愉快!加油!💪


📝 版本历史

  • v1.0 (2024): 完整的 FastAPI 中文教程
  • 包含 10+ 个完整示例
  • 所有代码都有详细注释
  • 适合完全初学者

最后更新:2024 年


作者寄语:学习编程就像学游泳,开始可能会呛几口水,但只要坚持练习,很快就能自由游泳。FastAPI 是一个很棒的框架,希望你能享受学习的过程!🎉

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages