httpie - Un client HTTP en ligne de commande absolument génial !

par Korben -

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 ;-)