现在位置: 首页 > FastAPI 教程 > 正文

FastAPI 教程

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 Python Web 框架,专为构建 RESTful API 而设计。

FastAPI 使用 Python 3.8+ 并基于标准的 Python 类型提示,使用 Starlette 和 Pydantic 构建,能够自动生成 API 文档并进行数据校验。


谁适合阅读本教程?

本教程适合有 Python 基础的开发者学习。如果你已经了解 Python 的基本语法和类型注解,那么你将能够快速上手 FastAPI。


学习本教程前你需要了解

学习本教程前你需要了解一些基础的 Web 知识及 Python 3.x 基础教程。如果你对 HTTP 请求方法(GET、POST 等)不太熟悉,建议先阅读 HTTP 教程


FastAPI 特点

FastAPI 之所以在 Python Web 框架中脱颖而出,主要得益于以下特点:

特点说明
高性能基于 Starlette 和 Pydantic,性能与 NodeJS 和 Go 相当,是最快的 Python 框架之一
快速开发开发速度提升约 200%-300%,标准类型声明即可完成数据校验和文档生成
减少错误减少约 40% 的人为错误,类型系统自动捕获常见问题
自动文档自动生成交互式 API 文档(Swagger UI 和 ReDoc),无需手动维护
类型安全基于标准 Python 类型提示,编辑器提供全面的自动补全和错误检查
异步支持原生支持 async/await,可高效处理 IO 密集型任务

FastAPI 适用场景

场景说明
构建 API 后端用于构建 RESTful API,支持前后端分离的 Web 应用
微服务架构轻量高效,适合作为微服务后端框架
数据处理 API适用于接收和返回 JSON 数据的数据处理服务
实时通信支持 WebSocket,适用于实时通信场景
机器学习服务可将训练好的模型封装为 API,方便前端和其他服务调用

FastAPI 技术栈

FastAPI 构建在两个核心库之上:

组件作用说明
StarletteWeb 框架层提供路由、中间件、WebSocket 等基础 Web 功能,FastAPI 直接继承自 Starlette
Pydantic数据校验层基于 Python 类型提示进行数据校验、序列化和文档生成
UvicornASGI 服务器基于 uvloop 和 httptools 的高性能 ASGI 服务器,用于运行 FastAPI 应用
FastAPI 是 Starlette 的子类,因此你可以使用 Starlette 的所有功能。同时 FastAPI 完全兼容 Pydantic,包括基于 Pydantic 的 ORM(如 SQLModel)等外部库。

为什么选择 FastAPI?

对比维度FastAPIFlaskDjango
性能高(异步,ASGI)中(同步,WSGI)中(同步,WSGI)
自动文档内置(Swagger UI + ReDoc)需第三方扩展需第三方扩展
类型校验内置(Pydantic)需手动实现需手动实现
异步支持原生支持需扩展3.1+ 支持
学习曲线较高
适用规模中小型 / 微服务中小型大型 / 全栈

相关链接

资源地址
FastAPI 官方文档https://fastapi.tiangolo.com/zh/
FastAPI 源码https://github.com/tiangolo/fastapi
Starlette 文档https://www.starlette.dev/
Pydantic 文档https://docs.pydantic.dev/