Validarea intrărilor în FastAPI

Deployment AI în producție cu FastAPI

Matt Eckerle

Software and Data Engineering Leader

Validarea datelor de intrare

Diagramă flux ML cu FastAPI

Deployment AI în producție cu FastAPI

De ce să validăm intrările?

 

  • Validare pentru integritatea datelor
  • Prevenirea erorilor în aplicație
  • Integrare cu Pydantic
  • Instrumente puternice pentru validarea datelor

 

Sigla Pydantic

Deployment AI în producție cu FastAPI

Pydantic pentru validări predefinite

Validarea câmpurilor cu Pydantic

Deployment AI în producție cu FastAPI

Validare personalizată cu Pydantic

Validare personalizată cu Pydantic

Deployment AI în producție cu FastAPI

Raportarea erorilor

Raportarea erorilor în timpul validării

Deployment AI în producție cu FastAPI

Validatori de câmpuri Pydantic

  • Endpoint pentru înregistrarea utilizatorilor

  • Validarea numelui de utilizator introdus:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Deployment AI în producție cu FastAPI

Adăugarea validatorilor personalizați

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
Deployment AI în producție cu FastAPI

Validatori personalizați în acțiune

Cerere validă:

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

Cerere invalidă:

{"username": "too_young", "age": 10}
Validation error for {'username': 'too_young', 'age': 10}: User must be at least 13
Deployment AI în producție cu FastAPI

Sinteza elementelor

Raportarea erorilor în timpul validării

  • Validator de câmp pentru numele de utilizator
  • Validator personalizat pentru vârstă
  • Mesaj de eroare la eșuarea validării
Deployment AI în producție cu FastAPI

Sinteza elementelor

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

Rezultat:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Deployment AI în producție cu FastAPI

Să exersăm!

Deployment AI în producție cu FastAPI

Preparing Video For Download...