Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

¿Cómo usar HTTPie en 2025?

HTTPie es una herramienta de línea de comandos que simplifica la interacción con servidores HTTP y APIs. Aprende a usar HTTPie en 2024 para hacer peticiones, subir archivos, gestionar sesiones y más.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

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.

button

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, como https://example.com/api/users.
  • ITEM es un par clave-valor opcional que especifica los datos de la petición, como name=John para datos de formulario, o name:=John para datos JSON. También puedes usar ITEM para especificar encabezados, como User-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ón
  • B: Cuerpo de la petición
  • h: Encabezados de la respuesta
  • b: 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.

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)Tutoriales

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

Daniel Costa

April 15, 2025

Cómo usar n8n con servidores MCPTutoriales

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

Daniel Costa

April 14, 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completaTutoriales

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

Daniel Costa

April 11, 2025