¿Qué es el comando curl? Ejemplos, Flags, Requests HTTP

curl es una herramienta línea comandos para enviar requests HTTP/HTTPS/FTP desde terminal. Usado para testing API, debugging, scripting y checks CI.

¿Qué es el comando curl?

curl (Client URL) es una herramienta línea de comandos y library para transferir datos con URLs. Soporta docenas de protocolos (HTTP, HTTPS, FTP, SFTP, SMTP, IMAP, LDAP, SCP) y es el estándar de facto para hacer requests HTTP desde el terminal. Originalmente escrito en 1996 por Daniel Stenberg, curl viene bundled con la mayoría de distribuciones Linux, macOS y Windows 10+.

Los desarrolladores usan curl para testear endpoints API, debugear issues HTTP, scripting de automatización, descargar archivos y checks CI/CD.

Sintaxis básica curl

curl https://api.example.com/users/42

Con headers + body:

curl -i https://api.example.com/users/42

POST con body JSON:

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

Flags curl más usados

FlagQué hace
-X METHODSetear método HTTP
-H "Header: value"Agregar header request
-d 'data'Enviar body request
-d @file.jsonLeer body desde archivo
-F "field=value"Enviar campo multipart/form-data
-F "file=@photo.jpg"Subir archivo (multipart)
-iIncluir headers response
-IEnviar request HEAD
-LSeguir redirects
-o fileGuardar body response a archivo
-sModo silent
-vOutput verbose (debug)
-kSaltar verificación cert TLS
-u user:passHTTP Basic Auth
--max-time NTimeout total en segundos

Recetas comunes curl

Testear un endpoint API

curl -i https://api.example.com/health

POST JSON

curl -X POST https://api.example.com/orders \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product_id": 42, "quantity": 1}'

Descargar un archivo

curl -O https://example.com/large-file.zip

Subir archivo (multipart)

curl -F "avatar=@photo.jpg" -F "username=alice" https://api.example.com/upload

Obtener solo código status HTTP

curl -s -o /dev/null -w "%{http_code}" https://example.com

curl vs wget vs httpie

AspectocurlwgetHTTPie
Mejor paraScripting, testing APIDescargas archivo, mirroringTesting API human-friendly
OutputStdoutArchivoStdout, color-coded
Descarga recursivaNoSí (especialidad)No
Protocolos30+HTTP, HTTPS, FTPSolo HTTP/HTTPS
Pre-instaladoCasi en todos ladosSolo Linux típicamenteRequiere install

Pitfalls comunes curl

  • Olvidar Content-Type para JSON.
  • Escape de quotes en shell.
  • Logueando secrets.
  • Issues HTTP/2.
  • Status code incorrecto en scripts. --fail para exit non-zero en 4xx/5xx.

curl en CI/CD

  • Smoke tests después de deploy.
  • Endpoints health check.
  • Tests integración API.
  • Tests presupuesto performance.

FAQ: comando curl

¿Cuál es la diferencia entre -d y --data-raw?

-d procesa @ como "leer desde archivo". --data-raw envía characters @ literales.

¿Cómo envío un método HTTP custom?

-X CUSTOM funciona.

¿Cómo veo el request que curl envía?

-v para modo verbose.

¿Puede curl hacer requests paralelos?

curl 7.66+ soporta --parallel. Para load testing at scale herramientas dedicadas.

¿Cómo manejo cookies entre múltiples calls curl?

Guardar con --cookie-jar, enviar con --cookie.

¿Puedo usar curl como herramienta load testing?

Para 1-10 requests concurrentes sí. Para load testing real herramientas dedicadas.

Más allá de curl: load testing at scale con LoadFocus

Si has alcanzado los límites de curl-en-loop para load testing, LoadFocus corre scripts JMeter y k6 que llevan requests HTTP hasta 12.500 VUs desde 25+ regiones. Regístrate en loadfocus.com/signup.

¿Qué tan rápido es tu sitio web?

Mejora su velocidad y SEO sin problemas con nuestra Prueba de Velocidad gratuita.

Prueba de velocidad de sitio web gratis

Analice la velocidad de carga de su sitio web y mejore su rendimiento con nuestro comprobador de velocidad de página gratuito.

×