Comment utiliser HTTPie pour interagir avec les API depuis votre terminal –
HTTPie est un client HTTP pour votre terminal. Conçu comme une alternative moderne à curl
, HTTPie simplifie l’interaction avec les API en offrant une syntaxe simple et une sortie formatée automatiquement.
Disponible sur Windows, Mac et Linux, la configuration devrait être une affaire simple. La plupart des distributions Linux incluent désormais HTTPie dans leurs référentiels de packages, ce qui vous permet de apt
, dnf
ou pacman
pour commencer. Il est également disponible via Homebrew pour les utilisateurs Mac et en tant que package Python livré via Pip sur les trois plates-formes (pip install httpie
).
Une fois installé, HTTPie enregistre le http
et https
commandes dans votre shell. Vous disposez désormais d’un moyen simple et expressif d’appeler des points de terminaison d’API sans quitter votre terminal!
Sommaire
Commandes de base
Dans sa forme la plus simple, HTTPie peut recevoir une URL pour créer immédiatement un GET
demande:
http example.com
Pour envoyer des données, spécifiez le verbe HTTP approprié, puis transmettez vos paires clé / valeur en tant que paramètres de ligne de commande supplémentaires:
http POST example.com foo=bar hello=world
Par défaut, les données sont envoyées au format JSON avec les en-têtes de requête appropriés. Pour soumettre un formulaire à la place, passez le -f
paramètre.
Lorsque vous utilisez la syntaxe JSON, sachez que tous les champs sont normalement envoyés sous forme de chaînes. Vous pouvez utiliser le :=
syntaxe au lieu de =
pour passer en mode données brutes. Un paramètre examples:='[1, 2]'
se traduira alors par le examples
key étant définie sur un tableau de deux entiers.
En-têtes et cookies
Pour définir un en-tête de demande, spécifiez le nom et la valeur de l’en-tête sous forme de chaîne séparée par deux-points:
http GET example.com Authorization:foobar
HTTPie définit certains en-têtes, tels que User-Agent
, par défaut. Ceux-ci peuvent être supprimés en les spécifiant explicitement avec une valeur vide.
Les cookies sont définis en définissant une chaîne avec les cookies en tant que valeurs délimitées par deux-points:
http GET example.com "Cookie:foo=bar;hello=world"
Il ne s’agit en réalité que d’un cas particulier de réglage du Cookie
en-tête, qui est la manière dont les cookies sont envoyés via HTTP.
Travailler avec des fichiers
Vous pouvez charger et télécharger des fichiers à l’aide de redirections shell standard:
http POST example.com/upload < ~/example.pdf http GET example.com/download.pdf > ~/download.pdf
Vous pouvez également télécharger des fichiers dans le cadre d’une soumission de formulaire HTTP en utilisant le @
syntaxe:
http -f POST example.com/form-with-file hello="Hello World" myUpload@~/example.pdf
Cela agira de la même manière qu’une entrée de fichier HTML avec name="myUpload"
. Vous pouvez à la place charger des données à partir d’un fichier et l’intégrer dans la requête à l’aide de =@
syntaxe, au lieu de @
.
Séances
HTTPie a un support intégré pour les sessions persistantes. Ceux-ci vous permettent de réutiliser des composants de requête, tels que les en-têtes HTTP et les cookies, entre les requêtes adressées au même hôte.
Vous créez et utilisez des sessions en définissant le --session
paramètre. Comme valeur, spécifiez le chemin vers un fichier qui sera utilisé pour stocker votre nouvelle session.
http --session=./my-session.json GET example.com Authorization:foobar
Données prises en charge par des sessions, telles que Authorization
l’en-tête dans la demande ci-dessus, sera maintenant enregistré dans le fichier. Lors de demandes ultérieures, vous pouvez désormais omettre Authorization
header – il sera inclus automatiquement tel qu’il est défini dans votre session.
Au lieu de spécifier un fichier de session, vous pouvez également utiliser un nom simple (--session=example
). Dans ce cas, HTTPie enregistrera automatiquement la session dans un fichier géré en interne. Chaque session est liée à l’hôte dont elle provient, donc http --session=example example1.com
et http --session=example example2.com
existeront indépendamment les uns des autres.
Gérer la sortie
L’une des améliorations significatives de HTTPie par rapport aux utilitaires tels que curl
est sa mise en forme automatique des réponses. Les corps JSON sont particulièrement bien gérés, avec une indentation appropriée, un tri alphabétique des objets par leurs clés et une conversion correcte des caractères Unicode.
Vous pouvez personnaliser le rendu de la sortie à l’aide de quelques options différentes. le --pretty
l’indicateur peut être défini sur --all
(défaut), --colors
(uniquement les couleurs), --format
(formatage uniquement) ou --none
(pour désactiver tous les traitements de sortie et voir les données brutes).
De plus, vous pouvez modifier le jeu de couleurs à l’aide du --style
drapeau. Les schémas disponibles sont auto
(le défaut), default
(utilisez les styles de bibliothèque Pygments sous-jacents), fruity
et le populaire monokai
.
Vous n’avez pas à vous soucier du formatage par défaut lors de la redirection de la sortie dans un fichier. HTTPie reconnaîtra qu’il est redirigé et achemine simplement les données brutes sans appliquer de formatage. Cela signifie également que les réponses binaires, qui ne sont normalement jamais émises vers le terminal, peuvent être envoyées dans des fichiers.
Fichier de configuration
HTTPie prend en charge un fichier de configuration de base qui peut être utilisé pour définir les paramètres par défaut. Celles-ci seront appliquées à toutes les demandes que vous faites. Le fichier doit être enregistré dans ~/.config/httpie/config.json
sur Linux / Mac et %APPDATA%httpieconfig.json
sur Windows.
Une seule clé de configuration est prise en charge, default_options
, qui accepte un tableau de base de paramètres à ajouter aux commandes HTTPie que vous exécutez:
{ "default_options": [ "Authorization:foobar", "--pretty=none", "--style=monokai" ] }
Toute option prise en charge par l’interface de ligne de commande de HTTPie peut être incluse. Vous pouvez remplacer vos options par défaut en les définissant avec une nouvelle valeur chaque fois que vous exécutez HTTPie.
Conclusion
HTTPie est un outil riche en fonctionnalités qui apporte des API HTTP à votre terminal. C’est une alternative moderne aux agrafes Unix comme curl
conçu pour une utilisation régulière par les développeurs et les testeurs. Bien que la syntaxe puisse parfois être lourde, elle est généralement expressive et mémorable.
Cela vaut la peine de prendre le temps de lire la documentation officielle si vous souhaitez en savoir plus sur HTTPie. Tout le développement se déroule à l’air libre sur GitHub, avec un support fourni sur Gitter et StackOverflow.