FastAPI是一个基于Python的高性能Web框架,专门用于快速构建API接口服务。
一、对比FastAPI、Flask和Django
| 框架 | 类型 | 特点 | 适合 |
|---|---|---|---|
| Flask | 轻量框架 | 自由度高 | 小项目 |
| Django | 全栈框架 | 功能齐全 | 大型网站 |
| FastAPI | API框架 | 高性能 + 异步 | API服务 |
AI项目通常架构是:用户 → API → AI模型 → 返回结果,所以FastAPI更适合Python + AI这一学习方向。
二、FastAPI的特点
1、FastAPI支持异步
同步执行(Synchronous) :程序按照 顺序逐个执行任务,前一个任务完成后才会执行下一个任务。
执行流程:任务1 → 完成 → 任务2 → 完成 → 任务3
缺点:在等待数据库或网络响应时,程序通常会阻塞等待,无法继续处理其他任务。
异步执行(Asynchronous) :允许程序在 等待某些任务(如网络请求、数据库操作)完成时,先去执行其他任务,从而提高程序的并发处理能力。
执行流程:任务1开始 → 等待I/O
↓
处理任务2
↓
处理任务3
↓
任务1完成
在 Python 中通常使用:
python
async def function():
await some_task()
来实现异步执行。
在 Web 开发中,异步可以让服务器 在等待数据库或网络响应时处理其他请求,从而提高整体性能。
2、FastAPI支持Pydantic
Pydantic 是一个用于 数据验证和数据解析 的 Python 库,它通过 Python 类型注解(type hints) 来定义数据结构,并自动进行数据校验和转换,能够减少手动校验代码。
例如:
python
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
当接收到数据时,Pydantic 会自动检查:数据类型是否正确 、必填字段是否存在 以及数据格式是否符合要求。
如果数据不合法,会自动返回错误信息。
FastAPI 原生支持 Pydantic,所以可以带来很多优势:
自动数据校验:客户端发送的数据会自动验证类型和格式
减少手写校验代码:无需手动写大量 if 判断
自动生成 API 文档:数据模型会自动出现在 API 文档中
提高代码可读性:数据结构清晰,接口定义更规范
3、FastAPI支持可交互式文档,方便调试
FastAPI 会自动生成 可交互式 API 文档,常见地址:
/docs

该文档基于:OpenAPI、Swagger UI生成。
可交互式文档的主要作用有:
自动展示所有 API 接口:开发者可以直接查看接口路径、请求方式、参数和返回格式
**在线测试接口:**可以在网页中直接发送请求并查看返回结果
**方便前后端协作:**前端开发人员可以直接根据文档调用接口
**减少手写文档工作:**API 文档会随着代码自动更新