Query Parameters
from fastapi import Query
username: str = Query(..., title="User name", min_length=5, max_length=30)
| Detail |
Example |
| Purpose |
Extracts values from the URL query string |
| URL Pattern |
/items?username=alice |
| Required/Optional |
Query(...) required; Query(None) optional |
| Default |
role: str = Query("user") |
Path Parameters
from fastapi import Path
item_id: int = Path(..., title="Item ID", ge=0, le=10000)
| Detail |
Example |
| Purpose |
Extracts a variable from the URL path |
| Path Pattern |
/items/42 |
| Validation |
Supports ge, le, min_length, etc. |
| Route Example |
@app.get("/items/{item_id}") |
Header Parameters
from fastapi import Header
authorization: str = Header(...)
| Detail |
Example |
| Purpose |
Extracts values from HTTP headers |
| Header Example |
Authorization: Bearer token123 |
| Case Sensitivity |
Case‑insensitive by default; convert_underscores=True available |
Cookie Parameters
from fastapi import Cookie
session_token: str = Cookie(None)
| Detail |
Example |
| Purpose |
Extracts a value from the request Cookie |
| Cookie Example |
session_token=xyz789 |
Body Parameters (JSON)
from fastapi import Body
from pydantic import BaseModel
class ItemCreate(BaseModel):
name: str
price: float
item: ItemCreate = Body(...)
| Detail |
Example |
| Purpose |
Reads JSON data from the request body of POST/PUT |
| Validation |
Leverages Pydantic model constraints |
Form Parameters
from fastapi import Form
email: str = Form(...)
password: str = Form(...)
| Detail |
Example |
| Purpose |
Processes application/x-www-form-urlencoded or multipart/form-data |
| Use Case |
Login forms, registration, traditional front‑end submissions |
File Uploads
from fastapi import File, UploadFile
document: UploadFile = File(...)
| Detail |
Example |
| Purpose |
Handles uploaded files |
| Type |
UploadFile enables streaming file reading |
Dependency Injection (Depends)
from fastapi import Depends
def get_db_session():
return DatabaseSession()
@app.get("/users/")
def list_users(db = Depends(get_db_session)):
...
| Detail |
Example |
| Purpose |
Injects shared logic (e.g., authentication, database access) |
| Advanced |
Class‑based dependencies with __call__ for dynamic behvaior |
Quick Comparison
| Type |
Source |
Example Usage |
Common Scenario |
Query |
URL query string |
?page=2&size=10 |
Pagination, filtering |
Path |
URL path variable |
/users/7 |
Resource identification (IDs) |
Header |
HTTP header |
Authorization |
Authentication, client info |
Cookie |
Cookie value |
session_id |
Session management |
Body |
Request body (JSON) |
{ "title": "foo" } |
Creating/updating resources |
Form |
Form submission |
Login form |
Classic web forms |
File |
Uploaded file |
File input field |
Image or document upload |
Depends |
Custom logic |
Function or class |
Auth, DB, reusable utilities |