Sobes.tech
Middle

Kako implementirati čekanje (wait) za API?

sobes.tech АИ

Одговор од АИ

Za API testiranje koriste se jasna očekivanja zasnovana na uslovima. Najčešće metode:

  1. ** polling ** (anketa): Periodični zahtev ka API-ju dok se ne dobije očekivani rezultat ili ne istekne timeout.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Čeka određeni status od API-ja.
    
        Args:
            url: URL krajnje tačke API-ja.
            expected_status: Očekivani HTTP status kod.
            timeout: Maksimalno vreme čekanja u sekundama.
            interval: Interval između pokušaja u sekundama.
    
        Returns:
            requests.Response: Objekat odgovora pri uspehu, None pri timeout-u.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Ili druga HTTP metoda
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Greška pri zahtevu: {e}") # Logovanje greške zahteva
            time.sleep(interval)
        return None # Vraćamo None pri timeout-u
    
    # Primer korišćenja
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # if response:
    #     print("Očekivani status primljen!")
    # else:
    #     print("Timeout čekanja statusa.")
    
  2. ** long polling ** (dugi anketiranje): Klijent šalje zahtev i server drži konekciju otvorenom dok se ne pojave podaci ili ne istekne timeout na serveru. Manje se koristi u standardnim REST API-jevima, češće u arhitekturama zasnovanim na događajima ili WebSocket.

  3. ** Webhooks ** (povratni pozivi): API poziva zadati URL na strani klijenta pri pojavi određenog događaja. Zahteva dostupnu javnu krajnju tačku na strani klijenta za primanje webhook-a.

    • Implementacija:
      • Registracija URL-a webhook-a putem API-ja drugog servisa.
      • Pisanje koda na strani klijenta za primanje i obradu HTTP POST zahteva od webhook-a.
      • Čekanje (najčešće asinhrono) primanja podataka putem webhook-a.

Izbor metode zavisi od arhitekture API-ja i zahteva testa. Polling je najčešće i najjednostavnije za implementaciju za većinu REST API-ja.