Gérer les erreurs

Introduction à FastAPI

Matt Eckerle

Software and Data Leader

Deux raisons majeures de gérer les erreurs

Erreur de l'utilisateur

  • URI non valide ou désuète
  • Entrée manquante ou incorrecte
@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Return an error
    else:
        crud.delete_item(item)
        return {}

Erreur du serveur

  • Un autre problème est survenu
@app.delete("/items")
def delete_item(item: Item):
    try:
        crud.delete_item(item)
    except Exception:
        # Return an error
    return {}
Introduction à FastAPI

Codes d'état HTTP : « niveaux d'alerte »

  • Permet à l'API d'indiquer l'état en réponse
    • Succès, échec, erreur, etc.
  • Codes précis définis par le protocole HTTP
  • Plage : 100 - 599
  • Catégorisés par le premier chiffre (1 -5)
  1. Réponses informationnelles (100 - 199)
  2. Réponses de succès (200 - 299)
  3. Messages de redirection (300 - 399)
  4. Erreurs côté client (400 - 499)
  5. Erreurs côté serveur (500 - 599)
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Introduction à FastAPI

Codes d'état HTTP courants

Succès (200 - 299)

  • 200 OK
    • Réponse de succès par défaut
  • 201 Created
    • Spécifique à l'opération POST
  • 202 Accepted
    • Non engageant. « On s'en occupe »
  • 204 No Content
    • Succès ! Rien à ajouter

Autres réponses

  • 301 Moved Permantently
    • URI changée de façon permanente
  • 400 Bad Request
    • Erreur côté client
  • 404 Not Found
    • Serveur incapable de trouver la ressource demandée
  • 500 Internal Server Error
    • Le serveur a rencontré une situation qu'il ne sait pas gérer
Introduction à FastAPI

Gérer les erreurs avec les codes d'état

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Send response with status 404 and specific error message
        raise HTTPException(status_code=404, detail="Item not found.")
    else:
        delete_item_in_database(item)
        return {}
Introduction à FastAPI

Passons à la pratique !

Introduction à FastAPI

Preparing Video For Download...