Converter curl para Rust
O curl2code converte comandos curl para código Rust usando a crate reqwest. A conversão é executada no seu navegador via WebAssembly para total privacidade. Para Go, confira nosso conversor de curl para Go. Para C, veja curl para C. Abaixo estão exemplos práticos de Rust com async/await.
Como copiar o curl do seu navegador
- 1
Abra o DevTools
Pressione F12 ou Ctrl+Shift+I para abrir as ferramentas de desenvolvedor do seu navegador.
- 2
Vá para a aba Network
Clique na aba Network e realize a ação que dispara a requisição HTTP.
- 3
Copiar como cURL
Clique com o botão direito na requisição → Copy → Copy as cURL. Depois cole acima.
Perguntas Frequentes
O que é o Rust reqwest?
O reqwest é o cliente HTTP mais popular para Rust, construído sobre o hyper. Ele fornece APIs tanto bloqueantes quanto assíncronas, serialização automática de JSON via serde, TLS, tratamento de cookies e suporte a proxy. Adicione com cargo add reqwest --features json. É a biblioteca padrão que o curl2code usa para conversões em Rust.
reqwest vs hyper vs ureq — qual devo usar?
reqwest é a escolha padrão para a maioria dos projetos — alto nível, rico em recursos e assíncrono. hyper é de nível mais baixo e oferece controle máximo (o reqwest é construído sobre ele). ureq é um cliente minimalista, apenas bloqueante, sem dependência de runtime assíncrono. Para uma abordagem de biblioteca padrão semelhante, veja curl para Go ou curl para C.
Como lidar com autenticação em Rust?
Para Bearer: client.get(url).bearer_auth(token). Para Basic: client.get(url).basic_auth(user, Some(pass)). Ou defina cabeçalhos manualmente com .header("Authorization", value). O curl2code converte as flags -u e -H 'Authorization: ...' para os métodos reqwest apropriados.
Como enviar dados de formulário multipart em Rust?
Use reqwest::multipart::Form: crie com Form::new(), adicione campos de texto com .text("key", "value") e arquivos com .file("field", path).await?. Passe para client.post(url).multipart(form). O curl2code lida com flags -F para o multipart do reqwest.
Como lidar com erros HTTP em Rust?
O reqwest retorna Result encapsulando Response em caso de sucesso ou reqwest::Error em caso de falha — use o operador ? para propagação. Verifique response.status().is_success() ou chame response.error_for_status()?, que converte códigos não 2xx em erros. O sistema de tipos do Rust garante que todos os caminhos de erro sejam tratados explicitamente em tempo de compilação.
De qual runtime assíncrono o reqwest precisa?
O reqwest requer o runtime tokio por padrão. Anote sua função main com #[tokio::main]. Para uso bloqueante sem um runtime assíncrono, habilite a feature blocking e use reqwest::blocking::Client. O curl2code gera código assíncrono com tokio por padrão. Para outro ecossistema assíncrono, veja curl para Go (goroutines).
Como definir timeouts no Rust reqwest?
Defina no cliente: Client::builder().timeout(Duration::from_secs(30)).connect_timeout(Duration::from_secs(10)).build()?. Por requisição: client.get(url).timeout(Duration::from_secs(5)). Estes mapeiam para as flags --max-time e --connect-timeout do curl.
Como usar um proxy com reqwest?
Defina um proxy no builder do cliente: Client::builder().proxy(Proxy::https("http://proxy:8080")?).build()?. Suporta proxies HTTP, HTTPS e SOCKS5. O reqwest também respeita as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY por padrão. O curl2code converte flags -x para a configuração de proxy.
Como enviar uma requisição POST com corpo JSON em Rust?
Converta um comando curl POST como curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL para Rust usando o curl2code. O código gerado usa client.post(url).json(&data).send().await?. O curl2code detecta automaticamente as flags -d/--data com conteúdo JSON e define o cabeçalho Content-Type apropriado no código do reqwest.
Como adicionar autorização com token Bearer em Rust?
Passe curl -H "Authorization: Bearer YOUR_TOKEN" URL para o curl2code e ele gerará o código do reqwest com o cabeçalho de autenticação: .bearer_auth("YOUR_TOKEN"). O curl2code detecta tokens Bearer tanto de flags -H "Authorization: Bearer ..." quanto de --oauth2-bearer. Para Basic auth, use -u user:pass.
Como definir o cabeçalho Content-Type em Rust?
O curl2code converte curl -H "Content-Type: application/json" URL para o código do reqwest com o cabeçalho correto: .header("Content-Type", "application/json"). Para dados -d, o curl define por padrão application/x-www-form-urlencoded; para uploads de formulário com -F, ele usa multipart/form-data. O curl2code mapeia cada um para a API correta do reqwest.