Conversor de curl para Rust
Converta um comando curl em código Rust com reqwest instantaneamente no seu navegador. O comando permanece no seu dispositivo.
Seu comando curl é convertido para Rust localmente no seu navegador e nunca é enviado, mas evite colar tokens ou credenciais reais de produção em qualquer ferramenta.
Converta também curl para JavaScript fetch
Sobre cURL para Rust
cURL to Rust pega um comando curl que você copiou de um terminal, das DevTools do navegador ou de uma documentação de API e o reescreve como um programa assíncrono de Rust baseado no crate reqwest. Ele lê flags como -X, -H, -d, --data-raw, --json, -u e -G, escolhe o reqwest::Method correto e opta por .json(...) para corpos JSON válidos ou .body(...) para cargas de formulário ou brutas, para que a requisição corresponda ao que o curl realmente enviaria. Uma flag -u/--user vira uma chamada idiomática .basic_auth(...) em vez de um cabeçalho manual. É útil quando você está migrando um teste rápido de API para um serviço em Rust, uma ferramenta de linha de comando ou um teste de integração sem escrever à mão o código repetitivo do reqwest. Toda a conversão roda no seu navegador, então o comando curl e qualquer token nele contido são processados localmente no seu dispositivo e nunca são enviados.
Recursos
- Gera uma async fn main() conectada com #[tokio::main] e reqwest::Client
- Mapeia o método do curl para o reqwest::Method correspondente, incluindo verbos personalizados
- Monta um HeaderMap a partir de cada flag -H/--header
- Usa .json(&serde_json::json!(...)) para corpos JSON válidos e .body(...) para cargas de formulário ou brutas
- Converte -u/--user em uma chamada idiomática .basic_auth(usuario, Some(senha))
- Formata os corpos JSON para que o literal fique fácil de ler e editar
- Avisa sobre flags sem equivalente no reqwest, como -k e as opções de saída para arquivo
- Copie o resultado ou baixe-o como request.rs com um clique
Como usar cURL para Rust
- Cole seu comando curl na caixa do comando cURL.
- Leia o programa Rust com reqwest gerado no painel de saída.
- Confira o banner de aviso caso alguma flag tenha sido ajustada ou ignorada.
- Clique em Copiar, ou baixe o código como request.rs.
Exemplo
Entrada
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"Ada"}'
Saída
use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();
let mut headers = HeaderMap::new();
headers.insert(HeaderName::from_bytes(b"Content-Type")?, HeaderValue::from_str("application/json")?);
let response = client
.request(reqwest::Method::POST, "https://api.example.com/users")
.headers(headers)
.json(&serde_json::json!({
"name": "Ada"
}))
.send()
.await?;
println!("{}", response.status());
let body = response.text().await?;
println!("{}", body);
Ok(())
}
Um corpo JSON é passado com .json(...) para que o reqwest o serialize para você.
Erros comuns e solução de problemas
- A saída usa .body(...) quando você esperava .json(...). — Envie o corpo com --json ou adicione -H "Content-Type: application/json" para que o conversor o reconheça como JSON e mude para .json(...).
- A compilação falha porque não encontra o crate serde_json ou tokio. — Adicione reqwest (com a feature json), serde_json e tokio (com a feature full) como dependências no Cargo.toml; o código gerado depende desses crates.
- Um corpo JSON aparece como uma string entre aspas em vez de um literal de objeto. — Isso acontece quando o corpo não é JSON válido. Corrija o JSON, ou mantenha-o como string e envie-o com .body(...).
- A chamada .basic_auth(...) está ausente mesmo com o comando curl usando -u. — Verifique se o valor de -u é exatamente usuario:senha. O conversor decodifica internamente o cabeçalho Basic auth que gera para recuperar o usuário e a senha.
Perguntas frequentes
- Como converto um comando curl para Rust?
- Cole o comando curl na caixa de entrada e o cURL to Rust renderiza um programa assíncrono com reqwest à direita, que você pode copiar ou baixar como request.rs.
- O cURL to Rust gera código para reqwest ou outro cliente HTTP?
- Ele usa o popular crate reqwest com tokio como runtime assíncrono e emite uma async fn main() com #[tokio::main]. Adicione os dois crates ao seu Cargo.toml antes de executar o código.
- Quando o conversor usa .json(...) em vez de .body(...)?
- Ele usa .json(&serde_json::json!(...)) quando o corpo é JSON válido (enviado com --json ou um Content-Type JSON), e .body(...) para corpos codificados como formulário ou string bruta.
- Como um valor de autenticação básica do curl -u é tratado na saída em Rust?
- Um valor de -u ou --user é representado como .basic_auth(usuario, Some(senha)) no construtor da requisição, em vez de um cabeçalho Authorization montado manualmente.
- Meu comando curl é enviado a algum servidor quando o converto para Rust?
- Não. A conversão de curl para Rust roda inteiramente no seu navegador, então o comando e qualquer credencial nele contida permanecem no seu dispositivo.
- De quais crates o código reqwest gerado depende?
- A saída espera reqwest (com a feature json), serde_json e tokio (com a feature full) como dependências; adicione-as com cargo add antes de compilar.
Ferramentas relacionadas
- cURL para Fetch — Converta um comando curl em uma chamada fetch() de JavaScript.
- curl para Python — Converta um comando curl em um script Python com a biblioteca requests.
- curl para Go — Converta um comando curl em código Go usando o pacote net/http.
- curl para Node.js — Converta um comando curl em uma requisição Node.js com axios.
- curl para PHP — Converta um comando curl em um script PHP com a extensão cURL.
- Cliente de API — Envie requisições HTTP, monte cabeçalhos e parâmetros e inspecione respostas; salva as últimas 25.
Todas as ferramentas de ArrayKit