Peticiones listas para revisar

De curl a Python, JavaScript o PHP

Reutiliza una petición que ya has probado. Pega el comando curl, elige el lenguaje y revisa el código antes de incorporarlo a tu script o aplicación.

curlcódigo de petición
Conversión en el navegador
01

Pega una petición HTTP con sus cabeceras y datos. Se admiten comillas POSIX y líneas continuadas con barra invertida.

POSTexample.com3 cabeceras
02
async function main() {
  const response = await fetch("https://example.com/api/messages", {
    method: "POST",
    headers: [
      ["Authorization", "Bearer YOUR_TOKEN"],
      ["Content-Type", "application/json"],
      ["Accept", "application/json"]
    ],
    body: "{\"message\":\"Hello from curl\",\"enabled\":true}",
    redirect: "manual",
    credentials: "omit"
  });
  console.log(response.status);
  console.log(await response.text());
}

main().catch(console.error);

Fetch en navegador o Node.js 18+

Antes de ejecutar el código

  • No se envía ninguna petición. El código contiene la URL, las cabeceras y las credenciales de entrada; revísalo antes de compartirlo.
  • Fetch en el navegador está sujeto a CORS. credentials: omit impide enviar cookies automáticamente; configura las credenciales cuando corresponda. Las redirecciones manuales pueden producir respuestas opacas.

Sin registro ni ejecución de comandos. La entrada se procesa en tu navegador.

Del comando de prueba a una integración

Al depurar una API, curl permite guardar una petición reproducible. Para llevarla a un proceso de Python, una página con Fetch o un servicio PHP, hay que expresar esos mismos datos con otra biblioteca. Este convertidor genera ese punto de partida y señala las diferencias que conviene revisar.

Cómo convertir curl a código

Introduce un solo comando con una URL HTTP o HTTPS completa. Selecciona Python, JavaScript o PHP, comprueba método, cabeceras y cuerpo, y copia o descarga el resultado. La conversión se hace en el navegador y no envía peticiones.

Conserva las comillas del comando y usa sintaxis POSIX. Si lo copias de las herramientas de desarrollo, elige la variante bash. Sustituye antes las variables y las sustituciones del shell; la herramienta no las evalúa ni lee archivos locales.

Elegir Python Requests, Fetch o PHP cURL

Python usa Requests y necesita pip install requests. El cuerpo se envía como bytes UTF-8, conservando el texto original. PHP requiere la extensión cURL. Fetch sirve para JavaScript en el navegador o en una versión compatible de Node.js, con restricciones distintas según el entorno.

No se admiten automáticamente subidas de archivos, formularios multipart, proxys ni opciones avanzadas sin correspondencia. Una opción no compatible detiene la salida. Añade a tu aplicación los tiempos de espera y el tratamiento de errores que necesite.

Por qué una petición puede fallar al pasarla a Fetch

El navegador aplica CORS y controla determinadas cabeceras. La herramienta omite esas cabeceras en Fetch y muestra cuáles son. También usa credentials: omit, por lo que no incorpora automáticamente las cookies de una sesión abierta.

Sin -L, Fetch trata las redirecciones de forma manual; en el navegador esto puede dar una respuesta opaca. Si activas las redirecciones, comprueba los cambios de método y el envío de credenciales en cada salto. La conversión no verifica la autenticación ni la configuración del servidor.

Conservar dos valores con el mismo nombre

En este formulario aparecen dos campos tag. --data-urlencode codifica el espacio y conserva ambos valores en el cuerpo. El código Python no los convierte en un diccionario que sobrescriba una de las entradas.

curl 'https://example.com/api/tags' --data-urlencode 'tag=cloud hosting' --data-urlencode 'tag=linux'
import requests

url = "https://example.com/api/tags"
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
body = "tag=cloud%20hosting&tag=linux".encode("utf-8")

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    data=body,
    allow_redirects=False,
    verify=True,
)
print(response.status_code)
print(response.text)

Opciones de curl y su resultado

Entrada curlTratamiento
URL / --urlUna URL HTTP o HTTPS completa
-X / --requestMétodo HTTP explícito
-H / --headerNombre y valor; revisar duplicados y directivas vacías
-d / --data / --data-raw / --data-binaryCuerpo en línea; conserva el orden de los argumentos
--data-urlencode / -GCodifica valores; -G los lleva a la consulta de la URL
--jsonConserva texto JSON y añade cabeceras JSON predeterminadas
-u / --userBasic Auth con username:password
-L / -I / -kRedirecciones, HEAD y validación TLS; Fetch no admite -k
-b / -A / -eCookie, User-Agent y Referer sujetos a reglas del navegador
--compressed / -s / -S / -v / -iDescompresión de la biblioteca; sin reproducir la presentación del terminal

Dudas al convertir curl

¿Pegar un comando envía la petición?

No. Solo se analiza el texto y se genera código en el navegador. La petición se envía cuando ejecutas el resultado por tu cuenta.

¿Se puede pegar «Copy as cURL» del navegador?

Sí, si es una petición única en formato POSIX con opciones admitidas. Usa la exportación bash. Si se señala una opción incompatible, revisa su función antes de retirarla.

¿Cambian los números grandes de un JSON?

El cuerpo se conserva como texto, sin volver a serializarlo. Esta conversión no modifica números, espacios ni claves repetidas. --json tampoco valida la sintaxis JSON.

¿Por qué hay menos cabeceras en JavaScript?

Fetch no permite controlar libremente las cabeceras reservadas al navegador. Las omitidas se enumeran en las notas. Content-Length lo recalcula la biblioteca HTTP.

¿Qué debo revisar antes de guardar el archivo?

Las credenciales y los tokens introducidos permanecen en el código. Revísalos antes de compartirlo. Configura también los tiempos de espera y considera que Requests puede usar proxys y .netrc del entorno.

Documentación: curl · Requests · Fetch