Skip to content

FastAPI★

与 Flask/Django 对比、Starlette+Pydantic 组合、性能定位。

Updated View as Markdown
For humans

FastAPI 概述与选型

FastAPI 是现代异步 Web 框架,定位是“类型驱动、自动文档、高性能”。面试主线:它由什么组成、和 Flask/Django 怎么选、性能凭什么。

架构:Starlette + Pydantic

FastAPI = Starlette + Pydantic + 胶水层

  • Starlette:轻量 ASGI 框架,提供路由、中间件、WebSocket、SSE 等基础能力
  • Pydantic:数据模型,请求校验和响应序列化
  • FastAPI 胶水层:把两者接起来,加依赖注入、OpenAPI 自动文档、类型推断
  • 运行在 uvicorn(ASGI 服务器)上

与 Flask/Django 对比

维度 FastAPI Flask Django
异步 原生 async 同步为主(2.0+ 支持 async 视图) 3.1+ 异步视图
类型 类型驱动
文档 OpenAPI 自动生成 手动/插件 手动
数据校验 Pydantic 内置 手动 DRF 序列化器
ORM 自由(SQLAlchemy) 自由 内置 ORM
管理后台 内置 admin
生态 年轻但活跃 插件多 全栈全家桶

选型逻辑

  • 新项目、API 优先、团队熟悉类型 → FastAPI
  • 轻量同步服务、简单页面 → Flask
  • 需要 admin、ORM、认证全家桶、模板渲染 → Django

面试加分观点:FastAPI 的自动文档和校验是“类型即契约”的收益,Django 的强项是约定完备的全栈,Flask 适合快速原型。

性能定位

  • ASGI 异步模型,单进程可支撑数万并发连接(IO 密集)
  • 框架层开销小(Starlette 极简),性能接近 Node/Go 的框架层水平
  • 性能瓶颈通常在业务代码和数据库,不在框架
  • 对比 Flask(WSGI 同步):FastAPI 的异步 IO 并发能力明显更强,但 CPU 密集任务两者都要靠多进程

面试追问

  1. FastAPI 由什么组成? Starlette(ASGI 基础)+ Pydantic(数据)+ 自身的依赖注入和文档层
  2. 和 Django 怎么选? API 优先选 FastAPI,全栈带 admin/ORM 选 Django。FastAPI 异步和类型是核心差异
  3. 为什么快? ASGI 异步 IO、框架开销小。IO 密集场景并发能力强,CPU 密集不受益
  4. 自动文档怎么来的? 类型注解驱动:参数和模型类型推导出 OpenAPI schema,Swagger UI 直接可用
  5. Flask 会被取代吗? 简单场景仍有生态优势,但新 API 项目 FastAPI 已是主流选择
Navigation

Type to search…

↑↓ navigate↵ selectEsc close