httpie - Un client HTTP en ligne de commande absolument génial !
Si vous êtes familier avec la ligne de commande, vous connaissez tous Curl et wget. D’ailleurs, parfois les gens ont du mal à choisir entre les 2.
Réjouissez-vous, car je vais simplifier votre choix en vous proposant d’opter pour une nouvelle alternative : HTTPie
HTTPie est un client HTTP en ligne de commande qui se veut simple et intuitif et qui permet de faire tout un tas de choses comme du debug, interagir avec des serveurs http (pour automatiser des actions par exemple), interroger des API…etc.
Fonctionnant sous Windows, Linux et macOS, HTTPie support nativement le JSOM, est capable d’uploader des formulaires et des fichiers, crache des réponses formatées et en couleurs, sait gérer des connexions HTTPS, via proxy ou authentifiées et peut même télécharger des trucs un peu comme wget.
Comble du luxe, il est aussi possible d’ajouter vos propres extensions à HTTPie.
Alors comment ça fonctionne ? Déjà pour l’installer, voici comment faire :
Sous Mac avec Homebrew
brew install httpie
Sous Windows avec pip
pip install --upgrade pip setuptools pip install --upgrade httpie
Sous Linux (Ubuntu / Debian)
apt-get install httpie
Pour vérifier que ça fonctionne, on va tester avec mon site.
Ouvrez un terminal et entrez la commande
http korben.info
Vous devriez avoir une réponse de ce type :
Ensuite, voici quelques exemples que j’ai repris de la doc :
Requête HTTP personnalisée, avec un entête HTTP personnalisée et des données JSON passées en entrée :
http PUT example.org X-API-Token:123 name=John
Soumission d’un formulaire :
http -f POST example.org hello=World
Pour visualiser la demande qui est envoyée :
http -v example.org
Utiliser l’API Github pour poster un commentaire concernant un problème d’authentification :
http -a USERNAME POST https://api.github.com/repos/jakubroztocil/httpie/issues/83/comments body='HTTPie is awesome ! :heart:'
Uploader un fichier :
http example.org < file.json
Télécharger un fichier et l’enregistrer :
http example.org/file > file
Télécharger un fichier façon wget :
http --download example.org/file
Et il est aussi possible de nommer des sessions pour conserver une certaine persistance entre vos différentes requêtes :
http --session=logged-in -a username:password httpbin.org/get API-Key:123 http --session=logged-in httpbin.org/headers
Sans oublier la possibilité de définir un entête personnalisé pour contourner les enregistrements DNS manquants :
http localhost:8000 Hôte:exemple.com
Un excellent outil qui vous servira dans tout un tas de situations ;-)