Cum se implementează o așteptare (wait) pentru API?
sobes.tech AI
Răspuns de la AI
Pentru testarea API-urilor, se utilizează așteptări explicite bazate pe condiții. Cele mai comune metode:
-
Polling (sondare): Solicitare periodică către API până când se obține rezultatul așteptat sau expiră timeout-ul.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Așteaptă un anumit status de la API. Args: url: URL-ul endpoint-ului API. expected_status: Codul de stare HTTP așteptat. timeout: Timpul maxim de așteptare în secunde. interval: Intervalul între încercări în secunde. Returns: requests.Response: Obiectul de răspuns în caz de succes, None în caz de timeout. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # Sau altă metodă HTTP if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Eroare la solicitare: {e}") # Logare eroare time.sleep(interval) return None # Returnează None în caz de timeout # Exemplu de utilizare # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("Statusul așteptat primit!") # else: # print("Timeout așteptând statusul.") -
Long polling (sondare lungă): Clientul trimite o solicitare și serverul menține conexiunea deschisă până când apar date sau expiră timeout-ul pe server. Mai puțin folosit în API-urile REST standard, mai frecvent în arhitecturi bazate pe evenimente sau WebSocket.
-
Webhooks (apeluri de întoarcere): API-ul apelează un URL specificat pe partea clientului atunci când are loc un anumit eveniment. Necesită un endpoint accesibil public pe partea clientului pentru a primi webhook-ul.
- Implementare:
- Înregistrarea URL-ului webhook prin API-ul unui alt serviciu.
- Scrierea de cod pe partea clientului pentru a primi și procesa cererile HTTP POST de la webhook.
- Așteptarea (de obicei asincron) a primirii datelor prin webhook.
- Implementare:
Alegerea metodei depinde de arhitectura API-ului și de cerințele testului. Polling-ul este cel mai comun și cel mai simplu de implementat pentru majoritatea API-urilor REST.