HTTPie es una herramienta de línea de comandos que te permite interactuar con servidores HTTP de una manera amigable para el usuario. Tiene una sintaxis simple y expresiva, admite datos JSON y de formulario, gestiona la autenticación y los encabezados, y muestra una salida coloreada y formateada. También tiene algunas características avanzadas, como sesiones, plugins y proxies, que la hacen aún más potente y versátil.
En esta entrada de blog, te mostraré cómo instalar y usar HTTPie, y cómo puede ayudarte a probar y depurar tus APIs con facilidad y eficiencia. También compartiré algunos consejos y trucos que aprendí en el camino, y algunos recursos que puedes usar para aprender más sobre HTTPie.
Cómo instalar HTTPie
El primer paso para usar HTTPie es instalarlo en tu sistema. HTTPie está escrito en Python, y puedes instalarlo usando pip, el gestor de paquetes de Python. Para hacerlo, abre tu terminal y ejecuta el siguiente comando:
pip install --upgrade httpie
Esto instalará la última versión de HTTPie en tu sistema, y también actualizará cualquier versión existente si tienes una. Puedes comprobar la versión de HTTPie ejecutando:
http --version
Deberías ver algo como esto:
http 2.5.0
HTTPie - a CLI, cURL-like tool for humans.
https://httpie.io
Si ves esta salida, ¡felicidades! Has instalado HTTPie con éxito y estás listo para usarlo.

Cómo enviar peticiones HTTP con HTTPie
La sintaxis básica de HTTPie es:
http [flags] [METHOD] URL [ITEM [ITEM]]
Donde:
flags
son argumentos opcionales que modifican el comportamiento de HTTPie, como-v
para el modo verbose,-h
para la ayuda, o-f
para seguir las redirecciones.METHOD
es el método HTTP a usar, como GET, POST, PUT, PATCH, DELETE, etc. Si se omite, HTTPie usa GET por defecto.URL
es la URL del servidor HTTP con el que interactuar, comohttps://example.com/api/users
.ITEM
es un par clave-valor opcional que especifica los datos de la petición, comoname=John
para datos de formulario, oname:=John
para datos JSON. También puedes usarITEM
para especificar encabezados, comoUser-Agent:HTTPie
.
Por ejemplo, para enviar una petición GET a https://example.com/api/users
, puedes simplemente ejecutar:
http https://example.com/api/users
Esto enviará una petición GET a la URL, y mostrará la respuesta de una manera coloreada y formateada. Verás algo como esto:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 326
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"146-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
[
{
"id": 1,
"name": "John",
"email": "john@example.com"
},
{
"id": 2,
"name": "Jane",
"email": "jane@example.com"
},
{
"id": 3,
"name": "Bob",
"email": "bob@example.com"
}
]
Como puedes ver, HTTPie muestra la línea de estado de la respuesta, los encabezados y el cuerpo de una manera clara y legible. También usa colores para resaltar diferentes partes de la respuesta, como verde para los encabezados, azul para las claves JSON y amarillo para los valores JSON.

También puedes enviar otros métodos HTTP con HTTPie, como POST, PUT, PATCH o DELETE, especificando el método antes de la URL. Por ejemplo, para enviar una petición POST a https://example.com/api/users
con algunos datos JSON, puedes ejecutar:
http POST https://example.com/api/users name=John email=john@example.com
Esto enviará una petición POST a la URL, con los siguientes datos JSON en el cuerpo de la petición:
{
"name": "John",
"email": "john@example.com"
}
También puedes usar el operador :=
para especificar valores JSON, como name:="John"
o age:=25
. Esto es útil cuando quieres enviar valores que no son cadenas, como números, booleanos, arrays u objetos.
HTTPie mostrará la respuesta de la misma manera que antes, pero con un código de estado y un cuerpo diferentes. Verás algo como esto:
HTTP/1.1 201 Created
Connection: keep-alive
Content-Length: 110
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"6e-8a9e8c9f"
Location: /api/users/4
Server: nginx/1.19.6
X-Powered-By: Express
{
"id": 4,
"name": "John",
"email": "john@example.com"
}
Como puedes ver, HTTPie muestra el código de estado de la respuesta como 201 Created, indicando que se ha creado un nuevo recurso en el servidor. También muestra el encabezado Location, que apunta a la URL del recurso recién creado. El cuerpo de la respuesta contiene la representación JSON del nuevo usuario.
Puedes usar la misma sintaxis para enviar otros métodos HTTP, como PUT, PATCH o DELETE, reemplazando el nombre del método. Por ejemplo, para actualizar el nombre del usuario con id 4, puedes ejecutar:
http PATCH https://example.com/api/users/4 name=Jack
Esto enviará una petición PATCH a la URL, con los siguientes datos JSON en el cuerpo de la petición:
{
"name": "Jack"
}
HTTPie mostrará la respuesta de la misma manera que antes, pero con un código de estado y un cuerpo diferentes. Verás algo como esto:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 110
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"6e-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
{
"id": 4,
"name": "Jack",
"email": "john@example.com"
}
Como puedes ver, HTTPie muestra el código de estado de la respuesta como 200 OK, indicando que el recurso se ha actualizado con éxito. El cuerpo de la respuesta contiene la representación JSON del usuario actualizado.
También puedes usar HTTPie para enviar datos de formulario, usando el operador =
en lugar del operador :=
. Por ejemplo, para enviar una petición POST a https://example.com/api/login
con algunos datos de formulario, puedes ejecutar:
http POST https://example.com/api/login username=John password=secret
Esto enviará una petición POST a la URL, con los siguientes datos de formulario en el cuerpo de la petición:
username=John&password=secret
HTTPie mostrará la respuesta de la misma manera que antes, pero con un tipo de contenido y un cuerpo diferentes. Verás algo como esto:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 32
Content-Type: text/plain; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"20-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
Login successful. Welcome, John!
Como puedes ver, HTTPie muestra el tipo de contenido de la respuesta como text/plain, indicando que el cuerpo de la respuesta es texto plano. El cuerpo de la respuesta contiene un mensaje simple confirmando el inicio de sesión.

Cómo inspeccionar el cuerpo y los encabezados de la respuesta con HTTPie
Una de las grandes características de HTTPie es que automáticamente analiza y formatea el cuerpo y los encabezados de la respuesta, dependiendo del tipo de contenido. Por ejemplo, si la respuesta es JSON, HTTPie la mostrará de una manera bonita y coloreada, como vimos antes. Si la respuesta es HTML, HTTPie la mostrará como texto sin formato, pero con resaltado de sintaxis. Si la respuesta es una imagen, HTTPie la mostrará como datos binarios, pero con una pista del tipo y el tamaño de la imagen.
También puedes usar algunas flags para modificar cómo HTTPie muestra la respuesta. Por ejemplo, puedes usar la flag -b
o --body
para mostrar solo el cuerpo de la respuesta, sin los encabezados. Puedes usar la flag -h
o --headers
para mostrar solo los encabezados de la respuesta, sin el cuerpo. Puedes usar la flag -p
o --print
para especificar qué partes de la petición y la respuesta imprimir, usando los siguientes caracteres:
H
: Encabezados de la peticiónB
: Cuerpo de la peticiónh
: Encabezados de la respuestab
: Cuerpo de la respuesta
Por ejemplo, para mostrar solo los encabezados de la petición y el cuerpo de la respuesta, puedes ejecutar:
http -p HB https://example.com/api/users
Esto mostrará algo como esto:
GET /api/users HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: example.com
User-Agent: HTTPie/2.5.0
[
{
"id": 1,
"name": "John",
"email": "john@example.com"
},
{
"id": 2,
"name": "Jane",
"email": "jane@example.com"
},
{
"id": 3,
"name": "Bob",
"email": "bob@example.com"
}
]
Como puedes ver, HTTPie muestra los encabezados de la petición y el cuerpo de la respuesta, pero no los encabezados de la respuesta ni el cuerpo de la petición.
También puedes usar la flag -j
o --json
para forzar a HTTPie a tratar la respuesta como JSON, incluso si el tipo de contenido no es application/json. Esto es útil cuando el servidor no envía el tipo de contenido correcto, o cuando quieres analizar una respuesta no JSON como JSON. Por ejemplo, para analizar una respuesta de texto plano como JSON, puedes ejecutar:
http -j https://example.com/api/hello
Esto mostrará algo como esto:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"d-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
{
"hello": "world"
}
Como puedes ver, HTTPie analiza la respuesta de texto plano como JSON, y la muestra de una manera bonita y coloreada.
También puedes usar la flag -o
o --output
para guardar el cuerpo de la respuesta en un archivo, en lugar de mostrarlo en la terminal. Esto es útil cuando quieres descargar un archivo del servidor, como una imagen, un PDF o un archivo ZIP. Por ejemplo, para descargar una imagen de https://example.com/api/image
, puedes ejecutar:
http -o image.jpg https://example.com/api/image
Esto guardará la imagen en un archivo llamado image.jpg
en tu directorio actual. También puedes usar la flag -d
o --download
para generar automáticamente un nombre de archivo basado en la URL y el tipo de contenido. Por ejemplo, para descargar la misma imagen, puedes ejecutar:
http -d https://example.com/api/image
Esto guardará la imagen en un archivo llamado image-20240208-054325.jpg
en tu directorio actual, usando la fecha y la hora como sufijo.
Como puedes ver, HTTPie te da muchas opciones para inspeccionar el cuerpo y los encabezados de la respuesta, y para guardar la respuesta en un archivo. Puedes usar estas opciones para probar y depurar tus APIs, y para comprobar el contenido y el formato de la respuesta.
Limitaciones de HTTPie
HTTPie es una herramienta de línea de comandos potente y fácil de usar para interactuar con servidores HTTP y APIs. Sin embargo, también tiene algunas limitaciones, como:
- No es compatible con los protocolos GraphQL, WebSocket o gRPC, que se están volviendo más populares para el desarrollo web moderno.
- No tiene una interfaz gráfica de usuario (GUI) ni una versión web, lo que puede ser preferido por algunos usuarios que no se sienten cómodos con la terminal.
- No tiene características integradas para el diseño, la documentación, la simulación o las pruebas de APIs, que son esenciales para el desarrollo y la colaboración de APIs.
Por qué deberías usar Apidog
Apidog es una plataforma integrada para el diseño, la depuración, el desarrollo, la simulación y las pruebas de APIs. Combina las funcionalidades de Postman, Swagger, Mock y JMeter en una sola herramienta. Es posible que desees utilizar Apidog si estás buscando:
- Una solución integral y colaborativa para todo el ciclo de vida de la API, desde el diseño hasta las pruebas, la simulación y la documentación.
- Una herramienta que admita múltiples protocolos, como HTTP, GraphQL, WebSocket y gRPC.
- Una herramienta que tenga tanto una aplicación de escritorio como una versión web, así como una interfaz de línea de comandos (CLI).
- Una herramienta que implemente el diseño de API primero, facilitando la sincronización sin esfuerzo de la API, las especificaciones y las modificaciones en todo el ciclo de vida de la API.
Paso 1. Abre Apidog y haz clic en "Nueva API" para crear una nueva API para probar.

Paso 2. Selecciona el método HTTP que se utilizará para la API e introduce la URL del punto final.

Paso 3. Introduce la información necesaria, como los parámetros, según la especificación de la API y haz clic en el botón "Enviar" para enviar la solicitud de la API y obtener la respuesta.

Conclusión
HTTPie es una herramienta potente y fácil de usar que te permite comunicarte con servidores HTTP y APIs desde tu terminal. Tiene muchas características y opciones que facilitan la personalización y el formato de tus peticiones y respuestas. Puedes usar HTTPie para probar, depurar y explorar APIs, así como para automatizar tareas y flujos de trabajo.
Si quieres usar una plataforma más integrada para el diseño, la depuración, el desarrollo, la simulación y las pruebas de APIs, también puedes probar Apidog. Apidog es una herramienta que conecta todo el ciclo de vida de la API, desde el diseño hasta las pruebas, la simulación y la documentación.