Découvrir HTTPie : l’alternative lisible à curl
Quand on travaille avec des API REST, on utilise souvent curl. C’est puissant, installé presque partout, mais pas toujours très lisible.
Dès qu’il faut envoyer du JSON, ajouter des headers HTTP ou gérer un token, les commandes deviennent rapidement longues.
HTTPie propose une alternative plus simple à lire et plus agréable à utiliser en ligne de commande.
C’est un client HTTP open source pensé pour tester des API depuis un terminal.
Dans cet article, nous allons voir comment installer HTTPie et l’utiliser pour faire nos premières requêtes HTTP.
Présentation
HTTPie permet d’envoyer des requêtes HTTP simplement depuis un terminal. L’objectif est de remplacer une commande parfois difficile à lire comme :
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TOKEN" \
-d '{"name":"test","role":"admin"}'Par une commande plus claire :
http POST https://api.example.com/users \
Authorization:"Bearer TOKEN" \
name=test \
role=adminHTTPie est particulièrement pratique pour :
- Tester une API REST
- Envoyer du JSON rapidement
- Vérifier des headers HTTP
- Lire une réponse JSON
Installation
HTTPie peut être installé de plusieurs manières selon le système.
Sur Debian ou Ubuntu :
sudo apt update
sudo apt install httpieSur macOS avec Homebrew :
brew install httpieAvec Python et pip :
python3 -m pip install --upgrade httpieHTTPie propose plusieurs méthodes d’installation, notamment via apt, brew, pip, snap, yum ou encore choco.
Vérifier l’installation :
http --versionPremière requête GET
Pour faire une requête GET, il suffit d’utiliser la commande http suivie de l’URL :
http https://httpbin.org/getPar défaut, HTTPie utilise GET lorsqu’aucune méthode n’est précisée et qu’aucune donnée n’est envoyée.
Résultat attendu :
{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "HTTPie/3.2.4"
},
"origin": "x.x.x.x",
"url": "https://httpbin.org/get"
}La réponse est automatiquement formatée, ce qui rend le résultat plus lisible qu’une sortie brute.
Requête GET avec paramètres
Pour envoyer des paramètres dans l’URL, on peut les ajouter directement :
http https://httpbin.org/get search==terraform page==1Attention à la syntaxe champ==valeur. Le double égal == indique à HTTPie qu’il s’agit d’un paramètre de query string.
La requête générée sera équivalente à :
https://httpbin.org/get?search=terraform&page=1Envoyer du JSON avec la méthode POST
L’un des gros avantages d’HTTPie est l’envoi de JSON.
Exemple :
http POST https://httpbin.org/post name=test role=admin enabled:=trueIci, HTTPie génère automatiquement un body JSON.
La différence importante :
name=test -> chaîne de caractères
enabled:=true -> valeur JSON nativeAvec =, la valeur est envoyée comme une string.
Avec :=, la valeur est interprétée comme du JSON.
Exemple :
http POST https://httpbin.org/post \
name=web-01 \
cpu:=2 \
memory:=4096 \
enabled:=trueBody JSON envoyé :
{
"name": "web-01",
"cpu": 2,
"memory": 4096,
"enabled": true
}HTTPie est capable de gérer nativement les requêtes JSON, et l’option --json permet aussi de forcer explicitement l’en-tête Accept: application/json.
Ajouter des headers HTTP
Pour ajouter un header HTTP, la syntaxe est simple :
http https://httpbin.org/get X-Environment:prodExemple avec plusieurs headers :
http https://httpbin.org/get \
X-Environment:prod \
X-App:myappPour un token Bearer :
http https://api.example.com/users \
Authorization:"Bearer MON_TOKEN"C’est beaucoup plus lisible qu’un curl avec plusieurs -H.
Conclusion
HTTPie est une excellente alternative à curl pour tester des API depuis un terminal.
Il ne remplace pas forcément curl dans tous les cas, notamment sur des serveurs minimalistes où curl est déjà présent.
Mais pour le développement, le debug d’API et les usages DevOps quotidiens, HTTPie est souvent plus lisible et plus confortable.