Como implementar uma espera (wait) para a API?
sobes.tech IA
Resposta da IA
Para testes de API, utilizam-se expectativas explícitas baseadas em condições. Os métodos mais comuns:
-
Polling (sondagem): Pedido periódico à API até que o resultado esperado seja obtido ou o tempo limite seja atingido.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Aguarda um status específico da API. Args: url: URL do endpoint da API. expected_status: Código de status HTTP esperado. timeout: Tempo máximo de espera em segundos. interval: Intervalo entre tentativas em segundos. Returns: requests.Response: Objeto de resposta em caso de sucesso, None em caso de timeout. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # Ou outro método HTTP if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Erro na requisição: {e}") # Registro do erro time.sleep(interval) return None # Retorna None em caso de timeout # Exemplo de uso # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("Status esperado recebido!") # else: # print("Timeout esperando o status.") -
Long polling (sondagem prolongada): O cliente envia uma requisição e o servidor mantém a conexão aberta até que apareçam dados ou o tempo limite seja atingido no servidor. Menos comum em APIs REST padrão, mais utilizado em arquiteturas baseadas em eventos ou WebSocket.
-
Webhooks (chamadas de retorno): A API chama uma URL configurada no cliente quando ocorre um evento específico. Requer uma endpoint acessível publicamente no lado do cliente para receber o webhook.
- Implementação:
- Registro da URL do webhook via API de outro serviço.
- Escrever código no lado do cliente para receber e processar requisições HTTP POST do webhook.
- Esperar (geralmente de forma assíncrona) a recepção de dados via webhook.
- Implementação:
A escolha do método depende da arquitetura da API e dos requisitos do teste. Polling é o mais comum e simples de implementar para a maioria das APIs REST.