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:
- criação de um ambiente virtual;
- instalação de clientes HTTP populares;
- 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:
- Lê as linhas de um arquivo input.txt (por exemplo, IDs ou códigos);
- Substitui cada linha na URL da API;
- Envia uma requisição GET;
- Processa a resposta;
- 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.