Httpie: qué es, un cliente HTTP para la línea de comandos

Autor: IT Sectr Publicado: 2026-05-08 Tiempo de lectura: 8 min

Httpie es un cliente HTTP de consola con sintaxis legible por humanos y salida de colores, diseñado para probar APIs desde la línea de comandos. La herramienta usa una sintaxis intuitiva: http GET https://api.example.com/users sin necesidad de especificar banderas para los encabezados y el cuerpo de la solicitud. Según la Httpie CLI Documentation (2026), la utilidad admite JSON de forma predeterminada, sesiones, autenticación y complementos.

Puntos clave

  • Httpie es un reemplazo moderno de cURL con sintaxis legible, resaltado de colores y serialización JSON integrada.
  • Sintaxis de la solicitud según el esquema: http [method] URL [header:value] [key=value] sin banderas adicionales.
  • JSON por defecto — el cuerpo de la solicitud se trata como un objeto JSON y el encabezado Content-Type se establece automáticamente.
  • Las sesiones conservan cookies y encabezados entre solicitudes, lo que resulta cómodo para probar endpoints autenticados.
  • Los complementos amplían Httpie con soporte de formatos adicionales, tipos de autenticación y transportes personalizados.

Qué es Httpie y en qué se diferencia de cURL

Httpie (o HTTPie) es una utilidad de línea de comandos escrita en Python que simplifica el envío de solicitudes HTTP en comparación con cURL. La principal diferencia es una sintaxis cercana al lenguaje natural: los argumentos se separan con espacios, los encabezados se indican con dos puntos y los datos JSON con un signo igual sin escapar comillas.

Comparación entre cURL y Httpie

La misma solicitud POST en cURL requiere al menos tres banderas (-X, -H, -d) y escape manual del JSON. Httpie hace lo mismo con tres palabras y sin banderas, estableciendo automáticamente Content-Type: application/json y resaltando la salida. La respuesta se formatea con sangrías y resaltado de sintaxis de forma predeterminada.

OperacióncURLHttpie
Solicitud GETcurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
Encabezadocurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Sintaxis de las solicitudes en Httpie

Httpie usa un único formato de línea de comandos sin banderas para los parámetros principales. El método HTTP se indica como primer argumento (GET, POST, PUT, DELETE, PATCH) y la URL como segundo. Si se omite el método, Httpie elige automáticamente GET (para solicitudes sin cuerpo) o POST (con cuerpo).

Tipos de argumentos

  • Header:Value — encabezados de la solicitud con dos puntos, sin espacio después de los dos puntos: Authorization:"Bearer token".
  • key=value — campos del objeto JSON en el cuerpo de la solicitud: name=John age=30.
  • key:=value — valores JSON que no son cadenas (números, booleanos, matrices): active:=true tags:=["dev","test"].
  • key@file — carga de un valor desde un archivo: avatar@~/photo.jpg.

Httpie determina automáticamente el tipo de dato: si se pasa key=value, el cuerpo se envía como JSON. Si se pasa texto sin procesar mediante --raw, se envía como texto plano. El formato form-data se activa con la bandera -f.

bash
# Solicitud POST con datos JSON y un encabezado
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Respuesta con resaltado y Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

Trabajar con JSON y archivos

La serialización JSON en Httpie funciona automáticamente: un valor pasado como key=value se convierte en un campo de cadena del JSON. Para números y valores booleanos se usa key:=value. Los objetos anidados se crean mediante notación de puntos: address.city=Moscow.

Carga de archivos y datos binarios

Httpie admite el formato multipart/form-data para cargar archivos y datos mediante la sintaxis key@path. Si necesita enviar el contenido de un archivo como cuerpo sin procesar de la solicitud, se usa la redirección de entrada: http POST example.com < file.json. Para descargar la respuesta a un archivo, se usa la bandera -d (download).

bash
# Envío de JSON desde un archivo
http POST https://api.example.com/users < user.json

# Carga de un archivo mediante multipart
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Gestión de sesiones y cookies

Las sesiones en Httpie conservan el estado entre solicitudes: cookies, encabezados y parámetros de autenticación. Una sesión se crea con la bandera --session=name. Los datos de la sesión se almacenan en un archivo JSON en la carpeta ~/.httpie/sessions/. Una sesión con el sufijo :readonly no se actualiza después de una solicitud.

Ejemplo de pruebas con sesión

Primero se realiza una solicitud POST a /auth/login con las credenciales; el servidor devuelve una cookie de sesión. Todas las solicitudes posteriores a endpoints protegidos dentro de la misma sesión envían automáticamente la cookie guardada, lo que simula el comportamiento del navegador al probar la API de una aplicación móvil.

bash
# Paso 1: autenticación
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# Paso 2: solicitud con la cookie de sesión guardada
http --session=app-test GET https://api.example.com/users/me

Autenticación y encabezados

Httpie admite todos los tipos principales de autenticación mediante banderas: -a user:pass para Basic Auth, --auth-type=digest para Digest, --auth-type=bearer TOKEN para Bearer Token. Los encabezados personalizados se agregan como HeaderName:value en cualquier lugar del comando.

OAuth 2.0 y Bearer Token

Para probar una API con OAuth 2.0, el token se transmite mediante el encabezado Authorization. Httpie no gestiona el ciclo de vida del token a nivel de núcleo: lo hace un script externo. El comando http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource equivale a especificar explícitamente el encabezado con el token.

Uso de Httpie en scripts de CI/CD

Httpie es ideal para pipelines de CI/CD gracias a sus cero dependencias (excepto Python) y su salida legible. Los comandos se leen fácilmente en los registros sin análisis adicional. La herramienta se instala mediante pip y está disponible en todas las imágenes de Docker populares, incluidas Alpine, Ubuntu y las imágenes oficiales de CI de Jenkins y GitLab. Esto convierte a Httpie en una opción cómoda para pruebas automatizadas de APIs REST y microservicios.

Comprobación del endpoint de salud durante el despliegue

Un escenario típico es comprobar el estado de la API después de desplegar una aplicación. Httpie envía una solicitud al endpoint de salud y finaliza con un código distinto de cero si la respuesta no coincide con la esperada. La bandera --check-status devuelve automáticamente un error para códigos de estado >= 300.

bash
# Comprobación de salud en el script de despliegue
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "La API está sana" || \
    echo "Falló la comprobación de la API"

Funciones avanzadas y complementos de Httpie

Httpie admite complementos mediante el sistema Package Index. Los complementos añaden nuevos tipos de autenticación, formatos de serialización y transportes. La instalación se realiza mediante pip: pip install httpie-plugin-name. Después de la instalación, el complemento se activa automáticamente en el siguiente inicio de Httpie.

Complementos populares de Httpie

  • httpie-jwt-auth — obtención y renovación automáticas de tokens JWT mediante el mecanismo de refresh token.
  • httpie-oauth — soporte de OAuth 2.0 Client Credentials y flujo Authorization Code con intercambio automático de código por token.
  • httpie-editor — abre el cuerpo de la solicitud en un editor de texto (vim, nano, VS Code) antes de enviarla.
  • httpie-image — muestra las imágenes de la respuesta directamente en la terminal (requiere kitty o iTerm2).

Scripts y análisis de la salida

Httpie admite filtrado similar a jq mediante la opción --pretty=format y salida compatible con cURL mediante --print. La bandera --quiet desactiva la salida de colores para mejorar la legibilidad en los registros de CI. Para el procesamiento programático de la respuesta, use la bandera --body, que muestra solo el cuerpo de la respuesta sin encabezados.

bash
# Extracción de un campo de una respuesta JSON con jq
http GET https://api.example.com/users/1 | jq '.name'

# Salida solo del cuerpo de la respuesta (sin encabezados)
http --body GET https://api.example.com/health

# Envío por lotes con diferentes datos desde un archivo
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Formatos de salida y personalización

Httpie admite formatos de salida mediante la bandera --print: H (encabezados de solicitud), B (cuerpo de solicitud), h (encabezados de respuesta), b (cuerpo de respuesta). La combinación --print=hb muestra solo los encabezados y el cuerpo de la respuesta. La bandera --pretty=all activa el formato de colores con sangrías.

Esquemas de colores personalizados

Httpie admite personalización mediante la variable HTTPIE_COLORS. Configure colores para URL, encabezados, JSON y códigos de estado. Hay temas integrados disponibles: autumn, borland, fruity, monokai, native, tango para diferentes terminales.

Salida en formato JSON

Para el procesamiento programático, use --body --pretty=none, que devuelve JSON sin procesar. La salida compacta es útil para pasar a jq, sed y otros analizadores al automatizar pruebas de API en scripts.

Formatos de salida y personalización del aspecto

Httpie admite varios formatos de salida mediante la bandera --print: H (encabezados de solicitud), B (cuerpo de solicitud), h (encabezados de respuesta), b (cuerpo de respuesta). La combinación --print=hb muestra solo los encabezados y el cuerpo de la respuesta, excluyendo la meta-información de la conexión. La bandera --pretty=all activa el formato de colores con sangrías para mejorar la legibilidad.

Esquemas de colores personalizados

Httpie admite la personalización de colores mediante la variable de entorno HTTPIE_COLORS. Puede configurar colores para URL, encabezados, claves JSON y códigos de estado de respuesta. Hay temas integrados disponibles: autumn, borland, fruity, monokai, native y tango para diferentes tipos de terminales y preferencias personales.

Salida en formato JSON sin formato

Para el procesamiento programático de la salida, use la combinación de banderas --body --pretty=none, que devuelve JSON sin procesar sin colores ni sangrías. La salida compacta es útil para pasar a jq, sed y otros analizadores de consola al automatizar pruebas de API REST en scripts de shell.

Preguntas frecuentes

¿En qué es mejor Httpie que el cURL estándar?

Httpie ofrece una sintaxis más legible sin banderas para operaciones básicas, serialización JSON automática, resaltado de colores de la respuesta y soporte integrado de sesiones. cURL sigue siendo imprescindible para operaciones de bajo nivel: trabajo con FTP, SMTP y protocolos no estándar.

¿Cómo enviar form-data mediante Httpie?

Use la bandera -f (o --form): http -f POST example.com name=John file@~/photo.jpg. Httpie establecerá automáticamente Content-Type: multipart/form-data. Sin la bandera -f, los datos se envían como application/json.

¿Httpie admite HTTPS y certificados?

Sí, Httpie admite HTTPS. Para certificados autofirmados, use la bandera --verify=no. Para especificar un archivo CA personalizado: --verify=/path/to/cert.pem. La verificación de certificados está activada de forma predeterminada.

¿Se puede usar Httpie para WebSocket?

No, Httpie no admite WebSocket y está pensado exclusivamente para el protocolo HTTP/HTTPS. Para WebSocket, use websocat o wscat. Httpie se centra en REST, GraphQL y operaciones con archivos.

¿Cómo guardar una respuesta en un archivo con Httpie?

Use la bandera -d (download): http -d GET https://example.com/file.zip. Httpie guardará el archivo con el nombre original del encabezado Content-Disposition o de la URL. Para un nombre personalizado, especifique -o output.zip.

Resumen

  • Httpie — un cliente HTTP de consola con sintaxis intuitiva, JSON por defecto y salida de colores.
  • Sintaxis básica http [method] URL [key=value] [Header:value] no requiere banderas para la mayoría de las solicitudes.
  • La serialización JSON es automática: key=value se convierte en un campo JSON, key:=value para números y valores booleanos.
  • Las sesiones conservan cookies y encabezados entre solicitudes para probar endpoints autenticados.
  • La autenticación admite esquemas Basic, Digest, Bearer y personalizados mediante la bandera --auth-type.
  • La integración con CI/CD con --check-status y cero dependencias hace que Httpie sea cómodo para scripts de despliegue.
  • Carga de archivos mediante multipart form-data con la bandera -f y la sintaxis key@file.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también