← Back to Tutorials
20. Header Parameters
from fastapi import FastAPI, Header
from typing import Optional
app = FastAPI()
# Read a header
@app.get("/items/")
def read_items(user_agent: Optional[str] = Header(None)):
return {"User-Agent": user_agent}
# Custom header
@app.get("/check-auth/")
def check_auth(x_token: str = Header(...)):
if x_token != "my-secret-token":
return {"error": "Invalid token"}
return {"message": "Authenticated"}
# Duplicate headers (multiple values)
from typing import List
@app.get("/headers/")
def read_headers(x_tag: Optional[List[str]] = Header(None)):
return {"X-Tag values": x_tag}
# Common headers
@app.get("/request-info/")
def request_info(
host: str = Header(...),
accept: str = Header(None),
accept_language: str = Header(None),
authorization: str = Header(None)
):
return {
"host": host,
"accept": accept,
"language": accept_language,
"has_auth": authorization is not None
}
✏️ Exercise: Create an endpoint that reads an X-API-Key header. Validate it against a hardcoded key and return 401 if invalid.