3.6. Cliente httpie¶
HTTPie (pronunciado aitch-tee-tee-pie) es un cliente HTTP de línea de comandos sustituto del cURL. Su objetivo es hacer que la interacción de CLI con los servicios web sea lo más amigable posible para los usuarios.

Figura 3.2, HTTPie vs cURL¶
Proporciona un simple comando http
que permite enviar solicitudes
HTTP arbitrarias utilizando una sintaxis simple y natural, y muestra
resultados en color. HTTPie se puede usar para probar, depurar y, en
general, interactuar con servidores HTTP.
3.6.1. Características¶
HTTPie consiste en un solo comando http
diseñado para la depuración
e interacción sin problemas con los servidores HTTP, las API RESTful y
los servicios web, lo cual logra mediante las siguientes características
principales:
Sintaxis de comando expresiva e intuitiva.
Salida de terminal formateada y coloreada.
Soporte JSON incorporado.
Formularios y archivos subidos.
HTTPS, proxies y soporte de autenticación.
Datos de solicitud arbitrarios.
Encabezados personalizados.
Sesiones persistentes.
Descargas tipo Wget.
Soporte Python 2.7 y 3.x.
Soporte para datos de solicitud arbitrarios y encabezados.
Soporte para Linux, macOS y Windows.
Extensiones (Plugins).
Documentación.
Cobertura de prueba (Test coverage).
3.6.2. Instalación¶
Es una aplicación Python de línea de comando, por lo que puedo instalarla con:
virtualenv --python /usr/bin/python3 venv && source ./venv/bin/activate
Es una aplicación de línea de comando, por lo que puedo instalarla con el siguiente comando:
pip3 install httpie
Una vez instalado puedes ejecutar con el siguiente comando:
http --version
Si muestra el numero de la versión instalada de http
, tiene
correctamente instalada la herramienta.
3.6.3. Uso¶
Con esta interfaz de línea de comandos (o CLI), puede especificarse la URL de un servidor (es decir, la ubicación a la que se envía la solicitud) y los datos que se van a enviar a ese servidor.
http https://httpie.io/
Aunque las plataformas API suelen tener interfaces muy intuitivas para solicitar y transferir datos a una URL, el comando http puede ser una herramienta muy útil para usar con el terminal, y estos son algunos de sus usos más comunes.
3.6.3.1. Guardar contenido de una URL¶
De la misma forma en que puedes usar el comando http para descargar imágenes, puedes guardar
el contenido de una URL (como una página web) en un archivo. Este es un ejemplo que usa la
página de proyecto http
:
http -o httpie.html https://httpie.io/
En este ejemplo, el código de origen de la página de proyecto http
se guarda en un archivo
denominado httpie.html
.
3.6.3.2. Descargar ficheros a un dispositivo¶
Como el terminal tiene acceso al sistema de archivos, también puedes descargar imágenes fácilmente desde direcciones URL.
Por ejemplo, esta es la URL del logotipo de Python.org, y con el comando http, puedes descargar un archivo comprimido de la siguiente forma:
http -d https://www.python.org/ftp/python/3.11.11/Python-3.11.11.tar.xz
Con el comando http y la URL de un archivo comprimido, pueden obtenerse los datos binarios del
archivo comprimido y almacenarse en el disco duro con el mismo nombre del archivo original Python-3.11.11.tar.xz
.
Por ejemplo, esta es la URL del logotipo de Python.org, y con el comando http, puedes descargar la imagen de la siguiente forma:
http -d https://www.python.org/static/img/python-logo.png -o python-logo.png
Con el comando http y la URL de la imagen, pueden obtenerse los datos binarios del logotipo y
almacenarse en un archivo de imagen (con una extensión .png
como la del archivo original) que
luego puede guardarse en el disco duro.
3.6.3.3. Probar rápidamente una API desde el terminal¶
Como ya hemos visto, el comando http es un cliente HTTP que permite probar rápidamente una API desde el terminal sin tener que descargar una aplicación específica.
3.6.3.3.1. request GET con response 200¶
http GET https://jsonplaceholder.typicode.com/todos/1
3.6.3.3.2. request POST formato x-www-form-urlencoded¶
http --form POST https://jsonplaceholder.typicode.com/posts name='HTTPie' type='article'
3.6.3.3.3. request POST formato json¶
echo -n '{"name": "HTTPie", "type": "article"}' | http POST https://jsonplaceholder.typicode.com/posts
3.6.3.3.4. request PUT formato json¶
http PUT https://jsonplaceholder.typicode.com/posts/1 Content-Type:application/json <<< '{"name": "JSON", "type": "post"}'
3.6.3.3.5. request DELETE¶
http DELETE https://jsonplaceholder.typicode.com/posts/1
De esta forma aprendió a usar el comando http.
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
¿Cómo puedo ayudar?
¡Mi soporte está aquí para ayudar!
Mi horario de oficina es de lunes a sábado, de 9 AM a 5 PM. UTM - Madrid, España.
La hora aquí es actualmente 7:35 PM UTM.
Mi objetivo es responder a todos los mensajes dentro de un día hábil.
