🛠️ Herramientas

HTTPie: por qué tu terminal merece algo mejor que curl para probar APIs

Felipe 5 min de lectura
Descubre HTTPie, una herramienta de línea de comandos moderna para hacer peticiones HTTP. Aprende a usarla, compárala con curl y mejora tu flujo de trabajo al probar APIs.

Hay vida más allá de curl (y es bastante cómoda)

Si trabajas con APIs, probablemente uses curl todos los días. Y probablemente también hayas copiado y pegado comandos de StackOverflow que parecen conjuros antiguos.

Algo como esto:

curl -X POST https://api.ejemplo.com/users \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer tu-token-aqui" \
  -d '{"name": "Felipe", "email": "[email protected]"}'

Funciona, claro. Pero seamos honestos: no es cómodo, no es legible en el primer vistazo, y si te equivocas en una comilla, vas a sufrir.

Ahí es donde entra HTTPie.


Qué es HTTPie y por qué debería importarte

HTTPie es una herramienta de línea de comandos para hacer peticiones HTTP. Es como curl, pero pensada para humanos.

Sus tres superpoderes son:

  • Sintaxis intuitiva: escribes menos y se entiende más
  • Output con colores: las respuestas JSON vienen formateadas y legibles
  • Defaults inteligentes: asume JSON, parsea headers, hace lo correcto por defecto

Si curl es el veterano que todo lo puede, HTTPie es el colega moderno que te simplifica la vida.


Instalación rápida

macOS (Homebrew)

brew install httpie

Linux (Debian/Ubuntu)

sudo apt install httpie

Windows (pip)

pip install httpie

Una vez instalado, el comando principal es http (así de simple).


Tu primera petición: GET sin dolor

Hacer un GET con HTTPie:

http https://jsonplaceholder.typicode.com/posts/1

Eso es todo. Sin flags, sin -X GET.

El resultado viene coloreado:

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat...",
    "body": "quia et suscipit..."
}

Compara con curl:

curl https://jsonplaceholder.typicode.com/posts/1

La diferencia no es solo visual, es mental: HTTPie te entrega algo que puedes leer sin parsear mentalmente.


Enviando datos con POST (aquí brilla HTTPie)

Esta es la petición que te mostré arriba en curl. Ahora mira cómo se hace con HTTPie:

http POST https://api.ejemplo.com/users \
  name="Felipe" \
  email="[email protected]" \
  Authorization:"Bearer tu-token-aqui"

Tres cosas pasan aquí:

  1. No necesitas declarar Content-Type: application/json: HTTPie lo asume
  2. Los datos se escriben como key=value: sin necesidad de stringify manual
  3. Los headers se distinguen con :: limpio y claro

Menos ruido, mismo resultado.


Enviar JSON anidado o arrays

HTTPie usa una sintaxis especial para estructuras complejas:

http POST https://api.ejemplo.com/order \
  product:='{"id": 42, "name": "Laptop"}' \
  tags:='["tech", "oferta"]'

El operador := le dice a HTTPie: “esto es JSON literal, no un string”.


Agregar headers personalizados

Cualquier header que necesites, lo pasas con la sintaxis Header:valor:

http GET https://api.ejemplo.com/secure \
  Authorization:"Bearer abc123" \
  X-Custom-Header:"mi-valor"

Y si usas autenticación básica, hay shortcut:

http -a usuario:password https://api.ejemplo.com/private

Descargar archivos

HTTPie puede descargar archivos con --download:

http --download https://ejemplo.com/archivo.zip

Barra de progreso incluida, nombre de archivo detectado automáticamente.


Ver solo los headers (para debuggear)

A veces no te interesa el body, solo los headers de respuesta:

http --headers https://ejemplo.com

Ideal para revisar cachés, cookies, redirects.


HTTPie vs curl: cuándo usar cada uno

Esto es importante porque no se trata de reemplazar curl ciegamente.

Usa HTTPie cuando:

  • Estás probando APIs manualmente
  • Quieres ver respuestas JSON legibles
  • Trabajas rápido y quieres menos typing
  • Estás explorando una API nueva

Usa curl cuando:

  • Necesitas scripting automatizado
  • Quieres total control sobre la petición
  • Estás en un servidor sin HTTPie instalado
  • El tutorial que sigues usa curl (y no quieres traducir)

En resumen: HTTPie para tu día a día, curl para scripts y compatibilidad universal.


Errores comunes al empezar con HTTPie

1. Olvidar que = es string y := es JSON

Este envía "age": "30" (string):

http POST api.com/user age=30

Este envía "age": 30 (número):

http POST api.com/user age:=30

2. Confundir headers con datos

Headers van con : (sin =):

Authorization:"Bearer token"  # header
name="Felipe"                 # dato

3. Esperar que funcione igual que curl

HTTPie no es un wrapper de curl. Tiene su propia lógica. Si intentas copiar flags de curl directamente, probablemente no funcionen.


Un flujo real: probar un endpoint de login

Supongamos que tienes un endpoint /auth/login que recibe email y password, y retorna un token.

Con HTTPie:

http POST https://api.ejemplo.com/auth/login \
  email="[email protected]" \
  password="supersegura123"

La respuesta podría ser:

{
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "expiresIn": 3600
}

Ahora usas ese token en otra petición:

http GET https://api.ejemplo.com/me \
  Authorization:"Bearer eyJhbGciOiJIUzI1NiIs..."

Todo legible, todo rápido, sin abrir Postman.


Bonus: HTTPie tiene una versión web y desktop

Además del CLI, existe HTTPie App: una interfaz gráfica para los que prefieren algo visual.

Está disponible en httpie.io/app y sincroniza peticiones entre dispositivos. Es como Postman, pero más liviano y con la misma filosofía de simpleza.


Cuando curl te parece más trabajo del necesario, HTTPie está ahí

No se trata de odiar curl. Es una herramienta legendaria y siempre va a estar disponible.

Pero si pasas horas probando APIs, HTTPie te ahorra tiempo, reduce errores y hace que la experiencia sea más agradable.

Es de esas herramientas que una vez que la adoptas, te preguntas cómo vivías sin ella.

#httpie #curl alternativa #probar apis #http cliente terminal #herramientas desarrollo #api testing #cli http

Artículos relacionados