Sobes.tech
Middle

Kaip įgyvendinti laukimą (wait) API?

sobes.tech AI

Atsakymas iš AI

API testavimui naudojamos aiškios sąlyginės laukiančiosios. Dažniausiai naudojamos metodai:

  1. ** polling ** (apklausa): Periodinis užklausimas API, kol nebus gautas laukiamas rezultatas arba nepasibaigs laiko limitas.

    import time
    import requests
    
    def wait_for_status(url, expected_status, timeout=30, interval=1):
        """
        Laukia tam tikro statuso iš API.
    
        Args:
            url: API galinės vietos URL.
            expected_status: Laukiamas HTTP statuso kodas.
            timeout: Maksimalus laukimo laikas sekundėmis.
            interval: Intervalas tarp bandymų sekundėmis.
    
        Returns:
            requests.Response: Atsakymo objektas sėkmės atveju, None, jei pasibaigia laiko limitas.
        """
        start_time = time.time()
        while time.time() - start_time < timeout:
            try:
                response = requests.get(url)  # Ar kita HTTP metodas
                if response.status_code == expected_status:
                    return response
            except requests.exceptions.RequestException as e:
                print(f"Klaida užklausoje: {e}") # Klaidos registravimas
            time.sleep(interval)
        return None # Grąžiname None, jei pasibaigia laiko limitas
    
    # Pavyzdys naudojimo
    # api_url = "http://example.com/api/resource"
    # expected_status_code = 200
    # response = wait_for_status(api_url, expected_status_code)
    # jei response:
    #     print("Laukimas sėkmingas!")
    # else:
    #     print("Laiko limitas pasibaigė.")
    
  2. ** long polling ** (ilgas apklausimas): Klientas siunčia užklausą, o serveris laiko atidarytą ryšį iki duomenys pasirodys arba pasibaigs laiko limitas.

  3. ** Webhooks ** (atgaliniai skambučiai): API iškviečia nurodytą URL kliento pusėje, kai įvyksta tam tikras įvykis. Reikalauja viešai prieinamos galinės vietos kliento pusėje Webhook priėmimui.

    • Įgyvendinimas:
      • Webhook URL registracija per kitos paslaugos API.
      • Kodo rašymas kliento pusėje HTTP POST užklausų priėmimui ir apdorojimui.
      • Laukimas (dažniausiai asinchroninis) duomenų gavimui per Webhook.

Pasirinkimas priklauso nuo API architektūros ir testo reikalavimų. Polling yra dažniausiai naudojamas ir lengviausias įgyvendinti daugumai REST API.