Wie implementiert man ein Warten (wait) für die API?
sobes.tech KI
Antwort von AI
Für API-Tests werden explizite Erwartungen auf Basis von Bedingungen verwendet. Die gebräuchlichsten Methoden:
-
Polling (Abfrage): Periodische Anfrage an die API, bis das erwartete Ergebnis erreicht ist oder die Zeit abläuft.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Wartet auf einen bestimmten Status der API. Args: url: URL des API-Endpunkts. expected_status: Erwarteter HTTP-Statuscode. timeout: Maximale Wartezeit in Sekunden. interval: Intervall zwischen den Versuchen in Sekunden. Returns: requests.Response: Antwortobjekt bei Erfolg, None bei Timeout. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # Oder eine andere HTTP-Methode if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Fehler bei der Anfrage: {e}") # Fehlerprotokollierung time.sleep(interval) return None # Rückgabe bei Timeout # Beispiel für die Verwendung # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("Erwarteter Status erhalten!") # else: # print("Timeout beim Warten auf den Status.") -
Long polling (langfristiges Abfragen): Der Client sendet eine Anfrage und der Server hält die Verbindung offen, bis Daten verfügbar sind oder der Timeout erreicht ist. Weniger üblich bei Standard-REST-APIs, häufiger bei ereignisbasierten Architekturen oder WebSocket.
-
Webhooks (Rückruf-URLs): Die API ruft eine vom Client konfigurierte URL bei einem bestimmten Ereignis auf. Erfordert eine öffentlich zugängliche Endpunktadresse auf der Client-Seite, um Webhooks zu empfangen.
- Implementierung:
- Registrierung der Webhook-URL über die API eines anderen Dienstes.
- Schreiben von Code auf der Client-Seite, um HTTP POST-Anfragen vom Webhook zu empfangen und zu verarbeiten.
- Warten (meist asynchron) auf den Empfang von Daten via Webhook.
- Implementierung:
Die Wahl der Methode hängt von der Architektur der API und den Testanforderungen ab. Polling ist die am weitesten verbreitete und einfachste Methode für die meisten REST-APIs.