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

Como usar cURL para Rust

  1. Cole seu comando curl na caixa do comando cURL.
  2. Leia o programa Rust com reqwest gerado no painel de saída.
  3. Confira o banner de aviso caso alguma flag tenha sido ajustada ou ignorada.
  4. 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

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

Todas as ferramentas de ArrayKit