Sobes.tech
Middle

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:

  1. 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.")
    
  2. 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.

  3. 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.

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.