Si vous vivez dans votre terminal mais trouvez la syntaxe de curl délicate et sa sortie brute difficile à lire, curlie vaut la peine d'être connu. C'est un petit client HTTP en ligne de commande qui enveloppe curl et emprunte la syntaxe plus conviviale et la sortie colorisée de HTTPie, vous obtenez ainsi des réponses lisibles sans renoncer à la puissance de curl. Ce guide explique ce qu'est curlie, comment l'installer et l'utiliser, comment il se rapporte à curl et HTTPie, et quand passer des appels de terminal ad-hoc à un flux de travail enregistré et reproductible.
Qu'est-ce que curlie exactement ?
curlie est une interface pour curl. Il ne réimplémente pas HTTP. Il analyse une commande plus simple de style HTTPie, construit l'invocation curl équivalente et transmet la requête réelle au binaire curl sur votre machine. Le résultat est retourné avec une coloration syntaxique et un JSON joliment formaté.

Ce choix de conception est important. Parce que curl gère la mise en réseau, curlie hérite du support de protocole de curl, de la gestion TLS, du comportement de proxy et des drapeaux que vous connaissez déjà. Vous pouvez transmettre n'importe quel drapeau curl natif directement. curlie rend simplement le cas courant, envoyer une requête et lire la réponse, beaucoup moins pénible.
Le projet est livré sous forme d'un seul binaire Go maintenu sur GitHub. Il n'y a pas de runtime à installer, pas d'environnement Python, pas de plugins. Vous déposez le binaire sur votre PATH et c'est terminé.
En clair : curlie est un client HTTP interactif et ad-hoc pour le terminal. Vous l'utilisez lorsque vous voulez tester un point de terminaison, inspecter une réponse et passer à autre chose. Ce n'est pas un exécuteur de tests, et il n'essaie pas d'en être un.
Pourquoi les gens l'utilisent
curl est partout, mais sa sortie affiche des octets bruts sur votre écran. Le JSON arrive comme une seule ligne non formatée. Les en-têtes et le corps se confondent à moins d'ajouter des drapeaux. HTTPie a résolu le problème de lisibilité avec une syntaxe propre et une sortie colorée, mais c'est un outil Python distinct avec son propre comportement et ses propres dépendances.
curlie se situe entre les deux. Vous obtenez l'ergonomie de HTTPie avec le moteur de curl en dessous. Quelques raisons pour lesquelles les développeurs l'apprécient :
- Lisible par défaut. Les réponses sont colorisées, avec un JSON joliment formaté et des en-têtes clairement séparés.
- Syntaxe familière. La définition des en-têtes, des paramètres de requête et des champs JSON utilise le style compact de HTTPie au lieu des drapeaux empilés
-Het-d. - curl en dessous. N'importe quel drapeau curl fonctionne. Si vous connaissez curl, vous connaissez déjà la plupart de curlie.
- Zéro dépendances. Un seul binaire statique. Rien à maintenir à jour sauf le binaire lui-même.
- Le mode verbeux affiche l'appel curl. Exécutez avec
-vet vous pouvez voir les en-têtes et la requête sous-jacente, ce qui en fait également un bon outil d'apprentissage.
Installation de curlie
curlie est distribué sous forme de binaire pré-compilé et via les gestionnaires de paquets courants. Les commandes exactes changent avec le temps, alors consultez la page des versions de GitHub pour la méthode actuelle, mais les chemins typiques ressemblent à ceci.
Sur macOS avec Homebrew :
brew install curlie
Avec Go installé :
go install github.com/rs/curlie@latest
Ou téléchargez le binaire pour votre plateforme depuis la page des versions et déplacez-le dans votre PATH :
# exemple : placez le binaire téléchargé quelque part sur votre PATH
mv curlie /usr/local/bin/
curlie --version
Vous devez avoir curl disponible sur le système, puisque curlie l'appelle. Sur macOS et la plupart des distributions Linux, curl est déjà présent.
Utilisation de base
La syntaxe vous semblera familière si vous avez déjà utilisé HTTPie. Une requête GET est aussi courte que l'URL :
curlie httpbin.org/get
curlie suppose GET si vous ne nommez pas de méthode, et il remplit http:// si vous omettez le schéma. La réponse s'affiche avec des en-têtes colorisés et un JSON formaté.
Pour envoyer du JSON, utilisez des paires clé=valeur. curlie définit l'en-tête Content-Type: application/json et construit le corps pour vous :
curlie POST httpbin.org/post name=apidog role=platform
Ceci envoie {"name": "apidog", "role": "platform"} comme corps de la requête. Ajoutez un en-tête avec la forme En-tête:valeur et un paramètre de requête avec param==valeur :
curlie GET httpbin.org/get \
Authorization:"Bearer token123" \
search==apidog
Puisque curl s'exécute en dessous, vous pouvez mélanger des drapeaux natifs chaque fois que la syntaxe courte n'est pas suffisante :
curlie -v --max-time 5 httpbin.org/get
Le drapeau -v est une bonne habitude à prendre. Il affiche les en-têtes de requête et de réponse, afin que vous puissiez confirmer exactement ce qui a été envoyé. Si vous souhaitez une révision plus approfondie de l'outil sous-jacent, le guide de l'API REST de curl couvre les drapeaux bruts que curlie enveloppe.
curlie vs curl vs HTTPie
Les trois envoient des requêtes HTTP depuis le terminal. La différence réside dans la syntaxe, la sortie et ce qui s'exécute en dessous.
| Aspect | curl | HTTPie | curlie |
|---|---|---|---|
| Moteur | libcurl | Python (style requests) | curl (l'enveloppe) |
| Syntaxe | Basée sur des drapeaux (-X, -H, -d) |
Compacte (clé=valeur) |
Compacte, style HTTPie |
| Sortie | Brute, non formatée | Colorisée, JSON joliment imprimé | Colorisée, JSON joliment imprimé |
| Installation | Préinstallé presque partout | Package Python | Binaire Go unique |
| Drapeaux curl natifs | Oui | Non | Oui (transmis) |
| Dépendances | Aucune | Environnement d'exécution Python | Binaire curl |
| Conçu pour | Scripting et appels ad-hoc | Appels ad-hoc conviviaux | Appels ad-hoc conviviaux |
Le résumé honnête : HTTPie et curlie résolvent le même problème de lisibilité et d'ergonomie de différentes manières. HTTPie est une réimplémentation complète en Python avec son propre ensemble de fonctionnalités. curlie est un mince wrapper qui vous garde sur curl. Si votre équipe standardise sur les drapeaux curl ou si vous souhaitez un accès direct à toutes les options de curl, curlie s'intègre parfaitement. Si vous préférez la surface de fonctionnalités plus large de HTTPie et que la dépendance Python ne vous dérange pas, HTTPie est un excellent choix. Notre tutoriel HTTPie explore cet outil en profondeur, et si vous hésitez entre les deux, la comparaison curl-to-HTTPie cartographie la syntaxe des deux.
Pour un aperçu plus large des options de terminal et d'interface graphique au-delà de ces trois, consultez notre récapitulatif des alternatives à curl pour les tests d'API REST.
Quand curlie est le bon outil, et quand il ne l'est pas
curlie excelle pour les tâches rapides et interactives :
- Vérifier si un point de terminaison est actif et renvoie la forme attendue.
- Examiner visuellement une réponse JSON sans la passer par
jqpour la lire. - Déboguer les en-têtes et l'authentification pendant le développement.
- Enseigner ou démontrer HTTP, puisque
-vmontre la vraie requête.
Là où il cesse d'être utile, c'est pour tout ce qui doit être répété, partagé ou vérifié automatiquement. curlie n'a pas de concept de requêtes enregistrées. Il n'y a pas d'environnements à basculer entre la préproduction et la production. Il n'y a pas d'assertions pour vérifier qu'un code de statut est 200 ou qu'un champ est égal à une valeur attendue. Il n'y a pas de rapport si quelque chose se casse à 3 heures du matin dans votre pipeline.
Ce n'est pas une critique de curlie. C'est un outil ad-hoc qui fait bien son travail ad-hoc. Mais dès que vous vous surprenez à coller la même commande curlie dans un document, ou à la copier dans un script shell avec des vérifications grep écrites à la main, vous avez dépassé ce qu'un client interactif est censé faire.
Le chemin de mise à niveau : des appels ponctuels à un flux de travail enregistré et reproductible
C'est là que le flux de travail se sépare naturellement. Continuez à utiliser curlie pour l'exploration. Quand une requête doit être sauvegardée quelque part, être réutilisée ou s'exécuter en CI, déplacez-la vers une plateforme conçue pour cela.

Apidog est la couche de persistance et de collaboration pour cette transition exacte. Ce n'est pas un remplacement direct de curlie dans le terminal ; c'est l'étape suivante après le terminal. Avec Apidog, vous pouvez :
- Enregistrer les requêtes dans des collections organisées au lieu de les retaper ou de les chercher dans l'historique du shell.
- Gérer les environnements afin que la même requête s'exécute contre des environnements locaux, de staging et de production en changeant une variable.
- Ajouter des assertions qui vérifient les codes de statut, les champs de réponse et le schéma, transformant une vérification manuelle en une vérification automatique.
- Exécuter des tests en CI avec
apidog run, l'exécuteur en ligne de commande qui exécute vos scénarios de test enregistrés dans un pipeline et signale la réussite ou l'échec. - Partager avec votre équipe via un espace de travail collaboratif, de sorte qu'une requête que vous avez déboguée une fois devienne quelque chose que tout le monde peut réutiliser.
Un modèle pratique : explorez un point de terminaison avec curlie jusqu'à ce que vous le compreniez, puis recréez-le comme une requête enregistrée dans Apidog avec des assertions attachées. L'exploration reste rapide et jetable. La vérification devient durable et automatisée. Si vous formalisez la façon dont votre équipe valide les points de terminaison, le guide de test d'API couvre les concepts derrière les assertions et les scénarios de test.
Questions fréquemment posées
curlie remplace-t-il curl ?
Pas exactement. curlie fonctionne au-dessus de curl, c'est donc plus une porte d'entrée plus conviviale qu'un remplacement. Il traduit une syntaxe compacte en appels curl et formate la sortie. curl lui-même reste le moteur, et chaque drapeau curl natif fonctionne toujours via curlie.
curlie fonctionne-t-il dans les pipelines CI/CD ?
Vous pouvez appeler curlie dans un script, mais il n'est pas conçu pour les tests automatisés. Il n'a pas d'assertions, pas de scénarios de test enregistrés et pas de rapports structurés. Pour le travail en pipeline, vous voulez un exécuteur qui vérifie les réponses et fait échouer la construction lorsque quelque chose ne va pas. La commande apidog run d'Apidog remplit ce rôle, et notre liste des meilleurs clients de test d'API couvre d'autres options pour des tests reproductibles et compatibles CI.
En quoi curlie est-il différent de HTTPie ?
Ils se ressemblent car curlie copie la syntaxe et la sortie colorisée de HTTPie. La différence est le moteur. HTTPie est un outil Python autonome avec sa propre implémentation. curlie est un mince wrapper Go autour de curl, il hérite donc du comportement de curl et accepte les drapeaux curl directement. Choisissez curlie si vous voulez rester sur curl ; choisissez HTTPie si vous préférez son ensemble de fonctionnalités autonomes.
Puis-je voir la commande curl réelle que curlie exécute ?
Oui. Exécutez curlie avec le drapeau -v (verbeux) et il affichera les en-têtes de requête et de réponse ainsi que les détails de la requête sous-jacente. C'est un moyen pratique d'apprendre les drapeaux curl ou de confirmer précisément ce qui a été envoyé.
Conclusion
curlie est un petit outil intelligent : la syntaxe lisible et la sortie colorisée de HTTPie, avec curl faisant le vrai travail en dessous. Pour tester des points de terminaison, lire des réponses JSON et déboguer l'authentification dans le terminal, c'est une véritable amélioration de la qualité de vie par rapport à curl brut. Rappelez-vous simplement ce que c'est. C'est un client interactif, pas un exécuteur de tests.
Lorsque vos requêtes doivent être enregistrées, partagées, assertées et exécutées en CI, c'est le signal pour passer à une couche supérieure. Téléchargez Apidog pour transformer les points de terminaison que vous explorez dans le terminal en requêtes enregistrées, environnements et tests automatisés sur lesquels toute votre équipe peut compter. Gardez curlie pour les tâches rapides, et laissez Apidog gérer le travail qui doit être répété.
