Comment utiliser HTTPie pour interagir avec les API du terminal

0
190

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, vous pouvez donc rapidement commencer par apt, dnf ou pacman. Il est également disponible via Homebrew pour les utilisateurs Mac et sous forme de package Python livré via Pip sur les trois plates-formes (pip install httpie).

Une fois installé, HTTPie enregistre les commandes http et https dans votre coquille. Vous disposez désormais d'un moyen simple et expressif d'appeler des points de terminaison d'API sans quitter votre terminal !

Commandes de base

Dans sa forme la plus simple, HTTPie peut recevoir une URL pour effectuer immédiatement une requête GET :

http example.com

Pour envoyer des données, spécifiez le verbe HTTP approprié, puis transmettez vos paires clé/valeur en tant que ligne de commande supplémentaire paramètres :

http POST example.com foo=bar hello=world Advertisement

Par défaut, les données sont envoyées au format JSON avec les en-têtes de requête appropriés. Pour soumettre en tant que formulaire à la place, transmettez le paramètre -f.

Lorsque vous utilisez la syntaxe JSON, sachez que tous les champs sont normalement envoyés sous forme de chaînes. Vous pouvez utiliser la syntaxe := au lieu de = pour passer en mode données brutes. Un paramètre examples :='[1, 2]' entraînera alors la définition de la clé d'exemples sur un tableau de deux entiers.

En-têtes et cookies

Pour définir un en-tête de requête, spécifiez le nom et la valeur de l'en-tête sous forme de chaîne séparée par des deux-points :

http GET example.com Autorisation : 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 des deux-points :

http GET example.com “Cookie:foo= bar;hello=world”

C'est vraiment juste un cas particulier de définition de l'en-tête Cookie, qui est la façon 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 < ~/exemple.pdf http OBTENIR exemple.com/download.pdf > ~/download.pdf Publicité

Vous pouvez également télécharger des fichiers dans le cadre d'une soumission de formulaire HTTP en utilisant la syntaxe spéciale @ :

http -f POST example.com/form-with-file hello=”Hello World” myUpload@~/example .pdf

Ceci 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 les intégrer dans la requête en utilisant la syntaxe =@, au lieu de @.

Sessions

HTTPie a un support intégré pour les sessions persistantes. Ceux-ci vous permettent de réutiliser les composants de la 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 paramètre –session. Comme valeur, spécifiez le chemin d'accès à un fichier qui sera utilisé pour stocker votre nouvelle session.

http –session=./my-session.json GET example.com Authorization:foobar

Les données prises en charge par les sessions, telles que l'en-tête d'autorisation dans la demande ci-dessus, seront désormais enregistrées dans le fichier. Lors des demandes suivantes, vous pouvez désormais omettre l'en-tête d'autorisation – il sera automatiquement inclus tel qu'il est défini dans votre session.

Publicité

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 d'où elle provient, donc http –session=example example1.com et http –session=example example2.com existeront indépendamment l'un de l'autre.

Gestion de la sortie

L'une des améliorations significatives de HTTPie par rapport aux utilitaires tels que curl est son formatage 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. L'indicateur –pretty peut être défini sur –all (par défaut), –colors (uniquement les couleurs), –format (uniquement le formatage) ou –none (pour désactiver tout traitement de sortie et voir les données brutes).

En outre, vous pouvez modifier le schéma de couleurs à l'aide de l'indicateur –style. Les schémas disponibles sont auto (par défaut), par défaut (utilisez les styles de la bibliothèque Pygments sous-jacents), fruité et le populaire monokai.

Vous n'avez pas à vous soucier du formatage par défaut lorsque vous redirigez la sortie dans un fichier. HTTPie reconnaîtra qu'il est redirigé et dirigera 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 transférées dans des fichiers.

Fichier de configuration

HTTPie prend en charge une configuration de base qui peut être utilisé pour définir les paramètres par défaut. Ceux-ci seront appliqués à toutes les demandes que vous faites. Le fichier doit être enregistré dans ~/.config/httpie/config.json sous Linux/Mac et %APPDATA%httpieconfig.json sous Windows.

Publicité

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 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 rempli de fonctionnalités qui apporte des API HTTP à votre terminal. C'est une alternative moderne aux agrafes Unix comme curl qui est conçue 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émorisable.

Il vaut la peine de prendre le temps de lire la documentation officielle si vous cherchez à en savoir plus à propos de HTTPie. Tout le développement se déroule en public sur GitHub, avec un support fourni sur Gitter et StackOverflow.