FastAPI基础
1.入门与核心概念
- FastAPI 简介:特点(高性能、易学、高效编码、少Bug)、依赖项(Starlette, Pydantic)
- 安装与第一个程序:
pip install fastapi uvicorn
。 - 路径操作(Path Operations):
@app.get(”/”)
,@app.post
等装饰器
@app.get: 获取 或 读取 数据,参数通常通过 URL 传 递(路径参数或查询参数)。
@app.post:创建 数据或 执行 某个操作,通常用于创建新资源、更新数据、登录等操作
2.路径参数(Path Parameters)与查询参数(Query Parameters)
路径参数:从 URL 路径中获取参数(如
/items/42
)。
- 类型注解:
item_id: int
路径转换器。 查询参数:从 URL 的
?
后获取参数(如/items?skip=0&limit=10
)。- 默认值、可选参数、多参数。
混合使用
- 路径参数与查询参数可同时使用,FastAPI 会自动根据位置区分
- 路径参数必须放在 URL 路径中,查询参数放在
?
后
3. 请求体(Request Body)与 Pydantic 模型
Pydantic 基础
- 作用:通过
BaseModel
定义数据模型,实现自动数据验证、类型转换和 JSON 序列化 / 反序列化 - 优势:
- 自动校验输入数据(如类型错误、必填项缺失)
- 自动生成 OpenAPI 文档(含请求体结构说明)
- 支持嵌套模型、复杂数据结构
处理 POST/PUT 请求
- 适用场景:客户端需要向服务器发送大量数据(如创建资源、更新资源)
- 使用方式:在路径操作函数中声明 Pydantic 模型作为参数,FastAPI 会自动解析请求体 JSON 并验证
组合使用
- 支持同时使用路径参数、查询参数和请求体
- FastAPI 会根据参数位置自动区分:
- 路径中定义的参数 → 路径参数
- 函数参数且非模型类型 → 查询参数
- 函数参数且为 Pydantic 模型 → 请求体
4. 响应模型(Response Model)与状态码
响应模型(Response Model)
- 格式化返回数据(确保输出结构符合预期)
- 过滤敏感字段(如密码、令牌)
- 验证返回数据的类型和结构
-** 使用方式 **:通过response_model
参数指定输出模型
状态码(Status Code)
- 作用 :通过 HTTP 状态码告知客户端请求处理结果(成功、失败、错误类型等)
- 使用方式 **:
- 通过
status_code
参数设置(推荐使用status
模块的常量,更直观) - 常见状态码:
- 200 OK:请求成功(默认)
- 201 Created:资源创建成功
- 400 Bad Request:请求参数错误
- 404 Not Found:资源不存在
- 422 Unprocessable Entity:请求数据验证失败
5. async
异步函数
核心作用
- 利用异步 I/O 机制,在等待外部操作(如数据库查询、网络请求)时释放 CPU 资源,处理其他请求,从而提高服务器并发能力和资源利用率
关键特性
- 声明方式 :用 async def
定义异步函数
- 协程对象 :调用异步函数时不会立即执行,而是返回一个协程对象(需在事件循环中运行)
- 与异步操作兼容 **:在异步函数中可使用 await
关键字调用其他异步函数(如异步数据库驱动、aiohttp
网络请求等)