# httpie: un wget en mieux ![tag](python) ![category](system) Un logiciel de plus à utiliser: *httpie* qu'on retrouve sur https://httpie.org/. Il s'agit d'un programme python qui se veut être un wget en mieux. En fait il permet simplement d'interagir en ligne de commande avec un site web. Il peut ainsi interroger et formater des résultats d'API mais faire bien plus. ## installation ```bash pip install httpie ``` ## usage le plus simple ```bash http https://fraoustin.fr HTTP/1.1 200 OK Connection: keep-alive Content-Encoding: gzip Content-Type: text/html Date: Tue, 14 Apr 2020 09:16:21 GMT ETag: W/"5e8c7316-3aec" Last-Modified: Tue, 07 Apr 2020 12:33:26 GMT Server: nginx/1.10.3 Transfer-Encoding: chunked .... ``` Vous pouvez sauvegarder le fichier ```bash http https://fraoustin.fr > test.html ``` On peut aussi en télécharger un ```bash http --download example.org/file.zip ``` On peut complètement gérer le header de notre requête On peut passer des paramètres à notre url ```bash http https://api.github.com/search/repositories q==httpie per_page==1 ``` On peut aussi soumettre des formulaires ```bash http -f POST example.org hello=World ``` Mais un truc très sympa est la gestion de l'authentification. Il existe de nombreux plugins pour gérer des cas spécifique, pour ma part lors de mes developpements j'utilise deu méthodes d'authentification - authentification basic de nginx, et là rien de plus simple ```bash http --auth user:password https://mysite/ ``` - authentification via flask_login, et là je passe par la gestion de *session* (oui on peut gérer des sessions ;-) ) ```bash http --session mysession -f POST http://127.0.0.1:5000/login email=myem@il.com password=mypassword http --session mysession http://127.0.0.1:5000/api/test ``` ```note à l'adresse http://127.0.0.1:5000/login j'ai un simple formulaire login/password que j'appelle pour obtenir un token dans mysession, que je réutilise par la suite ``` un petit outil très sympa qui doit permettre pas mal de chose (il gère même le upload de fichier, le proxy, ...). On peut utiliser le pipe (|) pour combiner http avec d'autres outils (comme dezipper un fichier downloadé) ```bash http -d https://github.com/jakubroztocil/httpie/archive/master.tar.gz | tar zxf - ```