Reading headers
Headersfrom fastapi import Header, Response
from typing import Optional, List
# FastAPI auto-converts hyphen -> underscore
# HTTP "user-agent" -> param "user_agent"
@app.get("/info")
async def info(
user_agent: Optional[str] = Header(None),
x_request_id: Optional[str] = Header(None),
accept_language: Optional[str] = Header(None)
):
return {"agent": user_agent, "lang": accept_language}
# Duplicate headers -> List
@app.get("/tokens")
async def tokens(x_token: Optional[List[str]] = Header(None)):
return {"tokens": x_token}
# Set response headers
@app.get("/with-header")
async def with_header(response: Response):
response.headers["X-Custom"] = "my-value"
response.headers["Cache-Control"] = "max-age=3600"
return {"msg": "headers set"}