Introducción
Para desarrolladores que viven en la terminal, las herramientas de testing de API en línea de comandos son indispensables. Las dos herramientas dominantes en este espacio—cURL y HTTPie—sirven propósitos similares pero con filosofías vastamente diferentes. cURL es el veterano navaja suiza disponible en virtualmente cada sistema, mientras que HTTPie es la alternativa moderna y amigable diseñada para la felicidad del desarrollador.
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.
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.
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
