Validazione dell'input in FastAPI

Deployment di AI in produzione con FastAPI

Matt Eckerle

Software and Data Engineering Leader

Convalidare i dati in input

Diagramma di flusso che mostra una previsione ML con FastAPI

Deployment di AI in produzione con FastAPI

Perché convalidare l'input?

 

  • Convalida per l'integrità dei dati
  • Evita errori nell'applicazione
  • Si integra con Pydantic
  • Offre strumenti potenti per la convalida

 

Un logo di Pydantic

Deployment di AI in produzione con FastAPI

Pydantic per funzioni predefinite

Convalida dei campi con pydantic

Deployment di AI in produzione con FastAPI

Convalida personalizzata con pydantic

Convalida personalizzata con pydantic

Deployment di AI in produzione con FastAPI

Segnalazione degli errori chiara

Segnalazione degli errori durante la convalida

Deployment di AI in produzione con FastAPI

Validator di campo Pydantic

  • Endpoint di registrazione utente

  • Convalidare lo username inserito dagli utenti:

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Deployment di AI in produzione con FastAPI

Aggiungere validator personalizzati

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 di AI in produzione con FastAPI

Validator personalizzati in azione

Richiesta valida:

{"username": "john_doe", "age": 25}
Utente valido: username='john_doe' age=25

Richiesta non valida:

{"username": "too_young", "age": 10}
Errore di convalida per {'username': 'too_young', 'age': 10}: User must be at least 13
Deployment di AI in produzione con FastAPI

Mettere tutto insieme

Segnalazione degli errori durante la convalida

  • Field validator per username
  • Validator personalizzato per età
  • Messaggio d'errore se la convalida fallisce
Deployment di AI in produzione con FastAPI

Mettere tutto insieme

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

Output:

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Deployment di AI in produzione con FastAPI

Esercitiamoci!

Deployment di AI in produzione con FastAPI

Preparing Video For Download...