Walidacja danych wejściowych w FastAPI

Wdrażanie AI na produkcję z FastAPI

Matt Eckerle

Software and Data Engineering Leader

Walidacja danych wejściowych

Schemat blokowy predykcji ML z FastAPI

Wdrażanie AI na produkcję z FastAPI

Dlaczego walidować dane wejściowe?

 

  • Walidacja integralności danych
  • Zapobieganie błędom w aplikacji
  • Integracja z Pydantic
  • Zaawansowane narzędzia do walidacji danych

 

Logo Pydantic

Wdrażanie AI na produkcję z FastAPI

Pydantic dla predefiniowanych funkcji

Walidacja pól za pomocą Pydantic

Wdrażanie AI na produkcję z FastAPI

Niestandardowa walidacja z Pydantic

Niestandardowa walidacja za pomocą Pydantic

Wdrażanie AI na produkcję z FastAPI

Przejrzyste raportowanie błędów

Raportowanie błędów podczas walidacji

Wdrażanie AI na produkcję z FastAPI

Walidatory pól Pydantic

  • Endpoint rejestracji użytkownika

  • Walidacja nazwy użytkownika:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Wdrażanie AI na produkcję z FastAPI

Dodawanie niestandardowych walidatorów

class User(BaseModel):
    username: str = Field(..., 
                          min_length=3, 
                          max_length=50)
    age: int

@field_validator('age') def age_criteria(cls, age): if age < 13: raise ValueError('User must be at least 13') return age
Wdrażanie AI na produkcję z FastAPI

Niestandardowe walidatory w praktyce

Prawidłowe żądanie:

{"username": "john_doe", "age": 25}
Valid user: username='john_doe' age=25

Nieprawidłowe żądanie:

{"username": "too_young", "age": 10}
Validation error for {'username': 'too_young', 'age': 10}: User must be at least 13
Wdrażanie AI na produkcję z FastAPI

Podsumowanie

Raportowanie błędów podczas walidacji

  • Walidator pola dla nazwy użytkownika
  • Niestandardowy walidator dla wieku
  • Komunikat błędu przy niepowodzeniu walidacji
Wdrażanie AI na produkcję z FastAPI

Podsumowanie

@app.post("/users")
def create_user(user: User):
    return {"message": "User created",
            "user": user.model_dump()}

Wynik:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Wdrażanie AI na produkcję z FastAPI

Czas na ćwiczenia!

Wdrażanie AI na produkcję z FastAPI

Preparing Video For Download...