← Back to Tutorials
11. Parameter Validation
from fastapi import FastAPI, Query, Path
app = FastAPI()
# Query parameter validation
@app.get("/items/")
def read_items(
q: str = Query(None, min_length=3, max_length=50),
price: float = Query(..., gt=0, le=1000)
):
return {"q": q, "price": price}
# Path parameter validation
@app.get("/items/{item_id}")
def read_item(
item_id: int = Path(..., ge=1, title="Item ID")
):
return {"item_id": item_id}
# String patterns (regex)
@app.get("/users/")
def search_users(
code: str = Query(..., regex="^[A-Z]{3}\\d{3}$")
):
return {"code": code}
# Multiple constraints
@app.get("/products/")
def list_products(
page: int = Query(1, ge=1),
size: int = Query(10, ge=1, le=100),
sort: str = Query("name", regex="^(name|price|date)$")
):
return {"page": page, "size": size, "sort": sort}
✏️ Exercise: Create an endpoint with a path param user_id (>= 1) and a query param email (valid email regex pattern). Test validation errors in Swagger.
← Previous Back to Index Next: Pydantic Models →