FastAPI Encabezados de solicitud y Cookies
FastAPI proporcionaHeaderyCookietipos, utilizados para obtener datos de los encabezados de solicitud HTTP y las cookies.
Parámetros de encabezado de solicitud
UsaHeaderDeclara parámetros de encabezado de solicitud:
Ejemplo
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
# Recibir el encabezado de solicitud User-Agent
user_agent: Annotated[str | None, Header()] = None,
):
return {"User-Agent": user_agent}
Visitahttp://127.0.0.1:8000/items/, el JSON devuelto contiene la información de User-Agent del navegador.
Conversión automática de encabezados de solicitud
Los nombres de los campos en los encabezados de solicitud HTTP usan guiones (por ejemplo,X-Token), pero los nombres de variables de Python no pueden contener guiones. FastAPI realiza la conversión automáticamente:
Ejemplo
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
# Los nombres de variables de Python usan guiones bajos; FastAPI los convierte automáticamente al encabezado de solicitud X-Token
x_token: Annotated[list[str] | None, Header()] = None,
):
return {"X-Token values": x_token}
Reglas de conversión:
| Nombre de variable Python | Encabezado de solicitud HTTP | Descripción |
|---|---|---|
x_token | X-Token | El guion bajo se convierte automáticamente en guion |
user_agent | User-Agent | Igual que arriba |
content_type | Content-Type | Igual que arriba |
FastAPI convierte automáticamente el guion bajo de los nombres de variables
_en guion-para que coincida con el encabezado de solicitud. Si necesitas deshabilitar esta conversión, configuraHeader(convert_underscores=False)。
Recibir encabezados de solicitud repetidos
Algunos encabezados de solicitud pueden aparecer varias veces (por ejemplo,Set-Cookie), usalistel tipo para recibir:
Ejemplo
from fastapi import FastAPI, Header
app = FastAPI()
@app.get("/items/")
async def read_items(
# Recibir múltiples encabezados de solicitud X-Token
x_token: Annotated[list[str] | None, Header()] = None,
):
return {"X-Token values": x_token}
Ejemplo de solicitud:
GET /items/ HTTP/1.1 X-Token: foo X-Token: bar
Respuesta:{"X-Token values": ["foo", "bar"]}
Parámetros de Cookie
UsaCookieDeclara parámetros de Cookie:
Ejemplo
from fastapi import FastAPI, Cookie
app = FastAPI()
@app.get("/items/")
async def read_items(
# Recibir la Cookie llamada session_token
session_token: Annotated[str | None, Cookie()] = None,
):
return {"session_token": session_token}
Usar encabezados de solicitud y Cookies juntos
Puedes obtener encabezados de solicitud y Cookies al mismo tiempo en la misma ruta:
Ejemplo
from fastapi import FastAPI, Header, Cookie
app = FastAPI()
@app.get("/items/")
async def read_items(
user_agent: Annotated[str | None, Header()] = None,
session_token: Annotated[str | None, Cookie()] = None,
ads_id: Annotated[str | None, Cookie()] = None,
):
return {
"User-Agent": user_agent,
"Session-Token": session_token,
"Ads-ID": ads_id,
}

Resumen
- Usa
Headerpara obtener parámetros de encabezado de solicitud HTTP - Usa
Cookiepara obtener parámetros de Cookie - FastAPI convierte automáticamente los guiones bajos en los nombres de variables de Python en guiones en los encabezados de solicitud
- Usa
list[str]para recibir encabezados de solicitud repetidos - Los parámetros de encabezado de solicitud y Cookie admiten las mismas reglas de validación que los parámetros de consulta