Cómo utilizar HTTPie para interactuar con las API desde la terminal

Contenidos

HTTPie es un cliente HTTP para su terminal. Diseñado como una alternativa moderna a curl, HTTPie simplifica la interacción con las API al ofrecer una sintaxis sencilla y una salida formateada automáticamente.

Disponible en Windows, Mac y Linux, obteniendo la configuración debería ser un asunto sencillo. La mayoría de las distribuciones de Linux ahora incluyen HTTPie dentro de sus repositorios de paquetes, por lo que puede apt, dnf o pacman comenzar. Además está habilitada a través de Homebrew para usuarios de Mac, y como un paquete de Python entregado a través de Pip en las tres plataformas (pip install httpie).

Una vez instalado, HTTPie registra el http y https comandos en su shell. ¡Ahora dispone de una forma simple y expresiva de llamar a los puntos finales de la API sin salir de su terminal!

Comandos básicos

En su forma más simple, a HTTPie se le puede pasar una URL para hacer una GET solicitud:

http example.com

Para enviar datos, especifique el verbo HTTP apropiado y después pase sus pares clave / valor como parámetros de línea de comandos adicionales:

http POST example.com foo=bar hello=world

De forma predeterminada, los datos se envían como JSON con los encabezados de solicitud adecuados. Para enviarlo como un formulario, pase el -f parámetro.

Cuando utilice la sintaxis JSON, tenga en cuenta que todos los campos regularmente se envían como cadenas. Puedes utilizar el := sintaxis en lugar de = para cambiar al modo de datos brutos. Un parámetro examples:='[1, 2]' entonces resultará en el examples la clave se establece en una matriz de dos enteros.

Encabezados y cookies

Para determinar un encabezado de solicitud, especifique el nombre y el valor del encabezado como una cadena separada por dos puntos:

http GET example.com Authorization:foobar

HTTPie establece algunos encabezados, como User-Agent, por defecto. Estos se pueden borrar especificándolos explícitamente con un valor vacío.

Las cookies se establecen definiendo una cadena con las cookies como valores delimitados por dos puntos:

http GET example.com "Cookie:foo=bar;hello=world"

En realidad, este es solo un caso especial de determinar el Cookie encabezado, que es cómo se envían las cookies a través de HTTP.

Trabajar con archivos

Puede cargar y descargar archivos usando redireccionamientos de shell estándar:

http POST example.com/upload < ~/example.pdf
http GET example.com/download.pdf > ~/download.pdf

Además puede cargar archivos como parte de un envío de formulario HTTP a través de el uso de @ sintaxis:

http -f POST example.com/form-with-file hello="Hello World" myUpload@~/example.pdf

Esto actuará de manera idéntica a la entrada de un archivo HTML con name="myUpload". En su lugar, puede cargar datos de un archivo e incrustarlos en la solicitud usando el =@ sintaxis, en lugar de @.

Sesiones

HTTPie tiene soporte integrado para sesiones persistentes. Estos le posibilitan reutilizar componentes de solicitud, como encabezados HTTP y cookies, entre solicitudes hechas al mismo host.

Puede crear y usar sesiones configurando el --session parámetro. Como valor, especifique la ruta a un archivo que se utilizará para guardar su nueva sesión.

http --session=./my-session.json GET example.com Authorization:foobar

Los datos que son compatibles con las sesiones, como el Authorization encabezado en la solicitud anterior, ahora se guardará en el archivo. En solicitudes posteriores, ahora puede omitir el Authorization encabezado: se incluirá automáticamente según se defina en su sesión.

En lugar de especificar un archivo de sesión, además puede utilizar un nombre simple (--session=example). En esta circunstancia, HTTPie guardará automáticamente la sesión en un archivo administrado internamente. Cada sesión está vinculada al host desde el que se origina, por lo que http --session=example example1.com y http --session=example example2.com existirán independientemente unos de otros.

Administrar la salida

Una de las mejoras significativas de HTTPie sobre utilidades como curl es su formateo automático de respuestas. Los cuerpos JSON están concretamente bien manejados, con sangría adecuada, clasificación alfabética de objetos por sus claves y conversión correcta de caracteres Unicode.

Puede personalizar cómo se procesa la salida usando algunas opciones diferentes. los --pretty la bandera se puede configurar en --all (defecto), --colors (solo colores), --format (solo formateo) o --none (para deshabilitar todo el procesamiento de salida y ver los datos sin procesar).

Al mismo tiempo, puede cambiar el esquema de color usando el --style bandera. Los esquemas disponibles son auto (el valor por defecto), default (use los estilos de la biblioteca Pygments subyacentes), fruity y el popular monokai.

No necesita preocuparse por el formato predeterminado al redirigir la salida a un archivo. HTTPie reconocerá que está siendo redirigido y simplemente canalizará los datos sin aplicar ningún formato. Esto además significa que las respuestas binarias, que regularmente nunca se emiten al terminal, se pueden canalizar en archivos.

Archivo de configuración

HTTPie admite un archivo de configuración básica que se puede usar para establecer la configuración predeterminada. Estos se aplicarán a todas las solicitudes que realice. El archivo debe guardarse en ~/.config/httpie/config.json en Linux / Mac y %APPDATA%httpieconfig.json en Windows.

Se admite una única clave de configuración, default_options, que acepta una matriz básica de parámetros para agregar a los comandos HTTPie que ejecuta:

{
    "default_options": [
        "Authorization:foobar",
        "--pretty=none",
        "--style=monokai"
    ]
}

Se puede incluir cualquier opción que sea compatible con la interfaz de línea de comandos de HTTPie. Puede anular sus opciones predeterminadas definiéndolas con un nuevo valor cada vez que ejecute HTTPie.

Conclusión

HTTPie es una herramienta llena de funciones que lleva las API HTTP a su terminal. Es una alternativa moderna a los productos básicos de Unix como curl que está diseñado para el uso regular por parte de desarrolladores y evaluadores. Aún cuando la sintaxis puede resultar engorrosa a veces, en general es expresiva y memorable.

Es importante destacar tomarse el tiempo para leer el documentación oficial si está buscando obtener más información sobre HTTPie. Todo el desarrollo ocurre al aire libre en GitHub, con apoyo proporcionado en Gitter y Desbordamiento de pila.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.