Para desarrolladores que viven en la terminal, las herramientas de testing de API en línea de comandos son indispensables. curl ha estado preinstalado en virtualmente cada sistema Unix-like desde 1997 y desde 2023 viene incluido con Windows 10+ por defecto — disponible en un estimado de 10 mil millones de dispositivos según las estadísticas del propio proyecto curl. HTTPie, por su parte, ha superado las 30,000 estrellas en GitHub y es elogiado por su sintaxis amigable para el desarrollador. Las dos herramientas sirven el mismo propósito fundamental — hacer requests HTTP desde la terminal — pero con filosofías diferentes: curl prioriza compatibilidad universal y potencia bruta, HTTPie prioriza legibilidad y facilidad de uso.
“Mantengo tanto curl como HTTPie en mi workflow diario. HTTPie para testing exploratorio de APIs donde quiero output limpio y sintaxis JSON fácil — curl para cada script de automatización y pipeline de CI donde necesito disponibilidad garantizada sin dependencias. No son herramientas que compiten; son complementos.” — Yuri Kan, Senior QA Lead
Mientras que herramientas gráficas como Insomnia proporcionan interfaces intuitivas para explorar APIs, las herramientas de línea de comandos sobresalen en automatización y flujos de scripting.
TL;DR — curl (preinstalado en 10B+ dispositivos, C, más rápido) vs HTTPie (30K+ estrellas GitHub, Python, amigable). HTTPie para exploración interactiva; curl para scripts y CI/CD. Instala ambos.
Introducción
Las herramientas CLI son componentes esenciales de cualquier estrategia de automatización de pruebas, especialmente cuando se integran en pipelines de testing continuo en DevOps. Para dominar el testing de API, combinar herramientas CLI con soluciones como Postman ofrece la máxima flexibilidad.
cURL: El Estándar Universal
Sintaxis Básica
GET Request
curl https://api.example.com/users
POST Request
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"John","email":"john@example.com"}'
Con Headers
curl -H "Authorization: Bearer token123" \
-H "Accept: application/json" \
https://api.example.com/profile
Características Avanzadas de cURL
Seguir Redirects
curl -L https://api.example.com/redirect
Modo Verbose (Debugging)
curl -v https://api.example.com/users
Subir Archivo
curl -F "file=@document.pdf" https://api.example.com/upload
Autenticación
# Basic Auth
curl -u username:password https://api.example.com/secure
# Bearer Token
curl -H "Authorization: Bearer $TOKEN" https://api.example.com/api
HTTPie: La Alternativa Amigable
Sintaxis Básica
GET Request
http GET https://api.example.com/users
# o simplemente:
http https://api.example.com/users
POST Request
http POST https://api.example.com/users name=John email=john@example.com
Con Headers
http https://api.example.com/profile \
Authorization:"Bearer token123" \
Accept:application/json
Características Avanzadas de HTTPie
Sintaxis JSON Sugar
# Pares clave-valor simples se convierten en JSON
http POST https://api.example.com/users \
name=John \
age:=30 \
active:=true \
tags:='["developer","qa"]'
Sesiones
# Crear sesión
http --session=user1 POST https://api.example.com/login \
username=john password=secret
# Reusar sesión (cookies, headers preservados)
http --session=user1 GET https://api.example.com/profile
Comparación Lado a Lado
Comparación de Sintaxis
| Tarea | cURL | HTTPie |
|---|---|---|
| GET | curl https://api.com/users | http GET https://api.com/users |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' https://api.com/users | http POST https://api.com/users name=John |
| Headers | curl -H "Auth: token" https://api.com | http https://api.com Auth:token |
| Query Params | curl "https://api.com/search?q=test&page=1" | http GET https://api.com/search q==test page==1 |
Ejemplo Real: Crear Usuario
cURL
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer abc123" \
-d '{
"name": "Jane Doe",
"email": "jane@example.com",
"age": 28,
"active": true
}'
HTTPie
http POST https://api.example.com/users \
Authorization:"Bearer abc123" \
name="Jane Doe" \
email=jane@example.com \
age:=28 \
active:=true
Scripting y Automatización
Las herramientas de línea de comandos son componentes esenciales de una estrategia completa de testing de API, particularmente para flujos de automatización e integración continua.
Scripts Bash con cURL
#!/bin/bash
API_BASE="https://api.example.com"
TOKEN="your-api-token"
# Hacer request autenticado
curl -X GET "$API_BASE/users" \
-H "Authorization: Bearer $TOKEN"
Scripts Bash con HTTPie
#!/bin/bash
API_BASE="https://api.example.com"
TOKEN=$(http POST "$API_BASE/auth/login" \
username=admin password=secret | \
jq -r '.access_token')
http GET "$API_BASE/users" "Authorization:Bearer $TOKEN"
Integración CI/CD
GitHub Actions con cURL
name: API Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Test API Health
run: |
curl -X GET https://api.example.com/health --fail-with-body
Mejores Prácticas
Manejo de Errores
cURL
# Verificar código de estado HTTP
http_code=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
if [ "$http_code" -ne 200 ]; then
echo "Request falló con status $http_code"
exit 1
fi
# Fallar en errores HTTP
curl --fail-with-body "$URL"
HTTPie
# Salir con error en estados HTTP de error
http --check-status GET https://api.example.com/users
Cuándo Usar Cada Una
Usar cURL Cuando:
- ✓ Máxima compatibilidad requerida
- ✓ Scripting para sistemas de producción
- ✓ Dependencias mínimas necesarias
- ✓ Rendimiento es crítico
Usar HTTPie Cuando:
- ✓ Exploración interactiva de API
- ✓ Experiencia de desarrollador importa
- ✓ Trabajando principalmente con APIs JSON
- ✓ Legibilidad de scripts importante
Conclusión
Tanto cURL como HTTPie son herramientas excelentes con fortalezas diferentes:
cURL: Universal, rápido, ubicuo, potente HTTPie: Moderno, legible, amigable, enfocado en JSON
Para la mayoría de desarrolladores, la configuración ideal es:
- HTTPie para testing interactivo diario de API
- cURL para scripts y automatización donde la portabilidad importa
Al comparar diferentes herramientas de testing de API en 2025, las opciones de línea de comandos como cURL y HTTPie siguen siendo esenciales junto con alternativas modernas como REST Assured para automatización basada en Java.
Preguntas Frecuentes
¿Cuál es la diferencia entre curl y HTTPie? curl es universal, preinstalado en la mayoría de sistemas, escrito en C. HTTPie es una alternativa Python con sintaxis amigable. curl es mejor para scripts y CI/CD; HTTPie para uso interactivo.
¿Es HTTPie más rápido que curl? No, curl generalmente es más rápido. curl está escrito en C con inicio casi instantáneo, HTTPie tiene sobrecarga Python.
¿Cómo instalo HTTPie?
pip install httpie, brew install httpie (macOS), apt install httpie (Ubuntu), snap install httpie (Linux).
¿Puede curl usarse en pipelines de CI/CD?
Sí, curl está preinstalado en virtualmente cada runner de CI sin configuración adicional. Usa --fail-with-body para salir con error en fallos HTTP.
Fuentes: Documentación HTTPie · Documentación curl
Ver También
- Dominio del Testing de API - Guía completa para testing de APIs
- Estrategia de Automatización de Pruebas - Integración de herramientas CLI en tu estrategia
- Postman: De Manual a Automatización - Alternativa gráfica para testing de API
- Testing Continuo en DevOps - Uso de cURL y HTTPie en pipelines CI/CD
- Containerización para Testing - Testing de APIs en entornos containerizados
