Convertir cURL a Fetch y Axios

Pega un comando cURL, revisa la petición normalizada (método, URL, cabeceras y cuerpo) y copia el código cURL, fetch o axios. Lo que la página no puede reproducir se avisa antes de copiar.

Se ejecuta localmente en tu navegador
Import cURL

Supports common -X, -H, -d, --url, -u, e -b opciones. Solo lee el comando que pegas.

Solicitud normalizada
cURL
Import a cURL command or complete the request fields.
Fetch
Import a cURL command or complete the request fields.
Axios
Import a cURL command or complete the request fields.

Revisa las solicitudes generadas antes de ejecutarlas

La conversión conserva el método, la URL, las cabeceras y el body introducidos. Revisa credenciales, cookies, redirecciones, tratamiento de respuestas y URL específicas del entorno antes de añadir el código a tu aplicación.

Cómo convertir un comando cURL en código de petición

Pega un comando cURL y la página rellena los campos de la petición que están sobre los paneles de código: método, URL, una cabecera por línea y el cuerpo. Los tres paneles muestran después la misma petición como comando cURL, como código fetch del navegador y como llamada a axios, de modo que puedes pasar a JavaScript un comando que ya probaste en la terminal.

El análisis, la codificación y la generación del código se ejecutan en esta pestaña. La página no envía la petición ni llama a la URL: mientras la herramienta trabaja no sale ninguna petición del navegador. Un comando pegado suele llevar una cabecera Authorization, una cookie de sesión o una clave de API, así que trátalo como un secreto: se queda en la página, pero también queda visible en los campos y en el código generado.

  1. Pega el comando en el cuadro de cURL, o sáltate la importación y escribe tú el método, la URL, las cabeceras y el cuerpo. Los comandos largos copiados de una terminal siguen funcionando: una barra invertida seguida de un salto de línea se une.
  2. Pulsa Importar cURL. La petición normalizada aparece sobre los paneles y la lista de métodos cambia al verbo del comando, añadiendo una entrada nueva cuando el comando usa uno propio como -X PURGE.
  3. Lee la línea de estado. Las opciones que el fragmento no puede reproducir —formularios multipart, subidas, proxies, certificados de cliente, valores leídos de archivos, cabeceras sin dos puntos— se enumeran tras «Se omitió:» para que sepas qué añadir a mano.
  4. Revisa la URL, las cabeceras y el cuerpo y pulsa Generar código tras cualquier edición manual. El panel de cURL se reconstruye desde los campos, así que una edición nunca deja código anterior en pantalla.
  5. Copia el fragmento que necesites: Copiar cURL para el comando de shell, o los paneles de fetch y axios para JavaScript, y ejecútalo en tu proyecto.

Qué lee, conserva y omite el importador

Opciones que entiende el importador

El importador lee las opciones que definen la petición: -X/--request para el método, -H/--header, -d/--data con sus variantes -raw, -binary y -ascii, --data-urlencode, --json, --url, -u/--user para HTTP Basic, -b/--cookie, -A/--user-agent, -e/--referer e -I/--head. Las opciones cortas admiten el valor pegado, así que -XPOST y -H'Accept: text/html' funcionan, y las banderas se pueden agrupar, como en -sS o -kL. Varios valores -d se unen con & igual que en curl, y --data-urlencode codifica en porcentaje todo lo que queda fuera del conjunto no reservado, de modo que --data-urlencode 'q=a b&c' produce el cuerpo q=a%20b%26c.

Las banderas que solo afectan a cómo se ejecuta curl —-o/--output, -m/--max-time, --retry, -L, -k, -s, --compressed, --http2 y similares— se aceptan y se ignoran, porque el código generado no tiene equivalente. Todo lo que cambiaría la petición de un modo que los fragmentos no pueden expresar se avisa en lugar de descartarse en silencio: -F/--form, -T/--upload-file, -G/--get, -x/--proxy, certificados de cliente, --netrc, valores con @file en -d, -H y -b, una cabecera sin dos puntos y las opciones desconocidas aparecen en la lista «Se omitió:».

Cómo se construyen los tres fragmentos

El panel de cURL se compone desde los campos, no se copia: una opción por línea con --request, --url, --header para cada cabecera y --data para el cuerpo, con comillas simples en cada valor. El panel de fetch emite fetch(url, {…}) con el método, un objeto de cabeceras y un cuerpo; cuando una cabecera Content-Type contiene «json», el cuerpo se escribe como JSON.stringify({…}) para que la petición conserve su forma y, si no, se emite como cadena JSON. El panel de axios sigue las mismas reglas con el método en minúsculas, url, headers y data, de modo que los dos fragmentos de JavaScript se pueden comparar línea a línea.

El método sale del comando: GET por defecto, POST cuando hay cuerpo, y -I pone HEAD salvo que un -X explícito lo sustituya. Los nombres de cabecera repetidos se unen en una sola clave en el objeto de los paneles de fetch y axios, mientras que el panel de cURL conserva todas las líneas. La validación de la URL acepta lo que un navegador puede llamar: una URL absoluta con esquema. Si el esquema no es http:// o https://, los fragmentos se generan igualmente pero la línea de estado avisa de que solo cURL podrá ejecutar la petición.

Lo que la herramienta no hace

La conversión va en una sola dirección. Un comando cURL (o una petición escrita a mano) se convierte en código cURL, fetch y axios; la página no puede leer código fetch o axios y devolverlo a un comando cURL. Tampoco ejecuta la petición, así que aquí no se comprueba si un endpoint responde, qué código de estado devuelve ni si un token sigue siendo válido.

Hay partes de un comando que no pueden pasar a un fragmento del navegador. curl puede leer un cuerpo, una cabecera o una cookie de un archivo, construir un formulario multipart, usar un proxy o presentar un certificado de cliente; una página no llega a tu sistema de archivos ni a tu configuración de proxy, y un cuerpo multipart escrito a mano necesitaría un boundary. Esas opciones se enumeran en lugar de adivinarse, así que el código generado conserva solo lo reproducible y el resto se queda en tu terminal. Cuando un comando use una de ellas, ejecuta curl para esa parte y usa esta página para lo que sí se puede trasladar.

Herramientas recientes: