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.

HTTPie vs cURL

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.

Contrata mi increíble soporte profesional