FastAPI学习与实践(三) FastAPI 参数声明速查

✅ 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}")

✅ Header 参数(请求头)

from fastapi import Header

token: str = Header(...)
说明 示例
用途 从 HTTP 请求头中提取参数
示例头部 Authorization: Bearer xxx
区分大小写 默认不区分,convert_underscores=True

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 的模型

✅ Form 参数(表单)

from fastapi import Form

username: str = Form(...)
password: str = Form(...)
说明 示例
用途 处理 application/x-www-form-urlencodedmultipart/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 任意自定义逻辑依赖 函数、类 权限、数据库、通用逻辑
posted @ 2025-07-21 17:04  daviyoung  阅读(35)  评论(0)    收藏  举报