Conversor de curl a Rust

Convierte un comando curl a código de Rust con reqwest al instante en tu navegador. El comando permanece en tu dispositivo.

Tu comando curl se convierte a Rust localmente en tu navegador y nunca se sube, pero evita pegar tokens o credenciales de producción reales en cualquier herramienta.

Convierte también curl a JavaScript fetch

Acerca de cURL a Rust

cURL to Rust toma un comando curl que copiaste de una terminal, las DevTools del navegador o la documentación de una API y lo reescribe como un programa async de Rust basado en el crate reqwest. Lee banderas como -X, -H, -d, --data-raw, --json, -u y -G, elige el reqwest::Method correcto y opta por .json(...) para los cuerpos JSON válidos o .body(...) para las cargas de formulario o en bruto, así la petición coincide con lo que curl enviaría realmente. Una bandera -u/--user se convierte en una llamada idiomática .basic_auth(...) en lugar de una cabecera manual. Es útil cuando llevas una prueba rápida de API a un servicio en Rust, una herramienta de línea de comandos o una prueba de integración sin escribir a mano el código repetitivo de reqwest. Toda la conversión se ejecuta en tu navegador, así que el comando curl y cualquier token que contenga se procesan localmente en tu dispositivo y nunca se suben.

Características

Cómo usar cURL a Rust

  1. Pega tu comando curl en el cuadro del comando cURL.
  2. Lee el programa de Rust con reqwest generado en el panel de salida.
  3. Revisa el banner de advertencia por si hay banderas que se ajustaron u omitieron.
  4. Haz clic en Copiar, o descarga el código como request.rs.

Ejemplo

Entrada

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name":"Ada"}'

Salida

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(())
}

Un cuerpo JSON se pasa con .json(...) para que reqwest lo serialice por ti.

Errores comunes y solución de problemas

Preguntas frecuentes

¿Cómo convierto un comando curl a Rust?
Pega el comando curl en el cuadro de entrada y cURL to Rust renderiza un programa async con reqwest a la derecha que puedes copiar o descargar como request.rs.
¿cURL to Rust genera código para reqwest u otro cliente HTTP?
Apunta al popular crate reqwest con tokio como runtime asíncrono y emite una async fn main() usando #[tokio::main]. Añade ambos crates a tu Cargo.toml antes de ejecutar el código.
¿Cuándo usa el conversor .json(...) en vez de .body(...)?
Usa .json(&serde_json::json!(...)) cuando el cuerpo es JSON válido (enviado con --json o un Content-Type JSON), y .body(...) para los cuerpos codificados como formulario o de cadena en bruto.
¿Cómo se maneja en la salida de Rust un valor de autenticación básica de curl -u?
Un valor de -u o --user se representa como .basic_auth(usuario, Some(contraseña)) en el constructor de la petición, en lugar de una cabecera Authorization construida a mano.
¿Se sube mi comando curl cuando lo convierto a Rust?
No. La conversión de curl a Rust se ejecuta por completo en tu navegador, así que el comando y cualquier credencial que contenga permanecen en tu dispositivo.
¿De qué crates depende el código de reqwest generado?
La salida espera reqwest (con la feature json), serde_json y tokio (con la feature full) como dependencias; añádelas con cargo add antes de compilar.

Herramientas relacionadas

Todas las herramientas de ArrayKit