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
- Genera una async fn main() conectada con #[tokio::main] y reqwest::Client
- Traduce el método de curl al reqwest::Method correspondiente, incluidos verbos personalizados
- Construye un HeaderMap a partir de cada bandera -H/--header
- Usa .json(&serde_json::json!(...)) para los cuerpos JSON válidos y .body(...) para las cargas de formulario o en bruto
- Convierte -u/--user en una llamada idiomática .basic_auth(usuario, Some(contraseña))
- Embellece los cuerpos JSON para que el literal sea fácil de leer y editar
- Advierte sobre banderas sin equivalente en reqwest, como -k y las opciones de salida a archivo
- Copia el resultado o descárgalo como request.rs con un clic
Cómo usar cURL a Rust
- Pega tu comando curl en el cuadro del comando cURL.
- Lee el programa de Rust con reqwest generado en el panel de salida.
- Revisa el banner de advertencia por si hay banderas que se ajustaron u omitieron.
- 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
- La salida usa .body(...) cuando esperabas .json(...). — Envía el cuerpo con --json o añade -H "Content-Type: application/json" para que el conversor lo reconozca como JSON y cambie a .json(...).
- La compilación falla porque no encuentra el crate serde_json o tokio. — Añade reqwest (con la feature json), serde_json y tokio (con la feature full) como dependencias en Cargo.toml; el código generado depende de esos crates.
- Un cuerpo JSON sale como una cadena entre comillas en vez de un literal de objeto. — Eso ocurre cuando el cuerpo no es JSON válido. Corrige el JSON, o consérvalo como cadena y envíalo con .body(...).
- Falta la llamada .basic_auth(...) aunque el comando curl usaba -u. — Asegúrate de que el valor de -u sea exactamente usuario:contraseña. El conversor decodifica internamente la cabecera Basic auth que genera para recuperar el usuario y la contraseña.
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
- cURL a Fetch — Convierte un comando curl en una llamada fetch() de JavaScript.
- curl a Python — Convierte un comando curl en un script de Python con requests.
- curl a Go — Convierte un comando curl en código de Go con net/http.
- curl a Node.js — Convierte un comando curl en código de Node.js con axios.
- curl a PHP — Convierte un comando curl en un script PHP con la extensión cURL.
- Cliente de API — Envía peticiones HTTP, crea cabeceras y parámetros e inspecciona respuestas; guarda tus últimas 25.
Todas las herramientas de ArrayKit