Comment implémenter une attente (wait) pour l'API?
sobes.tech IA
Réponse de l'IA
Pour les tests d'API, on utilise des attentes explicites basées sur des conditions. Les méthodes les plus courantes:
-
Polling (sondage) : requête périodique à l'API jusqu'à obtenir le résultat attendu ou jusqu'à expiration du délai d'attente.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Attend un statut spécifique de l'API. Args: url: URL du point de terminaison de l'API. expected_status: Code de statut HTTP attendu. timeout: Temps maximum d'attente en secondes. interval: Intervalle entre les tentatives en secondes. Returns: requests.Response: Objet de réponse en cas de succès, None en cas de timeout. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # Ou autre méthode HTTP if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Erreur lors de la requête : {e}") # Journalisation de l'erreur time.sleep(interval) return None # Retourne None en cas de timeout # Exemple d'utilisation # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("Statut attendu reçu!") # else: # print("Timeout d'attente du statut.") -
Long polling : Le client envoie une requête et le serveur maintient la connexion ouverte jusqu'à l'arrivée de données ou expiration du délai sur le serveur. Moins utilisé dans les API REST standards, plus dans les architectures basées sur les événements ou WebSocket.
-
Webhooks : L'API appelle une URL spécifique côté client lors de la survenue d'un événement. Nécessite une endpoint accessible publiquement côté client pour recevoir le webhook.
- Mise en œuvre :
- Enregistrement de l'URL du webhook via l'API d'un autre service.
- Écriture de code côté client pour recevoir et traiter les requêtes HTTP POST du webhook.
- Attente (généralement asynchrone) de la réception des données via le webhook.
- Mise en œuvre :
Le choix de la méthode dépend de l'architecture de l'API et des exigences du test. Le polling est le plus répandu et simple à mettre en œuvre pour la plupart des API REST.