Gestion des erreurs

Introduction aux API en Python

Chris Ramakers

Engineering Manager

Codes d’état d’erreur

4xx Erreurs client


  • Indiquent un problème côté client
  • Causes courantes : requête invalide, échec d’authentification, etc.

Solution : Corriger la requête

5xx Erreurs serveur


  • Problèmes côté serveur
  • Causes courantes : surcharge, mauvaise configuration, erreurs internes

Solution : À corriger par l’administrateur de l’API

Introduction aux API en Python

Codes d’état d’erreur : exemples

4xx Erreurs client


  • 401 Unauthorized - Identifiants d’authentification invalides pour la ressource demandée
  • 404 Not Found - Le serveur ne trouve pas la ressource demandée
  • 429 Too Many Requests - Trop de requêtes envoyées dans un laps de temps donné

5xx Erreurs serveur


  • 500 Internal Server Error - Problème inattendu empêchant le serveur de répondre
  • 502 Bad Gateway - Le serveur API n’a pas pu joindre un serveur requis pour la réponse
  • 504 Gateway Timeout - Le serveur passerelle n’a pas reçu la réponse de l’amont à temps
Introduction aux API en Python

Gérer les erreurs

Erreurs d’API

import requests

url = 'http://api.music-catalog.com/albums'

r = requests.get(url)

if r.status_code >= 400: # Oups, un problème est survenu
else: # Tout va bien, exploitons la réponse

Erreurs de connexion

import requests

from requests.exceptions import ConnectionError
url = ''
try: r = requests.get(url) print(r.status_code)
except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.') print(error)
Introduction aux API en Python

raise_for_status()

import requests

# 1 : Importer les exceptions de la bibliothèque requests from requests.exceptions import ConnectionError, HTTPError
try:
r = requests.get("http://api.music-catalog.com/albums")
# 2 : Activer la levée d’exceptions pour les codes d’erreur renvoyés r.raise_for_status()
print(r.status_code)
# 3 : Intercepter toute erreur de connexion except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.')
# 4 : Intercepter les réponses d’erreur du serveur API except HTTPError as http_err: print(f'HTTP error occurred: {http_err}')
Introduction aux API en Python

Passons à la pratique !

Introduction aux API en Python

Preparing Video For Download...