DEV Community

Cover image for curlie : Le client HTTP hybride curl et HTTPie expliqué
Antoine Laurent
Antoine Laurent

Posted on • Originally published at apidog.com

curlie : Le client HTTP hybride curl et HTTPie expliqué

Si vous vivez dans votre terminal mais que vous trouvez la syntaxe de curl verbeuse et sa sortie difficile à lire, curlie est un bon compromis. C’est un client HTTP en ligne de commande qui enveloppe curl et reprend la syntaxe plus lisible ainsi que la sortie colorisée de HTTPie. Vous gardez donc la puissance de curl, avec une expérience plus pratique pour tester rapidement des API.

Essayez Apidog aujourd’hui

Qu’est-ce que curlie exactement ?

curlie est une interface plus ergonomique pour curl. Il ne réimplémente pas HTTP : il analyse une commande au style HTTPie, construit l’appel curl correspondant, puis délègue l’exécution au binaire curl installé sur votre machine.

curlie

En pratique, cela signifie que vous obtenez :

  • une syntaxe plus courte pour les requêtes courantes ;
  • une sortie colorisée ;
  • du JSON formaté automatiquement ;
  • la compatibilité avec les options natives de curl.

Cette architecture est importante : comme curl reste le moteur réseau, curlie hérite de sa gestion TLS, de son comportement avec les proxys, de ses protocoles et de ses nombreux drapeaux.

Le projet est distribué comme un binaire Go unique, maintenu sur GitHub. Il n’y a pas de runtime Python à installer, pas de plugins, ni de configuration complexe.

En résumé : utilisez curlie pour explorer rapidement une API depuis le terminal. Pour des tests reproductibles, partagés ou exécutés en CI, il faudra passer à un outil conçu pour enregistrer des requêtes et ajouter des assertions.

Pourquoi utiliser curlie ?

curl est disponible presque partout, mais sa sortie brute n’est pas toujours agréable à lire. Le JSON arrive souvent sur une seule ligne, les en-têtes ne sont pas toujours visibles, et les options -H, -d, -X s’accumulent vite.

HTTPie améliore l’ergonomie, mais c’est un outil distinct avec son propre comportement et ses dépendances.

curlie se place entre les deux :

  • Lisible par défaut : réponses colorisées, JSON indenté, en-têtes mieux séparés.
  • Syntaxe compacte : en-têtes, paramètres et champs JSON sont plus faciles à écrire.
  • Compatible curl : les drapeaux natifs de curl peuvent être transmis directement.
  • Installation simple : un binaire unique.
  • Pratique pour apprendre curl : avec -v, vous voyez les détails de la requête réelle.

Installer curlie

curlie est disponible via des gestionnaires de paquets ou sous forme de binaire précompilé. Vérifiez toujours la page des releases GitHub pour la méthode la plus récente.

Sur macOS avec Homebrew :

brew install curlie
Enter fullscreen mode Exit fullscreen mode

Avec Go installé :

go install github.com/rs/curlie@latest
Enter fullscreen mode Exit fullscreen mode

Ou en téléchargeant le binaire pour votre plateforme :

# Exemple : placer le binaire téléchargé dans votre PATH
mv curlie /usr/local/bin/
curlie --version
Enter fullscreen mode Exit fullscreen mode

Vérifiez aussi que curl est disponible :

curl --version
Enter fullscreen mode Exit fullscreen mode

Sur macOS et la plupart des distributions Linux, curl est déjà installé.

Faire une requête GET

Une requête GET basique se limite à l’URL :

curlie httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

Si vous omettez le schéma, curlie ajoute http://. Si vous ne précisez pas de méthode, il utilise GET.

Vous pouvez aussi être explicite :

curlie GET https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

La réponse est affichée avec les en-têtes et le corps formaté, ce qui facilite l’inspection rapide d’une API.

Envoyer du JSON avec curlie

Pour envoyer un corps JSON, utilisez des paires clé=valeur :

curlie POST https://httpbin.org/post name=apidog role=platform
Enter fullscreen mode Exit fullscreen mode

Cette commande envoie un corps équivalent à :

{
  "name": "apidog",
  "role": "platform"
}
Enter fullscreen mode Exit fullscreen mode

curlie définit automatiquement le type de contenu approprié pour ce cas d’usage.

Ajouter des en-têtes

Pour ajouter un en-tête HTTP, utilisez la forme Nom:valeur :

curlie GET https://httpbin.org/get Authorization:"Bearer token123"
Enter fullscreen mode Exit fullscreen mode

Exemple avec plusieurs en-têtes :

curlie GET https://httpbin.org/get \
  Authorization:"Bearer token123" \
  Accept:"application/json"
Enter fullscreen mode Exit fullscreen mode

C’est plus court que la forme curl équivalente :

curl -H "Authorization: Bearer token123" \
     -H "Accept: application/json" \
     https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

Ajouter des paramètres de requête

Les paramètres de query string s’écrivent avec == :

curlie GET https://httpbin.org/get search==apidog page==1
Enter fullscreen mode Exit fullscreen mode

Cela produit une URL équivalente à :

https://httpbin.org/get?search=apidog&page=1
Enter fullscreen mode Exit fullscreen mode

Vous pouvez combiner paramètres, en-têtes et méthode :

curlie GET https://httpbin.org/get \
  Authorization:"Bearer token123" \
  search==apidog \
  page==1
Enter fullscreen mode Exit fullscreen mode

Utiliser les options natives de curl

Comme curlie s’appuie sur curl, vous pouvez transmettre des options natives quand la syntaxe courte ne suffit pas.

Exemple avec un timeout :

curlie --max-time 5 https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

Exemple avec le mode verbeux :

curlie -v https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

Le mode -v est utile pour vérifier :

  • les en-têtes envoyés ;
  • les en-têtes reçus ;
  • la négociation TLS ;
  • les détails de la requête exécutée.

Si vous voulez approfondir l’outil sous-jacent, le guide de l’API REST avec curl couvre les options brutes que curlie enveloppe.

curlie vs curl vs HTTPie

Les trois outils permettent d’envoyer des requêtes HTTP depuis le terminal. Leur différence principale se situe dans la syntaxe, la lisibilité de la sortie et le moteur utilisé.

Aspect curl HTTPie curlie
Moteur libcurl Python curl
Syntaxe Basée sur des drapeaux (-X, -H, -d) Compacte (clé=valeur) Compacte, style HTTPie
Sortie Brute Colorisée, JSON formaté Colorisée, JSON formaté
Installation Préinstallé presque partout Package Python Binaire Go unique
Drapeaux curl natifs Oui Non Oui
Dépendances Aucune Runtime Python Binaire curl
Usage principal Scripting et appels ad-hoc Appels ad-hoc lisibles Appels ad-hoc lisibles avec moteur curl

Choisissez curlie si :

  • vous utilisez déjà curl ;
  • vous voulez une sortie plus lisible ;
  • vous voulez garder l’accès aux options natives de curl ;
  • vous préférez un binaire unique sans runtime Python.

Choisissez HTTPie si vous préférez son écosystème et ses fonctionnalités propres. Le tutoriel HTTPie détaille cet outil, et la comparaison curl-to-HTTPie montre comment passer d’une syntaxe à l’autre.

Pour une vue plus large des alternatives en terminal et avec interface graphique, consultez aussi les alternatives à curl pour les tests d’API REST.

Quand utiliser curlie ?

curlie est adapté aux tâches rapides :

  • vérifier qu’un endpoint répond ;
  • inspecter une réponse JSON ;
  • tester un header d’authentification ;
  • reproduire un appel API pendant le développement ;
  • comprendre le comportement d’une requête HTTP avec -v.

Exemple typique pendant le debug :

curlie -v GET https://api.example.com/users/123 \
  Authorization:"Bearer $TOKEN" \
  Accept:"application/json"
Enter fullscreen mode Exit fullscreen mode

Si la réponse est incorrecte, vous pouvez rapidement modifier les en-têtes, les paramètres ou le corps, puis relancer la commande.

Quand curlie n’est plus suffisant ?

curlie devient limité dès que la requête doit être :

  • sauvegardée ;
  • partagée avec l’équipe ;
  • rejouée régulièrement ;
  • exécutée dans un pipeline CI/CD ;
  • validée avec des assertions ;
  • documentée dans un workflow API.

Par exemple, cette commande est pratique en local :

curlie POST https://api.example.com/users \
  Authorization:"Bearer $TOKEN" \
  name="Alice" \
  role="admin"
Enter fullscreen mode Exit fullscreen mode

Mais si vous devez vérifier automatiquement que :

  • le statut HTTP est 201 ;
  • le champ id existe ;
  • le champ role vaut admin ;
  • le schéma de réponse reste stable ;

alors un simple appel terminal ne suffit plus.

Vous pourriez écrire un script shell avec grep, jq et des conditions, mais cela devient vite fragile et difficile à maintenir.

Passer des appels ponctuels à un workflow reproductible

Le workflow recommandé est simple :

  1. Explorez l’endpoint avec curlie.
  2. Stabilisez les paramètres, headers et payloads.
  3. Enregistrez la requête dans un outil collaboratif.
  4. Ajoutez des assertions.
  5. Exécutez les tests en CI si nécessaire.

workflow Apidog

Apidog sert précisément à cette étape après le terminal. Il ne remplace pas curlie pour l’exploration rapide ; il permet de transformer une requête utile en artefact réutilisable.

Avec Apidog, vous pouvez :

  • enregistrer les requêtes dans des collections organisées ;
  • gérer plusieurs environnements comme local, staging et production ;
  • ajouter des assertions sur les codes HTTP, les champs de réponse et les schémas ;
  • exécuter des tests en CI avec apidog run ;
  • partager les requêtes avec l’équipe dans un espace collaboratif.

Un workflow concret :

# 1. Exploration rapide dans le terminal
curlie POST https://api.example.com/login \
  email=user@example.com \
  password=secret
Enter fullscreen mode Exit fullscreen mode

Ensuite :

  1. recréez cette requête dans Apidog ;
  2. remplacez l’URL et les secrets par des variables d’environnement ;
  3. ajoutez une assertion sur le statut 200 ;
  4. ajoutez une assertion sur la présence du token ;
  5. utilisez cette requête dans un scénario de test.

Pour formaliser votre stratégie de validation, le guide de test d’API explique les concepts derrière les assertions et les scénarios.

Questions fréquentes

curlie remplace-t-il curl ?

Pas exactement. curlie fonctionne au-dessus de curl. Il traduit une syntaxe plus compacte en appel curl et formate la sortie. curl reste le moteur réseau.

curlie fonctionne-t-il dans les pipelines CI/CD ?

Vous pouvez appeler curlie dans un script, mais ce n’est pas son cas d’usage principal. Il ne fournit pas d’assertions, de scénarios enregistrés ni de rapports structurés.

Pour un pipeline, utilisez plutôt un exécuteur capable de faire échouer le build si une réponse ne respecte pas les attentes. La commande apidog run d’Apidog couvre ce besoin, et cette liste des meilleurs clients de test d’API présente d’autres options compatibles avec des workflows reproductibles.

En quoi curlie est-il différent de HTTPie ?

Les deux se ressemblent côté syntaxe et affichage. La différence principale est le moteur :

  • HTTPie est un outil autonome en Python.
  • curlie est un wrapper Go autour de curl.

Choisissez curlie si vous voulez rester proche de curl. Choisissez HTTPie si vous préférez son modèle autonome.

Peut-on voir la requête réelle exécutée ?

Oui. Utilisez le mode verbeux :

curlie -v https://httpbin.org/get
Enter fullscreen mode Exit fullscreen mode

C’est utile pour confirmer les en-têtes, diagnostiquer l’authentification ou comprendre ce que curlie transmet à curl.

Conclusion

curlie améliore nettement l’expérience de curl pour les appels HTTP ad-hoc : syntaxe plus courte, sortie colorisée, JSON lisible et accès aux options natives de curl.

Utilisez-le pour explorer, déboguer et comprendre rapidement une API depuis le terminal. Dès qu’une requête doit être enregistrée, partagée, testée avec des assertions ou exécutée en CI, passez à un workflow plus structuré.

Téléchargez Apidog pour transformer les endpoints explorés dans le terminal en requêtes enregistrées, environnements et tests automatisés. Gardez curlie pour les vérifications rapides, et utilisez Apidog pour ce qui doit être répété.

Top comments (0)