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) Também na biblioteca
Mongoose Paginate para JavaScript (Node.js): guia completo com exemplos
Mongoose para JavaScript (Node.js): guia completo com exemplos
Programação Reativa em C++: bibliotecas RxCpp e Boost.Signals2
Programação Reativa em C++: Bibliotecas e Prática
gRPC para Swift (iOS/macOS): bibliotecas, configuração e exemplos de código