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:
-
** 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ė.") -
** long polling ** (ilgas apklausimas): Klientas siunčia užklausą, o serveris laiko atidarytą ryšį iki duomenys pasirodys arba pasibaigs laiko limitas.
-
** 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.
- Įgyvendinimas:
Pasirinkimas priklauso nuo API architektūros ir testo reikalavimų. Polling yra dažniausiai naudojamas ir lengviausias įgyvendinti daugumai REST API.