当前位置: 首页 > news >正文

FastAPI入门:Cookie参数、Header参数、Cookie参数模型、Header参数模型

Cookie参数

定义 Cookie 参数与定义 Query 和 Path 参数一样。
第一个值是默认值,还可以传递所有验证参数或注释参数

from typing import Annotatedfrom fastapi import Cookie, FastAPIapp = FastAPI()@app.get("/items/")
async def read_items(ads_id: Annotated[str | None, Cookie()] = None):return {"ads_id": ads_id}

在这里插入图片描述

Header参数

定义 Header 参数的方式与定义 Query、Path、Cookie 参数相同。

from fastapi import FastAPI, Header
from typing import Annotated, List
from pydantic import BaseModel, Fieldapp = FastAPI()@app.put("/items/")
async def read_items(user_agent: Annotated[str | None, Header()] = None):return {"user-agent": user_agent}

自动转换

大部分标准请求头用连字符分隔,即减号(-)。但是 user-agent 这样的变量在 Python 中是无效的。

因此,默认情况下,Header 把参数名中的字符由下划线(_)改为连字符(-)来提取并存档请求头 。

同时,HTTP 的请求头不区分大小写,可以使用 Python 标准样式(即 snake_case)进行声明。因此,可以像在 Python 代码中一样使用 user_agent ,无需把首字母大写为 User_Agent 等形式。

如需禁用下划线自动转换为连字符,可以把 Header 的 convert_underscores 参数设置为 False

重复请求头

类型声明中可以使用 list 定义多个请求头。使用 Python list 可以接收重复请求头所有的值
例如,声明 X-Token 多次出现的请求头:

from typing import Annotatedfrom fastapi import FastAPI, Headerapp = FastAPI()@app.get("/items/")
async def read_items(x_token: Annotated[list[str] | None, Header()] = None):return {"X-Token values": x_token}

Cookie参数模型

如果有一组相关的 cookie,可以创建一个 Pydantic 模型来声明它们

from typing import Annotatedfrom fastapi import Cookie, FastAPI
from pydantic import BaseModelapp = FastAPI()class Cookies(BaseModel):session_id: strfatebook_tracker: str | None = Nonegoogall_tracker: str | None = None@app.get("/items/")
async def read_items(cookies: Annotated[Cookies, Cookie()]):return cookies

禁止额外cookie

可以使用 Pydantic 的模型配置来禁止( forbid )任何额外( extra )字段

class Cookies(BaseModel):model_config = {"extra": "forbid",  # 禁止额外字段}session_id: str | None = Nonefatebook_tracker: str | None = Nonegoogall_tracker: str | None = None

Header参数模型

如果有一组相关的 Header,可以创建一个 Pydantic 模型来声明它们

from fastapi import FastAPI, Header, Cookie
from typing import Annotated, List
from pydantic import BaseModel, Fieldapp = FastAPI()class CommonHeaders(BaseModel):host: str | None = Nonesave_data: boolif_modified_since: str | None = Nonetraceparent: str | None = Nonex_tag: list[str] = []@app.put("/items/")
async def read_items(headers: Annotated[CommonHeaders, Header()]):return headers

禁止额外Header

可以使用 Pydantic 的模型配置来禁止( forbid )任何额外( extra )字段

class CommonHeaders(BaseModel):model_config = {"extra": "forbid"}host: strsave_data: boolif_modified_since: str | None = Nonetraceparent: str | None = Nonex_tag: list[str] = []
http://www.dtcms.com/a/305276.html

相关文章:

  • 移动端 WebView 调试实战,多平台行为差异排查与统一调试流程
  • Gartner发布CTEM指南:使用持续威胁暴露管理来减少网络攻击
  • 应急前端“黄金3分钟”设计:极端场景下的操作界面极速搭建技术
  • COPRAS(Complex Proportional Assessment)简介与简单示例
  • 汇总10个高质量免费AI生成论文网站,支持GPT4.0和DeepSeek-R1
  • [学习记录]URP流程解析(2)--初始化阶段
  • 最新优茗导航系统源码/全开源版本/精美UI/带后台/附教程
  • Effective_C++09: 绝不在构造和析构过程中调用virtual函数
  • 【解决办法】pip install albumentations安装下载遇19kB/s超级慢细水管
  • 无代码测试平台ATECLOUD全场景测试方案
  • Java中Boolean.getBoolean方法误用与修复
  • 【监控】非IP监控系统改造IP监控系统
  • 中科米堆CASAIM空调扇叶自动蓝光三维测量解决方案
  • <RT1176系列12>DMAMUX入门级应用和DMAMUX MAP表
  • Linux定时器和时间管理源码相关总结
  • 【Unity编辑器扩展】Unity场景选择工具 - ScenesChooseTool 使用指南
  • 项目历程—生命数组游戏(两版本)
  • 智源研究院发布数据魔方,以智能化自定义方式重构模型训练数据供给范式
  • 两数之和(每天刷力扣hot100系列)
  • JDK17 新特性跟学梳理
  • Java注解全面解析与应用实战
  • Redis 跨主机连接超时分析:从网络波动到架构优化
  • 关于算法的一些思考
  • 基于springboot的零食商城的设计与实现/零食销售系统的设计与实现
  • 基于Matlab图像处理的静态雨滴去除与质量评估系统
  • JAVA第五学:方法的使用 调试讲解
  • RAG实战指南 Day 26:RAG系统评估指标与方法
  • 2025年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • R语言中 read.table 和 read.delim 之间的区别
  • vue中使用wavesurfer.js绘制波形图和频谱图