Sobes.tech
Middle

Jak implementovat čekání (wait) pro API?

sobes.tech AI

Odpověď od AI

Pro testování API se používají explicitní očekávání založená na podmínkách. Nejčastější metody:

  1. Polling (dotazování): Periodický požadavek na API, dokud není dosažen očekávaný výsledek nebo nevyprší časový limit.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Čeká na určitý stav od API.
    
        Args:
            url: URL koncového bodu API.
            expected_status: Očekávaný kód stavu HTTP.
            timeout: Maximální doba čekání v sekundách.
            interval: Interval mezi pokusy v sekundách.
    
        Returns:
            requests.Response: Objekt odpovědi při úspěchu, None při timeoutu.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Nebo jiná HTTP metoda
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Chyba při požadavku: {e}") # Logování chyby
            time.sleep(interval)
        return None # Vrací None při timeoutu
    
    # Příklad použití
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Očekávaný stav obdržen!")
    # else:
    #     print("Čas vypršel při čekání na stav.")
    
  2. Long polling (dlouhé dotazování): Klient odešle požadavek a server udrží spojení otevřené, dokud se neobjeví data nebo nevyprší časový limit na serveru. Méně běžné v standardních REST API, častěji v architekturách založených na událostech nebo WebSocket.

  3. Webhooks (zpětné volání): API volá zadanou URL na straně klienta při vzniku určité události. Vyžaduje veřejně dostupný endpoint na straně klienta pro příjem webhooku.

    • Implementace:
      • Registrace URL webhooku přes API jiného servisu.
      • Psaní kódu na straně klienta pro příjem a zpracování HTTP POST požadavků od webhooku.
      • Čekání (obvykle asynchronně) na přijetí dat přes webhook.

Volba metody závisí na architektuře API a požadavcích testu. Polling je nejrozšířenější a nejjednodušší na implementaci pro většinu REST API.