Header Parameters


Header Parameters

定义 Header 参数也和定义 Query 等相同

例子

from fastapi import FastAPI, Header

app = FastAPI()


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

技术细节

  • HeaderPathQuery 等的姐妹类,他也继承于 Param
  • 一样是返回同名类的函数

注:声明 Header 参数必须显示使用 Header

Automatic conversion

HeaderPath 等的基础上有一些额外的功能

大多数的标准头由连字符 - 分割,但在 python 中是不合法的变量名,例如 user-agent

因此,Header 会将 python 变量名的下划线 _,自动转化为连字符 -

由于 HTTP 请求头是不区分大小写,因此可以用 python 标准风格 snake_case 来声明它们,即 User-Agent 可以用 user_agent 来声明,而不必 User_Agent

如果因为某些原因要禁用自动转换,可以设置参数 convert_underscoresFalse

from fastapi import FastAPI, Header

app = FastAPI()


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

注:在将 convert_underscores设置为 False 之前,必须明确一些 http 代理或者服务器不允许使用带有下划线的 headers

Duplicate header

有可能会接收到重复的 headers,即,具有不同值的相同 headers

可以用 list 类型来定义

将会从重复的 headers 接收到值

例如,声明 X-TOKEN header 可以出现多次

from typing import List

from fastapi import FastAPI, Header

app = FastAPI()


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

如果 HTTP header 如下

X-Token: foo
X-Token: bar

则返回

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

文章作者: qiufeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 qiufeng !
评论
  目录