FastAPI Cookie参数
定义Cookie
参数与定义Query
和Path
参数一样。
第一个值是默认值,还可以传递所有验证参数或注释参数:
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
参数的方式与定义Query
、Path
、Cookie
参数相同。
第一个值是默认值,还可以传递所有验证参数或注释参数:
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}
自动转换
Header
比Path
、Query
和Cookie
提供了更多功能。大部分标准请求头用连字符分隔,即减号,但是user-agent
这样的变量在python中无效的,因此,在默认情况下,Header
把参数名中的字符由下划线改为连字符来提取并存档请求头,同时,HTTP的请求头不区分大小写,可以使用Python标准样式进行声明,因此,可以像在Python代码中一样使用User_agent
,无需把首字母大写为User_Agent
等形式,如需禁用下画线自动转换为连字符,可以把Header
的convert_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"
]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix