En este tutorial, te mostraré httpie que es un moderno cliente HTTP de línea de comando, una herramienta alternativa para curl. httpie es un Proyecto GitHub de Jakub Roztocil que se ha beneficiado de algunas contribuciones en Github. La herramienta httpie se ve como un moderno cliente http de línea de comandos que hace interacción CLI con los servicios web y proporciona un comando http que permite enviar solicitudes HTTP arbitrarias utilizando una sintaxis simple y natural, y muestra una salida coloreada.
Ofrece compatibilidad con algunas características como JSON incorporado, HTTPS, coloración de sintaxis, proxies, autenticación, sesiones persistentes, buen soporte de Python (2.6, 2.7 y 3.x) y algunas otras que puedes descubrir.
1) Instalar httpie
De forma predeterminada, httpie está presente en su repositorio de Linux y se puede instalar directamente a través de los paquetes
# yum install httpie
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
epel/x86_64/metalink | 13 kB 00:00:00
epel | 4.3 kB 00:00:00
Dependencies Resolved
======================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================
Installing:
python2-httpie noarch 0.9.4-1.el7 epel 100 k
Installing for dependencies:
jbigkit-libs x86_64 2.0-11.el7 base 46 k
libtiff x86_64 4.0.3-27.el7_3 base 170 k
libwebp x86_64 0.3.0-7.el7 base 170 k
python-chardet noarch 2.2.1-1.el7_1 base 227 k
Installed:
python2-httpie.noarch 0:0.9.4-1.el7
Dependency Installed:
jbigkit-libs.x86_64 0:2.0-11.el7 libtiff.x86_64 0:4.0.3-27.el7_3 libwebp.x86_64 0:0.3.0-7.el7
python-chardet.noarch 0:2.2.1-1.el7_1 python-pillow.x86_64 0:2.0.0-19.gitd1c6db8.el7 python-pygments.noarch 0:1.4-10.el7
python-requests.noarch 0:2.6.0-1.el7_1 python-six.noarch 0:1.9.0-2.el7 python-urllib3.noarch 0:1.10.2-3.el7
Complete!
2) Cómo usar httpie
Ahora que hemos instalado httpie, debemos conservar la siguiente sintaxis.
http [flags] [METHOD] URL [ITEM [ITEM]]
Y podemos ver cómo usarlo con el comando de ayuda.
# http --help
usage: http [--json] [--form] [--pretty {all,colors,format,none}]
[--style STYLE] [--print WHAT] [--headers] [--body] [--verbose]
[--all] [--history-print WHAT] [--stream] [--output FILE]
[--download] [--continue]
[--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]
[--auth USER[:PASS]] [--auth-type {basic,digest}]
[--proxy PROTOCOL:PROXY_URL] [--follow]
[--max-redirects MAX_REDIRECTS] [--timeout SECONDS]
[--check-status] [--verify VERIFY]
[--ssl {ssl2.3,ssl3,tls1,tls1.1,tls1.2}] [--cert CERT]
[--cert-key CERT_KEY] [--ignore-stdin] [--help] [--version]
[--traceback] [--debug]
[METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
HTTPie - a CLI, cURL-like tool for humans. <https://httpie.org>
METHOD
The HTTP method to be used for the request (GET, POST, PUT, DELETE, ...).
This argument can be omitted in which case HTTPie will use POST if there
is some data to be sent, otherwise GET:
$ http example.org # => GET
$ http example.org hello=world # => POST
El argumento requerido es la URL para usar el comando. Para example, puede usar httpie para publicar un comentario en un sitio directamente a través de su terminal como se muestra a continuación:
# http -a USERNAME POST https://api.github.com/repos/jakubroztocil/httpie/issues/83/comments body='HTTPie is awesome! :heart:'
Puede verificar el resultado directamente en el problema de github página de publicación del proyecto
a) Solicitar URL
El uso básico de httpie es solicitar la URL del sitio web.
# http google.com
b) Descarga un archivo
Puede descargar un archivo con el --download
parámetro de htppie. Funciona como comando wget
# http --download https://blog.linoxide.com/wp-content/uploads/2017/09/kubernetes-monitoring.jpg
Es posible cambiar directamente el nombre del archivo descargado durante el proceso con el-o
parámetro de la siguiente manera:
# http --download https://blog.linoxide.com/wp-content/uploads/2017/09/kubernetes-monitoring.jpg -o kubernetes.jpg
Cuando usa el -o
parámetro, puede reanudar la descarga con el -c
parámetro
c) Autenticarse en la URL
El httpie admite la autenticación a través de dos métodos: el básico y digerir autenticación. Tiene la posibilidad de insertar directamente la contraseña en el terminal durante el proceso, pero también puede elegir que se le solicite su contraseña durante el proceso. Para la autenticación básica con contraseña solicitada, haga lo siguiente:
# http -a alainfrancois linoxide.com
https: password for [email protected]:
O puede usar directamente su contraseña de la siguiente manera:
# http -a alainfrancois:password linoxide.com
Se puede instalar algún mecanismo de autenticación adicional como complementos como AWS / Amazon S3 (httpie-aws-auth) o JWTAuth (httpie-jwt-auth).
d) Crear una sesión
httpie tiene la particularidad de admitir sesiones persistentes. Puedes crear sesiones nombradas, anónimo y sesiones de solo lectura.
Puede crear una o más sesiones con nombre por host como se muestra a continuación:
# http --session=user1 -a user1:password example.org X-Foo:Bar
e) Envío de solicitud
Una de las cosas que puede agregar a la solicitud con los elementos de la solicitud son los parámetros GET como se muestra a continuación:
# http https://httpbin.org/get foo==bar wicked==witch
El httpie es una gran herramienta que puede hacer el mismo trabajo que curl. Puedes ir directamente al proyecto oficial de GitHub para más información.