Commandes curl essentielles que tout développeur web devrait connaître

Nouveau avec curl ? Commencez par notre guide débutant : Faire des requêtes HTTP avec curl
Lors du débogage d’API ou des tests d’endpoints, vous avez besoin d’outils rapides et fiables qui ne nécessitent pas de configuration complexe. Bien que les outils GUI comme Postman aient leur place, les commandes curl pour les développeurs web offrent une vitesse et une flexibilité inégalées pour les tests en ligne de commande. Cette référence couvre les commandes curl essentielles que vous utiliserez quotidiennement, des requêtes GET basiques aux modèles d’authentification avancés.
Points clés à retenir
- Maîtrisez d’abord les requêtes GET et POST de base—elles couvrent 80% des besoins de test d’API
- Incluez toujours les en-têtes appropriés pour Content-Type et Authorization
- Utilisez le mode verbeux (
-v
) lors du débogage de problèmes de connexion - Définissez des timeouts pour éviter que les scripts se bloquent en environnement de production
- Sauvegardez les réponses dans des fichiers pour l’analyse et la comparaison
- Suivez les redirections avec
-L
pour des chaînes de requêtes complètes - Combinez curl avec des outils comme jq pour une meilleure gestion du JSON
Commandes curl essentielles pour les tests d’API
1. Requête GET basique
La commande curl la plus simple récupère des données depuis n’importe quelle URL :
curl https://api.github.com/users/octocat
Cela retourne la réponse JSON brute. Pour une meilleure lisibilité, redirigez la sortie vers un formateur JSON :
# macOS/Linux
curl https://api.github.com/users/octocat | jq
# Windows (nécessite l'installation de jq)
curl https://api.github.com/users/octocat | jq
Quand l’utiliser : Tests rapides d’endpoints d’API, vérification que les services répondent, ou récupération de données pour des scripts.
2. Requête POST avec données JSON
Les API modernes attendent des charges utiles JSON. Voici comment les envoyer correctement :
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"John Doe","email":"john@example.com"}' \
https://api.example.com/users
Pour du JSON complexe, sauvegardez-le dans un fichier et référencez-le :
curl -X POST \
-H "Content-Type: application/json" \
-d @user-data.json \
https://api.example.com/users
Quand l’utiliser : Création de ressources, soumission de formulaires, ou test d’endpoints POST avec des données structurées.
3. Ajout d’en-têtes personnalisés
Les API nécessitent souvent des en-têtes spécifiques pour l’authentification, la négociation de contenu, ou des paramètres personnalisés :
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "User-Agent: MyApp/1.0" \
https://api.example.com/protected-resource
Quand l’utiliser : Authentification d’API, définition d’agents utilisateur, spécification de formats de réponse, ou ajout d’en-têtes d’application personnalisés.
4. Suivi des redirections
Par défaut, curl s’arrête aux redirections. Utilisez -L
pour les suivre automatiquement :
curl -L https://bit.ly/shortened-url
Limitez les sauts de redirection pour éviter les boucles infinies :
curl -L --max-redirs 5 https://example.com
Quand l’utiliser : Test d’URL raccourcies, suivi de redirections d’API, ou vérification de chaînes de redirection dans vos applications.
5. Sauvegarde de la réponse dans un fichier
Au lieu d’encombrer votre terminal, sauvegardez les réponses directement dans des fichiers :
# Sauvegarder avec le nom de fichier original
curl -O https://example.com/data.json
# Sauvegarder avec un nom de fichier personnalisé
curl -o my-data.json https://api.example.com/export
# Sauvegarder les en-têtes et le corps séparément
curl -D headers.txt -o response.json https://api.example.com/data
Quand l’utiliser : Téléchargement de fichiers, sauvegarde de réponses d’API pour analyse, ou archivage de résultats de tests.
6. Authentification basique
De nombreuses API utilisent encore l’authentification basique. Gérez-la de manière sécurisée :
curl -u username:password https://api.example.com/secure-endpoint
Pour une meilleure sécurité, laissez curl demander le mot de passe :
curl -u username https://api.example.com/secure-endpoint
Quand l’utiliser : Test d’API internes, accès aux endpoints de développement, ou travail avec des systèmes d’authentification legacy.
7. Sortie verbeuse pour le débogage
Quand les requêtes échouent ou se comportent de manière inattendue, le mode verbeux montre exactement ce qui se passe :
curl -v https://api.example.com/endpoint
Cela affiche :
- Les en-têtes de requête envoyés
- Les en-têtes de réponse reçus
- Les détails de la poignée de main SSL/TLS
- Les informations de connexion
Quand l’utiliser : Débogage de requêtes échouées, compréhension du comportement d’API, ou dépannage de problèmes SSL.
8. Définition de timeouts
Évitez les requêtes qui se bloquent en définissant des timeouts de connexion et totaux :
# Timeout de connexion de 10 secondes, timeout total de 30 secondes
curl --connect-timeout 10 --max-time 30 https://slow-api.example.com
Quand l’utiliser : Test d’endpoints lents, prévention de blocages de scripts, ou travail avec des réseaux peu fiables.
9. Soumission de données de formulaire
Pour les soumissions de formulaires traditionnelles ou les téléchargements de fichiers :
# Données de formulaire standard
curl -X POST -d "username=john&password=secret" https://example.com/login
# Téléchargement de fichier
curl -F "file=@document.pdf" -F "description=Important doc" https://example.com/upload
Quand l’utiliser : Test d’endpoints de formulaires, téléchargement de fichiers, ou travail avec des données multipart.
10. Inclusion des en-têtes de réponse
Voir à la fois les en-têtes et le corps dans la sortie :
# Inclure les en-têtes avec la réponse
curl -i https://api.example.com/endpoint
# En-têtes seulement (utile pour vérifier les codes de statut)
curl -I https://api.example.com/endpoint
Quand l’utiliser : Vérification des codes de réponse, débogage de problèmes de cache, ou examen des en-têtes d’API.
Commandes curl avancées pour les développeurs web
Travail avec les cookies
Maintenir l’état de session entre les requêtes :
# Sauvegarder les cookies dans un fichier
curl -c cookies.txt https://example.com/login
# Utiliser les cookies sauvegardés
curl -b cookies.txt https://example.com/dashboard
Configuration de proxy
Router les requêtes via des proxies pour les tests ou la sécurité :
curl --proxy http://proxy.company.com:8080 https://api.example.com
Gestion des certificats SSL
Pour les environnements de développement avec des certificats auto-signés :
# Ignorer la vérification de certificat (développement uniquement)
curl -k https://localhost:8443/api
# Utiliser un certificat CA personnalisé
curl --cacert custom-ca.pem https://secure-api.example.com
Conseils de performance et d’automatisation
Opérations par lots
Tester plusieurs endpoints efficacement :
# Plusieurs URL en une commande
curl https://api1.example.com https://api2.example.com
# Depuis un fichier
curl -K url-list.txt
Formatage de sortie
Rendre les réponses plus lisibles :
# Formatage JSON avec jq
curl -s https://api.example.com/data | jq '.'
# Extraire des champs spécifiques
curl -s https://api.example.com/users | jq '.[] | .name'
Gestion d’erreurs
Faire échouer curl silencieusement sur les erreurs HTTP pour les scripts :
curl --fail --silent https://api.example.com/endpoint || echo "Request failed"
curl vs. autres outils : quand utiliser quoi
Utilisez curl quand :
- Tests rapides en ligne de commande
- Scripts et automatisation
- Intégration de pipeline CI/CD
- Utilisation minimale des ressources système
Utilisez Postman quand :
- Collections de requêtes complexes
- Collaboration d’équipe
- Inspection visuelle des réponses
- Workflows de test avancés
Utilisez HTTPie quand :
- Syntaxe plus lisible préférée
- Tests d’API JSON-first
- Meilleur formatage par défaut
FAQ
Utilisez l'option limit-rate pour limiter les requêtes, par exemple en limitant à 200 kilooctets par seconde. Vous pouvez aussi ajouter des délais entre les requêtes dans les scripts en utilisant les commandes sleep.
Le flag -d envoie les données sous forme encodée, ce qui est le défaut pour les requêtes POST. Le flag -F envoie les données sous forme multipart, ce qui est requis lors du téléchargement de fichiers.
Oui. Pour cela, envoyez une requête POST avec une charge utile JSON qui inclut votre requête GraphQL.
Utilisez le mode verbeux pour inspecter la poignée de main SSL, ignorez temporairement la vérification de certificat si nécessaire en utilisant le flag insecure, ou spécifiez une autorité de certification personnalisée avec l'option cacert.
Pour l'authentification par token, passez l'en-tête Authorization avec votre token. Pour l'authentification basique, utilisez l'option username et password. Pour améliorer la sécurité, stockez les valeurs sensibles dans des variables d'environnement et référencez-les dans vos commandes.
Conclusion
Ces commandes curl forment l’épine dorsale des tests d’API en ligne de commande. Commencez par les requêtes GET et POST basiques, puis incorporez progressivement les en-têtes, l’authentification, et les fonctionnalités avancées selon vos besoins croissants. La clé est de développer une mémoire musculaire pour les modèles les plus courants—une fois que vous pouvez rapidement tester des endpoints depuis le terminal, vous vous retrouverez à utiliser curl constamment pendant le développement et le débogage.
Les commandes curl pour les développeurs web fournissent la base pour des tests et un débogage d’API efficaces. Ces commandes fonctionnent sur toutes les plateformes et s’intègrent parfaitement dans les workflows de développement, en faisant des outils essentiels pour la boîte à outils de tout développeur web.