Requisições HTTP com requests e httpx
Busque páginas da Web e trate redirecionamentos, sessões e cabeçalhos.
Requisições HTTP com requests e httpx é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Biblioteca requests
requests é a biblioteca HTTP síncrona padrão. Simples, testada em produção e perfeita para scripts e chamadas pontuais à API.
# pip install requests
import requests
r = requests.get("https://api.github.com/users/octocat")
print(r.status_code) # 200
print(r.json()["login"]) # octocatParâmetros de consulta e cabeçalhos
Passe parâmetros de consulta com params= e cabeçalhos personalizados com headers=.
import requests
r = requests.get(
"https://api.example.com/search",
params={"q": "python", "page": 1},
headers={"Authorization": "Bearer my-token"}
)
print(r.url) # full URL with query stringPOST com corpo JSON
Envie dados JSON com json= — requests define Content-Type: application/json automaticamente.
import requests
r = requests.post(
"https://api.example.com/users",
json={"name": "Alice", "email": "alice@example.com"}
)
print(r.status_code) # 201
print(r.json())Objetos de sessão
Use uma requests.Session para manter cabeçalhos, cookies e o conjunto de conexões entre várias requisições.
import requests
with requests.Session() as s:
s.headers.update({"Authorization": "Bearer token"})
users = s.get("https://api.example.com/users").json()
profile = s.get("https://api.example.com/me").json()Tempo limite e novas tentativas
Sempre defina um tempo limite. Use urllib3.util.retry.Retry com um HTTPAdapter para novas tentativas automáticas.
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
s = requests.Session()
retry = Retry(total=3, backoff_factor=1)
s.mount("https://", HTTPAdapter(max_retries=retry))
r = s.get("https://api.example.com/data", timeout=5)Tratamento de erros
Chame r.raise_for_status() para gerar um HTTPError em respostas 4xx/5xx.
import requests
try:
r = requests.get("https://api.example.com/data")
r.raise_for_status()
data = r.json()
except requests.HTTPError as e:
print(f"HTTP error: {e.response.status_code}")
except requests.ConnectionError:
print("Network unreachable")Baixando arquivos
Transmita downloads de arquivos grandes com stream=True para evitar carregar tudo na memória.
import requests
with requests.get("https://example.com/large.zip", stream=True) as r:
r.raise_for_status()
with open("large.zip", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)httpx — HTTP assíncrono moderno
httpx tem a mesma API que requests, mas oferece suporte a operações assíncronas. Use-o em aplicações FastAPI e fluxos de trabalho assíncronos.
# pip install httpx
import httpx
# Synchronous:
r = httpx.get("https://httpbin.org/get")
print(r.json())
# Asynchronous:
import asyncio
async def main():
async with httpx.AsyncClient() as c:
r = await c.get("https://httpbin.org/get")
print(r.json())
asyncio.run(main())AsyncClient do httpx
Compartilhe um único AsyncClient entre as requisições para reutilizar conexões. Crie-o na inicialização e feche-o no desligamento.
import httpx, asyncio
CLIENT: httpx.AsyncClient | None = None
async def startup():
global CLIENT
CLIENT = httpx.AsyncClient(timeout=10)
async def shutdown():
await CLIENT.aclose()Auxiliares de autenticação
Tanto requests quanto httpx oferecem auxiliares de autenticação: auth=(user, pass) para autenticação básica e classes Auth personalizadas para autenticação por token.
import httpx
class BearerAuth(httpx.Auth):
def __init__(self, token): self.token = token
def auth_flow(self, request):
request.headers["Authorization"] = f"Bearer {self.token}"
yield request
async with httpx.AsyncClient(auth=BearerAuth("my-token")) as c:
r = await c.get("https://api.example.com/me")Simulando HTTP em testes
Use respx (para httpx) ou responses (para requests) para simular chamadas HTTP nos testes.
# pip install respx
import httpx, respx, asyncio
@respx.mock
async def test_api():
respx.get("https://api.example.com/users").mock(
return_value=httpx.Response(200, json=[{"id":1}])
)
async with httpx.AsyncClient() as c:
r = await c.get("https://api.example.com/users")
assert r.json() == [{"id": 1}]Verificação rápida
O que response.raise_for_status() faz?
Revisão
Use requests para HTTP síncrono. Use httpx quando for necessário trabalhar de forma assíncrona. Sempre defina tempos limite, use sessões para reutilizar conexões, chame raise_for_status() e transmita downloads grandes. Simule HTTP nos testes com respx ou responses.
Perguntas Frequentes
A aula “Requisições HTTP com requests e httpx” é grátis?
Sim — o texto completo de “Requisições HTTP com requests e httpx” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Requisições HTTP com requests e httpx”?
Busque páginas da Web e trate redirecionamentos, sessões e cabeçalhos. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Requisições HTTP com requests e httpx”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Requisições HTTP com requests e httpx
- Análise de HTML com BeautifulSoup
- Criação de um spider com Scrapy
- Tratamento de JavaScript e medidas antirraspagem