✅ Query 参数(查询参数)
from fastapi import Query
name: str = Query(..., title="用户名", min_length=3, max_length=50)
| 说明 |
示例 |
| 用途 |
从 URL 查询字符串中提取参数 |
| 示例 URL |
/users?name=Tom |
| 可选/必选 |
Query(...) 表示必选,Query(None) 表示可选 |
| 用法示例 |
name: str = Query("Tom") |
✅ Path 参数(路径参数)
from fastapi import Path
user_id: int = Path(..., title="用户ID", ge=1)
| 说明 |
示例 |
| 用途 |
从路径中提取参数 |
| 示例路径 |
/users/123 |
| 验证规则 |
可加 ge, le, min_length 等 |
| 用法示例 |
@app.get("/users/{user_id}") |
from fastapi import Header
token: str = Header(...)
| 说明 |
示例 |
| 用途 |
从 HTTP 请求头中提取参数 |
| 示例头部 |
Authorization: Bearer xxx |
| 区分大小写 |
默认不区分,convert_underscores=True |
✅ Cookie 参数
from fastapi import Cookie
session_id: str = Cookie(None)
| 说明 |
示例 |
| 用途 |
从 Cookie 中提取参数 |
| 示例 Cookie |
session_id=abc123 |
✅ Body 参数(请求体 JSON)
from fastapi import Body
user: UserCreate = Body(...)
| 说明 |
示例 |
| 用途 |
从 POST/PUT 请求体中获取 JSON 数据 |
| 支持校验 |
依赖 Pydantic 的模型 |
from fastapi import Form
username: str = Form(...)
password: str = Form(...)
| 说明 |
示例 |
| 用途 |
处理 application/x-www-form-urlencoded 或 multipart/form-data |
| 场景 |
登录、注册等提交表单的场景 |
✅ File 参数(上传文件)
from fastapi import File, UploadFile
file: UploadFile = File(...)
| 说明 |
示例 |
| 用途 |
处理上传的文件 |
| 类型 |
UploadFile 支持流式读取文件 |
✅ Depends 依赖注入
from fastapi import Depends
def get_db():
return Session()
@app.get("/users/")
def read_users(db = Depends(get_db)):
...
| 说明 |
示例 |
| 用途 |
注入公共逻辑(如权限、数据库) |
| 高阶用法 |
类依赖 + __call__ 实现动态行为 |
📌 总结对比表
| 类型 |
来源 |
示例函数 |
常用于 |
Query |
URL 查询参数 |
?a=1&b=2 |
列表、筛选 |
Path |
路径中的变量 |
/users/{id} |
资源定位(ID) |
Header |
HTTP 请求头 |
Authorization |
鉴权、设备信息等 |
Cookie |
请求中的 Cookie |
session_id |
会话识别 |
Body |
请求体(JSON) |
{ "a": 1 } |
创建、更新资源 |
Form |
表单提交 |
登陆表单 |
传统前端 |
File |
文件上传 |
文件字段 |
图片、文档上传 |
Depends |
任意自定义逻辑依赖 |
函数、类 |
权限、数据库、通用逻辑 |