边走边聊 Python 3.8:Chapter 15:FastAPI 异步 API
Chapter 15:FastAPI 异步 API
现代应用需要速度,而 FastAPI 正是为此而生。本章将带你理解异步 API 的结构、数据验证、响应模型、路由设计,并构建一个可直接被浏览器或脚本调用的 API 服务。你会发现:当你的 API 足够快,你的系统就足够强。
“速度不是奢侈品,而是现代应用的基本礼貌。”
大家好!我是你的 Win7 + Python 3.8 专属导师。从 Flask 知识库一路走来,第14篇我们用 SQLite + SQLAlchemy 实现了持久化存储。现在,第15篇正式进入API 时代——切换到FastAPI,体验异步、自动 Swagger 文档、Pydantic 验证的现代开发方式!
为什么现在切换 FastAPI?
- Flask 是同步 WSGI,性能受限;FastAPI 是异步 ASGI,单线程并发能力提升 3~5 倍。
- 自动生成 OpenAPI 文档(/docs),浏览器点几下就能测试接口。
- Pydantic v2 强类型验证,代码更安全。
- 完全兼容 Win7 + Python 3.8(我们锁定老版本,避免 2026 年最新版要求 Python 3.10+ 的问题)。
本篇所有代码已在 Win7 + Python 3.8 环境下 100% 实测通过,零服务器,直接本地跑!
1. FastAPI 安装(Win7 + Python 3.8 锁定版本)
命令提示符执行(推荐新建虚拟环境):
pip install fastapi==0.110.3 uvicorn==0.24.0 pydantic==2.5.2 httpx==0.25.2 sqlalchemy==2.0.23 flask-sqlalchemy==3.0.5(这些版本是最后一批完美支持 Python 3.8 的稳定版,最新版已不支持 3.8)
2. Pydantic 数据验证 + async/await 入门
Pydantic:用 Python 类型提示自动验证请求/响应数据,再也不用手动写 if 判断。
async/await:让 IO 操作(数据库、外部 API)不阻塞线程。
对比 Flask(现场重构知识库)
Flask 旧代码(第14篇):
@knowledge_bp.route('/knowledge',methods=['GET'])deflist_knowledge():# 同步查询...FastAPI 重构后(异步版):
fromfastapiimportFastAPI,QueryfrompydanticimportBaseModelfromtypingimportList,Optional app=FastAPI(title="知识库 API",version="1.0")classKnowledgeResponse(BaseModel):id:inttitle:strcontent:strcreated_at:str@app.get("/knowledge",response_model=List[KnowledgeResponse])asyncdeflist_knowledge(page:int