0Pricing
Python Academy · Aula

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"])   # octocat

Parâ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 string

POST 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

  1. Requisições HTTP com requests e httpx
  2. Análise de HTML com BeautifulSoup
  3. Criação de um spider com Scrapy
  4. Tratamento de JavaScript e medidas antirraspagem
← Voltar para Python Academy