Sobes.tech
Middle

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:

  1. 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.")
    
  2. 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.

  3. 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.

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.