Sobes.tech
Middle

Ako implementovať čakanie (wait) pre API?

sobes.tech AI

Odpoveď od AI

Pre testovanie API sa používajú jasné očakávania založené na podmienkach. Najbežnejšie metódy:

  1. ** polling ** (anketa): Periodická požiadavka na API, kým sa nedosiahne očakávaný výsledok alebo nevyprší časový limit.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Čaká na určitý stav od API.
    
        Args:
            url: URL koncového bodu API.
            expected_status: Očakávaný kód stavu HTTP.
            timeout: Maximálny čas čakania v sekundách.
            interval: Interval medzi pokusmi v sekundách.
    
        Returns:
            requests.Response: Objekt odpovede pri úspechu, None pri timeoute.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Alebo iná HTTP metóda
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Chyba pri požiadavke: {e}") # Logovanie chyby požiadavky
            time.sleep(interval)
        return None # Vrátime None pri timeoute
    
    # Príklad použitia
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Očakávaný stav prijatý!")
    # else:
    #     print("Čakanie na stav vypršalo.")
    
  2. ** long polling ** (dlhé ankety): Klient odosiela požiadavku a server udržiava spojenie otvorené, kým sa neobjavia údaje alebo nevyprší časový limit na serveri. Menej sa používa v štandardných REST API, častejšie v architektúrach založených na udalostiach alebo WebSocket.

  3. ** Webhooks ** (zpětné volání): API volá zadanú URL na strane klienta pri výskyte určitej udalosti. Vyžaduje dostupnú verejnú koncovú bodku na strane klienta na príjem webhooku.

    • Implementácia:
      • Registrácia URL webhooku cez API iného servisu.
      • Písanie kódu na strane klienta na príjem a spracovanie HTTP POST požiadaviek od webhooku.
      • Čakanie (najčastejšie asynchrónne) na prijatie dát cez webhook.

Výber metódy závisí od architektúry API a požiadaviek testu. Polling je najbežnejší a najjednoduchší na implementáciu pre väčšinu REST API.