Kromě kontroly typu FastAPI umožňuje přidat omezení na parametry cesty/dotazu a pole modelu pomocí Query, Path a Field — vynucovat pravidla jako délka, rozsahy a vzory, s automatickými chybami 422 a dokumentací při porušení.
Kromě kontroly typu FastAPI umožňuje přidat omezení na parametry cesty/dotazu a pole modelu pomocí Query, Path a Field — vynucovat pravidla jako délka, rozsahy a vzory, s automatickými chybami 422 a dokumentací při porušení.
from fastapi import Query, Path
def search(
q: str = Query(min_length=3, max_length=50), # string length bounds
page: int = Query(default=1, ge=1), # >= 1
limit: int = Query(default=10, ge=1, le=100), # 1 <= limit <= 100
code: str = Query(pattern=r"^[A-Z]{3}$"), # regex pattern
):
...
def get(item_id: int = Path(ge=1)): # path param must be >= 1
...
Query() a Path() přidávají omezení na parametry dotazu a cesty. Běžná omezení: min_length/max_length (řetězce), ge/gt/le/lt (čísla), pattern (regex). Porušení automaticky vytvoří jasnou chybu 422.
from pydantic import BaseModel, Field, EmailStr
class User(BaseModel):
name: str = Field(min_length=1, max_length=100)
age: int = Field(ge=0, le=120)
email: EmailStr # format validation via a type
bio: str = Field(default="", max_length=500, description="User bio")
Tytéž omezení se vztahují na pole modelu přes Field(), ověřující těla požadavků. Specializované typy (EmailStr, HttpUrl, UUID) ověřují formáty.
q: str = Query(min_length=3, description="Search query", example="phone")
# the constraints + description + example appear in the auto-generated API docs
Každé omezení, které deklarujete, se také odráží v dokumentaci OpenAPI, aby spotřebitelé viděli pravidla.
Přidávání omezení ověření je důležité jak pro bezpečnost/robustnost, tak pro dobrý design API — deklarování pravidel (limity délky, numerické rozsahy, regex vzory, typy formátů) zajišťuje, že znetvořený nebo škodlivý vstup je odhozen s jasnými chybami před dosažením vaší logiky, což je nezbytné, protože nikdy nesmíte důvěřovat surovému vstupu.
FastAPI to dělá deklarativní a bez námahy: omezení Query/Path/Field jsou automaticky ověřována (vytváření strukturovaných chyb 422) a zároveň dokumentována v dokumentaci API, takže pravidla jsou vynucena a komunikována z jedné deklarace.
Znalost běžných omezení a specializovaných typů ověření je každodenní znalostí pro vytváření bezpečných, dobře definovaných endpointů — je to způsob, jak jít dále než základní kontrolu typu a vynutit skutečná obchodní pravidla, která musí vaše data splňovat.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět