FastAPI 系列
FastAPI 系列:从第一个接口到生产部署(当前篇)
FastAPI 的卖点经常被说成「快」和「自动文档」。真正让它适合 JSON API 的,是三件事叠在一起:ASGI 异步入口、用类型提示当契约、启动时生成 OpenAPI。把这三件事当成口号,后面就会把阻塞库塞进 async def,或者把密码字段漏进响应。

这个系列覆盖什么
覆盖一条完整路径:安装并启动、声明参数、用 Pydantic 建模、拆 Router、用 Depends 管生命周期、接 SQLAlchemy、规范化异常、接 JWT、分清中间件和后台任务、用 TestClient 替换依赖、最后按官方建议部署。
默认读者已经会一点 Python。不要求你先会 Flask 或 Django,但需要能读类型提示,例如 str | None 和 Annotated。
和 Flask、Django 差在哪
FastAPI 不是「更小的 Django」。它适合以 JSON API 为中心的服务;后台页面、全家桶 ORM、电池式用户系统不是它的默认能力。
本系列不讲什么
- 不把 FastAPI 当成模板引擎教程。需要 HTML 页面时,官方支持 Jinja2,但本系列不展开。
- 不讲 GraphQL、gRPC,也不把 WebSocket 做成主线。
- 不对比所有 ASGI 框架。选型时只要记住:要类型驱动的 OpenAPI,FastAPI 是目前最省事的一条路。
贯穿全系列的三条约束
契约进类型。 路径、查询、请求体、响应各自声明,不要在函数里东拼西凑
dict。副作用进 Depends。 数据库会话、当前用户、配置对象用依赖注入,这样测试才能替换。
开发命令不等于生产命令。
fastapi dev有热重载;生产用fastapi run或uvicorn --workers。
常见误区
FastAPI 比 Flask 快,所以业务也会更快
框架基准测的是「空路由能扛多少请求」。一旦路由里有同步数据库驱动或 CPU 重计算,瓶颈就不在框架。
有 /docs 就等于接口设计完成
文档只反映你声明的类型。字段没建模、鉴权没进 OpenAPI、错误响应没登记,文档会看起来完整,实际不可用。
async def 写上就异步了
async def 里调用阻塞库,事件循环会被卡住。后面部署篇会再强调:要么用异步驱动,要么把阻塞调用放到线程池。
小结
把 FastAPI 当成「用类型提示写 JSON API 的 ASGI 框架」,而不是万能 Web 全家桶。下一篇从 ASGI、Pydantic 和 OpenAPI 这三层把原理说清楚,然后再安装运行。
参考资料
FastAPI 系列:从第一个接口到生产部署
https://lautung.com/archives/fastapi-series
评论