Sobes.tech
Middle

Hoe implementeer je een wacht (wait) voor de API?

sobes.tech AI

Antwoord van AI

Voor API-testen worden expliciete verwachtingen op basis van voorwaarden gebruikt. De meest voorkomende methoden:

  1. Polling (polling): Periodiek een verzoek naar de API totdat het verwachte resultaat is bereikt of de timeout is verlopen.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Wacht op een bepaalde status van de API.
    
        Args:
            url: URL van het API-eindpunt.
            expected_status: Verwachte HTTP-statuscode.
            timeout: Maximale wachttijd in seconden.
            interval: Interval tussen pogingen in seconden.
    
        Returns:
            requests.Response: Response-object bij succes, None bij timeout.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Of andere HTTP-methode
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Fout bij verzoek: {e}") # Log fout
            time.sleep(interval)
        return None # Retourneert None bij timeout
    
    # Voorbeeld van gebruik
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Verwachte status ontvangen!")
    # else:
    #     print("Timeout bij wachten op status.")
    
  2. Long polling (langdurig polling): De client stuurt een verzoek en de server houdt de verbinding open totdat er gegevens beschikbaar zijn of de timeout op de server is bereikt. Minder gebruikelijk in standaard REST API's, meer in op gebeurtenissen gebaseerde architecturen of WebSocket.

  3. Webhooks (terugroepaanroepen): De API roept een door de client geconfigureerde URL aan wanneer een bepaald evenement plaatsvindt. Vereist een publiek toegankelijke endpoint aan de clientzijde om de webhook te ontvangen.

    • Implementatie:
      • Registratie van de webhook URL via de API van een andere dienst.
      • Schrijven van code aan de clientzijde om HTTP POST-verzoeken van de webhook te ontvangen en te verwerken.
      • Wachten (meestal asynchroon) op het ontvangen van gegevens via de webhook.

De keuze van methode hangt af van de architectuur van de API en de testvereisten. Polling is de meest gebruikte en eenvoudigste methode voor de meeste REST API's.