Reqwest para Rust: guia completo com exemplos

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

O que é Reqwest e para que serve?

\n\n

Reqwest é uma das bibliotecas mais populares e convenientes para fazer requisições HTTP na linguagem Rust. Ela fornece uma API ergonômica e de alto nível, construída sobre o motor HTTP assíncrono hyper e tokio. Se você está escrevendo em Rust um web scraper, um cliente para API REST, um bot para Telegram ou simplesmente quer baixar um arquivo — Reqwest será sua ferramenta principal.

\n\n

A biblioteca suporta tanto requisições assíncronas (padrão) quanto síncronas (bloqueantes), trabalho com JSON, multipart/form-data, cookies, proxy, TLS/SSL, redirecionamentos e muito mais. Reqwest foi projetado para ser intuitivo para desenvolvedores familiarizados com a biblioteca Python requests ou a biblioteca JavaScript fetch.

\n\n

Principais recursos:

\n
    \n
  • Requisições HTTP/HTTPS assíncronas e síncronas (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
  • \n
  • Serialização e desserialização automática de JSON (via serde)
  • \n
  • Suporte a multipart/form-data para upload de arquivos
  • \n
  • Gerenciamento de cookies (Cookie Store)
  • \n
  • Suporte a proxy (HTTP, HTTPS, SOCKS5)
  • \n
  • Personalização de timeouts, cabeçalhos, User-Agent
  • \n
  • Trabalho com streams para respostas grandes
  • \n
  • Segurança por padrão (verificação de certificados SSL)
  • \n
\n\n

Instalação

\n\n

Para usar Reqwest, você precisará de um projeto Rust com Cargo.toml. Adicione a dependência na seção [dependencies]:

\n\n
[dependencies]\nreqwest = { version = "0.12", features = ["json", "multipart", "cookies", "socks"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"
\n\n

Explicação sobre features:

\n
    \n
  • json — inclui suporte para serialização/desserialização JSON via serde.
  • \n
  • multipart — para envio de multipart/form-data.
  • \n
  • cookies — para gerenciamento automático de cookies.
  • \n
  • socks — para suporte a proxy SOCKS5.
  • \n
  • Se você precisar apenas do cliente síncrono (bloqueante), adicione a feature blocking.
  • \n
\n\n

Para uso síncrono (sem assincronia), você pode configurar assim:

\n\n
reqwest = { version = "0.12", features = ["blocking", "json"] }
\n\n

Início rápido com exemplo de código

\n\n

Vamos fazer uma requisição GET simples a uma API pública e exibir o resultado. Crie o arquivo main.rs:

\n\n
use reqwest;\nuse std::error::Error;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn Error>> {\n    // Executa requisição GET\n    let response = reqwest::get("https://api.github.com/repos/rust-lang/rust")\n        .await?;\n\n    // Verifica o status\n    if response.status().is_success() {\n        // Analisa o corpo da resposta como JSON (sem tipagem estrita)\n        let body: serde_json::Value = response.json().await?;\n        println!("Nome do repositório: {}", body["full_name"]);\n        println!("Descrição: {}", body["description"].as_str().unwrap_or("Sem descrição"));\n        println!("Estrelas: {}", body["stargazers_count"]);\n    } else {\n        eprintln!("Erro: {}", response.status());\n    }\n\n    Ok(())\n}
\n\n

Execute com o comando cargo run. Você deve ver informações sobre o repositório Rust.

\n\n

Métodos e funções principais

\n\n

1. reqwest::get()

\n

O que faz: Executa uma requisição HTTP GET para a URL especificada. É a maneira mais simples de obter dados. Retorna Response.

\n

Parâmetros:

\n
    \n
  • url: impl IntoUrl — string ou URL para onde a requisição é enviada.
  • \n
\n

Exemplo:

\n
let resp = reqwest::get("https://httpbin.org/get"                    

Recommendations