Validation des entrées dans FastAPI

Déployer l’IA en production avec FastAPI

Matt Eckerle

Software and Data Engineering Leader

Valider les données d'entrée

Organigramme montrant une prédiction ML avec FastAPI

Déployer l’IA en production avec FastAPI

Pourquoi valider les entrées ?

 

  • Validation pour l'intégrité des données
  • Éviter les erreurs dans l'application
  • S'intègre avec Pydantic
  • Outils puissants pour valider les données

 

Un logo de Pydantic

Déployer l’IA en production avec FastAPI

Pydantic pour fonctions prédéfinies

Validation de champ avec pydantic

Déployer l’IA en production avec FastAPI

Validation personnalisée avec pydantic

Validation personnalisée avec pydantic

Déployer l’IA en production avec FastAPI

Rapports d'erreurs clairs

Rapport d'erreurs lors de la validation

Déployer l’IA en production avec FastAPI

Validateurs de champs Pydantic

  • Point de terminaison d'inscription utilisateur

  • Valider le nom d'utilisateur saisi :

from pydantic import BaseModel, Field
class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
Déployer l’IA en production avec FastAPI

Ajouter des validateurs personnalisés

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
Déployer l’IA en production avec FastAPI

Validateurs personnalisés en action

Requête valide :

{"username": "john_doe", "age": 25}
Utilisateur valide : username='john_doe' age=25

Requête invalide :

{"username": "too_young", "age": 10}
Erreur de validation pour {'username': 'too_young', 'age': 10} : User must be at least 13
Déployer l’IA en production avec FastAPI

Récapitulatif

Rapport d'erreurs lors de la validation

  • Validateur de champ pour username
  • Validateur personnalisé pour l'âge
  • Message d'erreur en cas d'échec
Déployer l’IA en production avec FastAPI

Récapitulatif

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

RÉSULTAT :

{
  "message": "User created successfully",
    "user": {
          "username": "john_doe", 
           "age": 25
    }
}
Déployer l’IA en production avec FastAPI

Passons à la pratique !

Déployer l’IA en production avec FastAPI

Preparing Video For Download...