首页>文档>FastAPI>fastapi中文手册:Header Parameters(Header参数)

fastapi中文手册:Header Parameters(Header参数)

fastapi中文手册:Header Parameters(Header参数)

FastAPI 是一个高性能 Web 框架,用于构建 API。

主要特性:

  • 快速:非常高的性能,与 NodeJS 和 Go 相当
  • 快速编码:将功能开发速度提高约 200% 至 300%
  • 更少的错误:减少约 40% 的人为错误
  • 直观:强大的编辑器支持,自动补全无处不在,调试时间更少
  • 简易:旨在易于使用和学习,减少阅读文档的时间。
  • 简短:减少代码重复。
  • 稳健:获取可用于生产环境的代码,具有自动交互式文档
  • 基于标准:基于并完全兼容 API 的开放标准 OpenAPI 和 JSON Schema 

你也可以定义Header参数,就和你定义 Query, PathCookie 参数一样.

一、导入Header: Import Header

首先导入 Header:

from fastapi import FastAPI, Header 

二、声明 Header 参数

  • 声明Header参数

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

from fastapi import FastAPI, Header

app = FastAPI()

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

技术细节

HeaderPathQueryCookie的姐妹类,它也同样继承自相同的Param类.

注释:
申明cookies,你需要使用Cookie方法,否则参数会被解释为查询参数

二、自动转换

Header除了提供PathQueryCookie之外还具有一些额外的功能。

大多数标准标头都由“连字符”字符(也称为“减号”)(“-”)分隔。

但是像user-agent这样的变量在Python中是无效的。

功能1:将_转换为-

因此,默认情况下,标题将参数名称字符从下划线(_)转换为连字符(-)以提取并记录标题。

功能2:不区分HTTP字段的大小写

另外,HTTP标头不区分大小写,因此,您可以使用标准Python样式(也称为“ snake_case”)声明它们。

因此,您可以像通常在Python代码中那样使用user_agent,而无需将首字母大写为User_Agent或类似名称。

注意⚠️

如果由于某种原因需要禁用下划线到连字符的自动转换,请将Header的参数convert_underscores设置为False

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代理和服务器禁止使用带下划线的标头。

三、重复的请求头(Duplicate headers)

可能会收到重复的Header。 也就是说,同一Header具有多个值。

您可以使用类型声明中的列表来定义这些情况。

您将从重复标头中以Python列表的形式接收所有值。

例如,要声明一个可以多次出现的X-Token头,可以编写以下代码:

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 请求头如下:

X-Token: foo
X-Token: bar

得到的响应如下:

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

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索