您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页fastApi笔记08-Cookie和Header

fastApi笔记08-Cookie和Header

来源:步遥情感网

Cookie

可以像Query,Path,Body等同样的方式来定义Cookie参数

from typing import Annotated

from fastapi import Cookie, FastAPI

app = FastAPI()


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

需要使用Cookie来声明 cookie 参数,否则参数将会被解释为查询参数

Header

可以像Query,Path,Body等同样的方式来定义Header参数

from typing import Annotated

from fastapi import FastAPI, Header

app = FastAPI()


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

为了声明headers, 需要使用Header, 因为否则参数将被解释为查询参数

自动转换

http请求中大部分的headers是用连字符分割,也被称为减号(-),但是像user-agent这种变量在python中是无效的,因此默认情况下是会把参数名称的符号从下划线 (_) 转换为连字符 (-) 来提取并记录 headers.

将header参数中的convert_underscores设置为False可以禁用自动转换

from typing import Annotated

from fastapi import FastAPI, Header

app = FastAPI()


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

重复的headers

有时可能会有重复的headers,这时可以使用List类型来声明,以获取重复header的所有值

from typing import Annotated

from fastapi import FastAPI, Header

app = FastAPI()


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

 请求内容

X-Token: foo
X-Token: bar

 响应

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务