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

TareacURLHTTPie
GETcurl https://api.com/usershttp GET https://api.com/users
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' https://api.com/usershttp POST https://api.com/users name=John
Headerscurl -H "Auth: token" https://api.comhttp https://api.com Auth:token
Query Paramscurl "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

Recursos Oficiales