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基本相同,这里不做介绍

相关推荐
用户8356290780512 小时前
使用 Python 自动化 PowerPoint 形状布局与格式设置
后端·python
用户8356290780514 小时前
用 Python 自动化 PowerPoint 演讲者备注添加
后端·python
黄忠9 小时前
01-系统架构设计-LangGraph状态机与多源异构RAG
python
zzzzzz3109 小时前
假如我是掘金管理员,我先给评论区装个'代码审查'系统
python·程序员·机器人
砍材农夫10 小时前
python环境|conda安装和使用(2)
后端·python
程序员龙叔1 天前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
用户8356290780511 天前
使用 Python 操作 Word 内容控件
后端·python
码云骑士1 天前
32-慢查询排查全流程(下)-索引优化实战与最左前缀原则
python
闵孚龙1 天前
《PyTorch 深度修炼》Dataset 和 DataLoader:数据如何喂给模型
人工智能·pytorch·python