Requests: trabalhando com requisições HTTP em Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução à biblioteca Requests

Requests é uma biblioteca simples e poderosa para trabalhar com requisições HTTP em Python. Ela oferece uma interface prática para consumir APIs REST, baixar dados de páginas web, enviar arquivos e gerenciar autenticação. Graças à sua sintaxe enxuta e funcionalidades robustas, Requests se tornou o padrão de facto entre os clientes HTTP em Python.

A biblioteca Requests foi criada por Kenneth Reitz em 2011 com o objetivo de tornar as requisições HTTP em Python extremamente simples e intuitivas. Ela é construída sobre o urllib3 e fornece uma API de alto nível para trabalhar com o protocolo HTTP.

Vantagens do Requests em comparação com urllib

  • Sintaxe mais legível — métodos e parâmetros intuitivos
  • Manipulação automática de cookies e redirecionamentos — sem necessidade de configuração extra
  • Trabalho facilitado com JSON, cabeçalhos e formulários — suporte nativo aos formatos mais usados
  • Suporte a sessões, proxies e autenticação — conjunto completo de ferramentas para serviços web
  • Suporte a todos os métodos HTTP — GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
  • Decodificação automática de conteúdo — tratamento inteligente de codificações
  • Suporte nativo a SSL — conexões seguras por padrão

Instalação e importação da biblioteca

Instalação usando pip:

pip install requests

Para atualizar para a versão mais recente:

pip install --upgrade requests

Importando a biblioteca:

import requests

Principais métodos de requisições HTTP

Enviando requisições GET

Requisições GET são usadas para obter dados do servidor:

response = requests.get('https://api.exemplo.com/dados')
print(response.status_code)  # Código de resposta
print(response.text)         # Texto da resposta

Obtendo dados JSON:

response = requests.get('https://api.exemplo.com/usuarios')
dados = response.json()  # Conversão automática para dicionário Python
print(dados)

Enviando requisições POST

Requisições POST são usadas para enviar dados ao servidor:

payload = {'usuario': 'admin', 'senha': '123'}
response = requests.post('https://api.exemplo.com/login', data=payload)

Enviando dados JSON:

dados_usuario = {'nome': 'João', 'email': 'joao@exemplo.com'}
response = requests.post('https://api.exemplo.com/usuarios', json=dados_usuario)

Usando PUT, PATCH e DELETE

# PUT - atualização completa do recurso
requests.put('https://api.exemplo.com/usuario/1', json={'nome': 'Novo Nome', 'email': 'novo@exemplo.com'})

# PATCH - atualização parcial do recurso
requests.patch('https://api.exemplo.com/usuario/1', json={'ativo': True})

# DELETE - exclusão do recurso
requests.delete('https://api.exemplo.com/usuario/1')

# HEAD - obter apenas os cabeçalhos
response = requests.head('https://api.exemplo.com/usuario/1')
print(response.headers)

Trabalhando com parâmetros de requisição

Os parâmetros da URL podem ser passados através de um dicionário:

params = {'busca': 'python', 'limite': 10, 'pagina': 1}
response = requests.get('https://api.exemplo.com/busca', params=params)
print(response.url)  # Mostra a URL completa com os parâmetros

Também é possível passar parâmetros como uma lista de tuplas:

params = [('tag', 'python'), ('tag', 'web'), ('limite', 20)]
response = requests.get('https://api.exemplo.com/posts', params=params)                    

Recommendations