fastapi-Headers和Cookies

FastAPI中,Headers是一个特殊的类型,用于处理HTTP请求头(Headers)。Headers允许你接收、访问和修改HTTP请求中的头部信息。

使用Headers,你可以在FastAPI的路由视图中将请求头作为参数接收,并对它们进行操作

Headers

你可以使用定义QueryPath一样的方式来定义Header参数。使用如下:

python 复制代码
from fastapi import Header

@router.get("/home")
async def home(authorization: str = Header()):
    return {'code': 1}

也可以这样定义:

python 复制代码
from fastapi import Header
from typing import Annotated

@router.get("/home")
async def home(authorization: Annotated[str, Header()]):
    return {'code': 1}

当然,像QueryPathBody等都可以使用Annotated这样来声明。

在Swagger UI中效果如下:

这样就表示该请求需要接收一个authorization标头,否则将会引发422错误,如下:

json 复制代码
{
    "detail": [
        {
            "type": "missing",
            "loc": [
                "header",
                "authorization"
            ],
            "msg": "Field required",
            "input": null,
            "url": "https://errors.pydantic.dev/2.0.3/v/missing"
        }
    ]
}

大多数标准的Headers用"连字符"分隔,也称为"减号"(-)。但是像user-agent这样的变量在Python中是无效的。因此, 默认情况下, Header 将把参数名称的字符从下划线(_)转换为连字符(-)来提取并记录headers.

同时,HTTP headers 是大小写不敏感的,因此,因此可以使用标准Python样式(也称为 "snake_case")声明它们。因此,您可以像通常在Python代码中那样使用 user_agent,而不需要将首字母大写为User_Agent或类似的东西。如果出于某些原因,你需要禁用下划线到连字符的自动转换,设置Header的参数 convert_underscoresFalse:

python 复制代码
@router.get("/home")
async def home(sp_name: str = Header(convert_underscores=False)):
    return {'code': 1}

Headers常见参数如下:

  • default: 默认值,任何类型。 当设置了该值,表明该参数非必须参数
  • default_factory: 生成的默认值的函数,接收一个Callable类型。defaultdefault_factory不可同时存在
  • alias: 别名, str类型
  • title: Swagger UI中参数的标题,str类型。Path/Query操作不起作用
  • description: Swagger UI中参数的描述,str类型
  • convert_underscores: 是否将连字符转化为下划线,接收一个bool类型,默认为True
  • gt: 大于,数字类型
  • ge: 大于或等于,数字类型
  • lt: 小于,数字类型
  • le: 小于或等于,数字类型
  • multiple_of: 接收一个数字类型,表示为几的倍数。例如multiple_of的值为2,那么该字段的值必须是2的倍数
  • allow_inf_nan: bool类型,表示是否允许字段为NaN或无穷大(+inf或-inf)。默认为True,为与JSON兼容请设置为False。
  • max_digits: int类型,表示最大位数,字段类型须设置为decimal.Decimal类型。长度计算中不包括小数点前的零或小数点后的零
  • decimal_places: int类型,表小数最大位数,字段类型须设置为decimal.Decimal类型。长度计算中不包括小数点前的零或小数点后的零
  • min_length: 最小长度,int类型
  • max_length: 最大长度,int类型
  • regex: 正则匹配,str类型
  • example: Swagger UI中参数的示例值,任何类型
  • examples: Swagger UI中参数的示例值,Dict类型。Path/Query操作不起作用
  • deprecated: 是否过期,bool类型,默认False
  • include_in_schema: Swagger UI中是否添加对参数的说明,bool类型,默认True

Cookies

FastAPI中,Cookies是一个特殊的类型,用于处理HTTP请求中的Cookie数据。Cookies允许你接收、访问和修改HTTP请求中的Cookie信息。使用Cookies,你可以在FastAPI的路由视图中将Cookie数据作为参数接收,并对其进行操作。

同样,Cookies也可以像定义QueryPath一样的方式来定义Cookies参数。使用如下:

python 复制代码
from fastapi import Cookie

@router.get("/home")
async def home(sp_name: str = Cookie()):
    return {'code': 1}

在Swagger UI中效果如下:

这样就表示该请求需要接收一个sp_nameCookie,否则将会引发422错误,如下:

json 复制代码
{
    "detail": [
        {
            "type": "missing",
            "loc": [
                "cookie",
                "sp_name"
            ],
            "msg": "Field required",
            "input": null,
            "url": "https://errors.pydantic.dev/2.0.3/v/missing"
        }
    ]
}

Cookie接收的参数与Header基本相同,这里不做介绍

相关推荐
guoketg4 分钟前
Vision Transformer(ViT)的讲解和面试题目讲解
人工智能·python·深度学习·vit
小oo呆11 分钟前
【学习心得】Python的Pydantic(简介)
前端·javascript·python
岚天start12 分钟前
【日志监控方案】Python脚本获取关键字日志信息并推送钉钉告警
python·钉钉·日志监控
叫我:松哥14 分钟前
基于 Flask 框架开发的在线学习平台,集成人工智能技术,提供分类练习、随机练习、智能推荐等多种学习模式
人工智能·后端·python·学习·信息可视化·flask·推荐算法
rgeshfgreh14 分钟前
Python环境管理:uv极速对决Conda全能
python
幻云201015 分钟前
Python机器学习:从入门到精通
python
热爱专研AI的学妹23 分钟前
2026世界杯观赛工具自制指南:实时比分推送机器人搭建思路
开发语言·人工智能·python·业界资讯
热心不起来的市民小周26 分钟前
测测你的牌:基于 MobileNetV2 的车牌内容检测
python·深度学习·计算机视觉
BinaryBoss29 分钟前
Python 从Maxcompute导出海量数据到文本文件(txt)或Excel
chrome·python·odps
落羽凉笙31 分钟前
Python基础(4)| 详解程序选择结构:单分支、双分支与多分支逻辑(附代码)
android·服务器·python