07.08.2025

Python e clientes HTTP

Python é frequentemente usado para interagir com APIs externas para fins de monitoramento, integração, análise ou automação. Para fazer isso de forma competente e segura, é importante usar ambientes virtuais e configurar corretamente as requisições HTTP cíclicas.

Neste artigo, vamos analisar:

  1. criação de um ambiente virtual;
  2. instalação de clientes HTTP populares;
  3. desenvolvimento de requisições típicas de API.

Criação e ativação do ambiente

Para isso, acesse o projeto ou crie um diretório onde instalaremos o ambiente usando o módulo:

mkdir myproject && cd myproject && pip3 install venv &&
python3 -m venv venv

Para ativar o ambiente, execute:

Linux/macOS:

source venv/bin/activate

Windows:

venv\Scripts\activate

Instalação de bibliotecas HTTP

pip install requests httpx

Fixe as dependências:

pip freeze > requirements.txt

Exemplos de requisições HTTP

1. requests (cliente síncrono)

import requests

response = requests.get("https://api.github.com")
print(response.status_code)
print(response.json())

2. httpx (síncrono e assíncrono)

import httpx

response = httpx.get("https://api.github.com")
print(response.status_code)

Versão assíncrona:

import httpx
import asyncio

async def main():
async with httpx.AsyncClient() as client:
resp = await client.get("https://api.github.com")
print(resp.status_code)

asyncio.run(main())

Requisições cíclicas com base em dados de um arquivo

Vamos supor que temos uma lista de IDs com os quais precisamos fazer requisições à API. O script fica assim:

input.txt

123
456
abc

main.py — exemplo completo

import requests
import time

API_URL = "https://api.example.com/data /" # Replace with a real URL
HEADERS = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}

with open("input.txt", "r") as f:
values = [line.strip() for line in f if line.strip()]

for val in values:
try:
url = f"{API_URL}{val}"
response = requests.get(url, headers=HEADERS, timeout=10)

if response.status_code == 200:
print(f"[✓] {val}: Successful")
print(response.json())
else:
print(f"[!] {val}: Status {response.status_code}")

except requests.exceptions.RequestException as e:
print(f"[✗] {val}: Error — {e}")

time.sleep(1) # We are not overloading the API

O script:

  1. Lê as linhas de um arquivo input.txt (por exemplo, IDs ou códigos);
  2. Substitui cada linha na URL da API;
  3. Envia uma requisição GET;
  4. Processa a resposta;
  5. Faz uma pausa entre as requisições para não sobrecarregar o servidor.

Trabalhar com HTTP em Python é simples se você usar ambiente virtual, gerenciar dependências corretamente, monitorar erros e frequência de requisições, e processar dados de entrada a partir de arquivos.