FastAPI - Header 标头参数

为了读取作为客户端请求的一部分的 HTTP header 标头的值,从 FastAPI 库中导入 Header 对象,并在操作函数定义中声明一个 Header 类型的参数。参数的名称应与以 camel_case 转换的 HTTP 标头相匹配。

在以下示例中,将检索"accept-language"标头。 由于 Python 不允许在标识符名称中使用"-"(破折号),因此将其替换为"_"(下划线)

from typing import Optional
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/headers/")
async def read_header(accept_language: Optional[str] = Header(None)):
   return {"Accept-Language": accept_language} 

正如下面的 Swagger 文档所示,检索到的标头显示为响应正文。

FastAPI 标头参数

您可以在响应对象中推送自定义和预定义的标头。操作函数应该有一个Response类型的参数。 为了设置自定义标头,其名称应以"X" 为前缀。在以下情况下,将添加一个名为"X-Web-Framework"的自定义标头和一个预定义标头"Content-Language"以及操作功能的响应。

from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/rspheader/")
def set_rsp_headers():
   content = {"message": "Hello World"}
   headers = {"X-Web-Framework": "FastAPI", "Content-Language": "en-US"}
   return JSONResponse(content=content, headers=headers)

新添加的标头将出现在文档的响应标头部分。

FastAPI headers 标头参数