Come implementare un'attesa (wait) per l'API?
sobes.tech AI
Risposta dell'AI
Per i test delle API vengono utilizzate aspettative esplicite basate su condizioni. I metodi più comuni:
-
Polling (sondaggio): richiesta periodica all'API fino a quando non si ottiene il risultato atteso o scade il timeout.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Attende uno stato specifico dell'API. Args: url: URL dell'endpoint API. expected_status: Codice di stato HTTP atteso. timeout: Tempo massimo di attesa in secondi. interval: Intervallo tra i tentativi in secondi. Returns: requests.Response: Oggetto di risposta in caso di successo, None in caso di timeout. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # O altro metodo HTTP if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Errore nella richiesta: {e}") # Log dell'errore time.sleep(interval) return None # Ritorna None in caso di timeout # Esempio di utilizzo # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("Stato atteso ricevuto!") # else: # print("Timeout in attesa dello stato.") -
Long polling (sondaggio prolungato): Il client invia una richiesta e il server mantiene la connessione aperta fino a quando non ci sono dati o scade il timeout sul server. Meno comune nelle API REST standard, più usato in architetture basate su eventi o WebSocket.
-
Webhooks (chiamate di ritorno): L'API chiama un URL specificato sul lato client quando si verifica un evento. Richiede un endpoint accessibile pubblicamente sul lato client per ricevere il webhook.
- Implementazione:
- Registrazione dell'URL del webhook tramite l'API di un altro servizio.
- Scrittura di codice sul lato client per ricevere e processare le richieste HTTP POST del webhook.
- Attesa (generalmente asincrona) di ricevere dati tramite webhook.
- Implementazione:
La scelta del metodo dipende dall'architettura dell'API e dai requisiti del test. Il polling è il più diffuso e semplice da implementare per la maggior parte delle API REST.