随笔 - 134,  文章 - 0,  评论 - 0,  阅读 - 21226

FastAPI Cookie参数

定义Cookie参数与定义QueryPath参数一样。

第一个值是默认值,还可以传递所有验证参数或注释参数:

from typing import Optional
from fastapi import Cookie, FastAPI

app = FastAPI()

@app.get("/items/")
async def read_items(ads_id: Optional[str] = Cookie(None)):
    return {"ads_id": ads_id}

FastAPI Header参数

定义Header参数的方式与定义QueryPathCookie参数相同。

第一个值是默认值,还可以传递所有验证参数或注释参数:

from typing import Optional
from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/items/")
async def read_items(user_agent: Optional[str] = Header(None)):
    return {"User-Agent": user_agent}

自动转换

HeaderPathQueryCookie提供了更多功能。大部分标准请求头用连字符分隔,即减号,但是user-agent这样的变量在python中无效的,因此,在默认情况下,Header把参数名中的字符由下划线改为连字符来提取并存档请求头,同时,HTTP的请求头不区分大小写,可以使用Python标准样式进行声明,因此,可以像在Python代码中一样使用User_agent,无需把首字母大写为User_Agent等形式,如需禁用下画线自动转换为连字符,可以把Headerconvert_underscores参数设置为False

from typing import Optional
from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/items/")
async def read_items(
  strange_header: Optional[str] = Header(None, convert_underscores=False)  
):
    return {"strange_header": strange_header}

重复的请求头

有时,可能需要接收重复的请求头,即同一个请求头有多值,类型声明中可以使用list定义多个请求头。使用Python list可以接收重复请求头所有的值。

例如:声明X-Token多次出现的请求头,可以写成这样:

from typing import List, Optional
from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/items/")
async def read_item(x_token: Optional[List[str]] = Header(None)):
    return {"X-Token value": x_token}

与路径操作通信时,以下面的方式发送两个HTTP请求头:

X-Token: foo
X-Token: bar

响应结果:

{
    "X-Token values": [
        "bar",
        "foo"
    ]
}

posted on   Steam残酷  阅读(231)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示