Agence web » Actualités du digital » Comment utiliser HTTPie pour interagir avec les API depuis votre terminal –

Comment utiliser HTTPie pour interagir avec les API depuis votre terminal –

Capture d'écran de la demande d'exemple HTTPie

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!

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

Capture d'écran de la sortie HTTPie JSON

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.

★★★★★