✅ 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 | 任意自定义逻辑依赖 | 函数、类 | 权限、数据库、通用逻辑 |