Si vous avez déjà eu besoin de tester un client HTTP sans mettre en place un vrai backend, vous avez probablement rencontré httpbin. C'est un minuscule service web qui vous renvoie votre requête, afin que vous puissiez voir exactement ce que votre code a envoyé. Cela le rend parfait pour déboguer les en-têtes, vérifier comment votre client gère une erreur 500, ou confirmer que votre jeton d'authentification a bien été inclus dans la requête. Vous pouvez y pointer n'importe quel outil, d'une simple commande curl à un client complet comme Apidog. Le projet se trouve sur httpbin.org et est open source sous une licence ISC.
Qu'est-ce que httpbin ?
httpbin est un service de requêtes et de réponses HTTP. Vous lui envoyez une requête ; il vous renvoie une description JSON de cette requête. Rien de plus. Il a été créé par Kenneth Reitz, le développeur à l'origine de la populaire bibliothèque Python requests, et il est écrit en Python avec Flask.
Sa valeur réside dans sa simplicité. Supposons que vous vouliez savoir si votre client HTTP définit correctement un en-tête User-Agent. Vous accédez à https://httpbin.org/headers et la réponse liste chaque en-tête que le serveur a reçu. Pas de base de données, pas de connexion, pas de configuration. Vous obtenez un miroir clair de votre propre requête.
httpbin.org est l'instance publique, et elle est pratique pour des vérifications rapides. Elle peut aussi être lente ou brièvement indisponible, car c'est un service partagé gratuit. La maintenance a évolué au fil des ans ; le code se trouve maintenant dans le dépôt GitHub postmanlabs/httpbin, avec des forks communautaires comme celui de Kong qui circulent également. Pour tout ce que vous exécutez souvent, l'auto-hébergement est le pari le plus sûr. Plus d'informations ci-dessous.
Points de terminaison httpbin clés
httpbin expose un ensemble de points de terminaison, chacun visant un type de test. Voici ceux que vous utiliserez le plus souvent.
| Point de terminaison | Ce qu'il fait |
|---|---|
/get |
Renvoie les arguments de la requête, les en-têtes et l'adresse IP d'origine d'une requête GET |
/post |
Renvoie les données de formulaire, le corps JSON et les en-têtes que vous POSTez |
/put, /patch, /delete |
Même principe pour d'autres méthodes HTTP |
/status/{codes} |
Renvoie le code de statut que vous demandez, comme /status/404 ou /status/503 |
/headers |
Renvoie uniquement les en-têtes de requête que le serveur a vus |
/ip |
Renvoie votre adresse IP d'origine |
/user-agent |
Renvoie la chaîne User-Agent envoyée par votre client |
/delay/{n} |
Attend n secondes avant de répondre (jusqu'à 10), pour les tests de timeout |
/basic-auth/{user}/{passwd} |
Renvoie 200 uniquement si vous envoyez des identifiants Basic Auth correspondants |
/bearer |
Vérifie la présence d'un jeton Bearer dans l'en-tête Authorization |
/redirect/{n} |
Vous envoie à travers n redirections, pour tester la gestion des redirections |
/cookies |
Renvoie les cookies envoyés par votre client |
/uuid |
Renvoie un UUID aléatoire |
/anything |
Renvoie tout ce qui concerne la requête, quelle que soit la méthode utilisée |
Les points de terminaison /status/{codes} et /delay/{n} sont les héros discrets ici. Ils vous permettent de forcer des chemins d'erreur et des réponses lentes à la demande, ce qui est difficile à déclencher sur une API réelle. Si vous voulez générer de faux corps de réponse plutôt que des échos, associez httpbin à une fausse API pour les données de test.
Comment utiliser httpbin pour tester un client
La manière la plus rapide d'essayer httpbin est avec curl. Envoyez une requête GET avec un paramètre de requête :
curl "https://httpbin.org/get?tool=apidog&check=headers"
Vous obtenez en retour un objet JSON affichant les args, les headers que le serveur a reçus, et votre IP d'origin. Cela confirme que votre client a envoyé ce que vous attendiez.
Pour tester la manière dont votre code gère un corps POST, envoyez du JSON :
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"name": "widget", "qty": 3}'
httpbin renvoie le json parsé, les data brutes et les en-têtes, afin que vous puissiez vérifier que votre Content-Type et votre charge utile sont bien passés intacts.
Maintenant, forcez une erreur pour tester votre logique de nouvelle tentative :
curl -i "https://httpbin.org/status/503"
Vous obtenez une vraie réponse 503 Service Unavailable. Orientez la gestion des erreurs de votre client vers ceci et confirmez qu'il réessaie ou échoue gracieusement. Remplacez par /delay/5 pour simuler un point de terminaison lent et vérifier vos paramètres de délai d'attente.
Vous n'êtes pas obligé de rester dans le terminal. N'importe quel client REST peut accéder à ces mêmes URL. Si vous préférez un flux de travail graphique, collez https://httpbin.org/get dans Apidog, envoyez la requête et inspectez la réponse avec la coloration syntaxique, l'historique enregistré et les variables d'environnement. C'est pratique lorsque vous voulez comparer des réponses entre différents environnements ou partager un test avec un coéquipier. Pour une configuration axée sur le terminal, consultez ces clients REST API TUI.
Auto-héberger httpbin avec Docker
L'instance publique httpbin.org convient pour des vérifications ponctuelles, mais elle peut être soumise à des limites de débit ou être indisponible lorsque vous en avez besoin. Exécuter votre propre copie résout ce problème et garde votre trafic de test privé. L'image Docker officielle en fait un travail en deux commandes.
Téléchargez l'image et exécutez-la :
docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
Le service écoute maintenant sur le port 80. Accédez-y à http://localhost/get et vous obtiendrez le même comportement que le site public, sans latence réseau et sans limites de débit partagées. C'est la configuration que vous souhaitez dans les pipelines CI, où la fiabilité est importante et où vous ne voulez pas dépendre d'un service externe. L'image est publiée sur Docker Hub sous le nom kennethreitz/httpbin.
Si le port 80 est déjà utilisé sur votre machine, mappez un port hôte différent, par exemple docker run -p 8080:80 kennethreitz/httpbin, puis utilisez http://localhost:8080/get.
Alternatives à httpbin
httpbin fait bien une chose, mais ce n'est pas la seule option, et ce n'est pas une plateforme de test complète. Voici des alternatives honnêtes en fonction de vos besoins.
Postman Echo. Un service d'écho hébergé dans le même esprit que httpbin, géré par Postman. Vous accédez à https://postman-echo.com/get et votre requête vous est renvoyée en miroir. Il couvre les points de terminaison GET, POST, d'authentification et utilitaires. Consultez la documentation de Postman Echo pour la liste complète. Si httpbin.org est hors service, Echo est une alternative solide.
httpbin auto-hébergé. Comme montré ci-dessus, l'exécution de l'image Docker vous offre exactement les mêmes points de terminaison avec un contrôle total et sans limites partagées. C'est le meilleur choix lorsque vous avez besoin du comportement de httpbin au sein d'un réseau privé ou d'une tâche CI.
Services de maquette (Mock). httpbin renvoie votre requête en écho ; il ne retourne pas de données de domaine réalistes. Lorsque vous avez besoin de réponses factices mais structurées (une liste d'utilisateurs, un objet de commande, des résultats paginés), optez plutôt pour un serveur de maquette. Apidog dispose d'une fonction de maquette intelligente intégrée qui génère des réponses réalistes à partir de votre schéma, afin que votre frontend puisse se développer contre un point de terminaison avant même que le backend n'existe.
Apidog en tant que client et couche de test. httpbin est une cible à laquelle vous envoyez des requêtes. Apidog est l'outil avec lequel vous les envoyez. C'est une plateforme complète de client API et de test : concevez des points de terminaison, envoyez des requêtes, écrivez des assertions, chaînez des requêtes en scénarios et exécutez-les en CI. Vous utiliseriez Apidog pour interroger httpbin, ou pour le remplacer une fois que vos besoins dépassent un simple écho. Les deux ne sont pas équivalents ; httpbin est le petit service, Apidog est l'environnement de travail qui l'entoure. Lorsque vous êtes prêt à passer des appels curl ad-hoc à des tests enregistrés et reproductibles, Apidog vous permet d'importer vos requêtes existantes et d'ajouter des assertions. Pour un aperçu plus large des options sans installation, consultez ces outils de test d'API en ligne gratuits.
FAQ
httpbin est-il gratuit ? Oui. L'instance publique httpbin.org est gratuite et ne nécessite aucun compte. Le code source est ouvert sous licence ISC, vous pouvez donc également l'exécuter vous-même sans frais.
httpbin est-il toujours maintenu ? La base de code se trouve dans le dépôt GitHub postmanlabs/httpbin et reçoit une certaine attention continue, bien que la maintenance ait été intermittente. Comme httpbin.org peut être instable, de nombreuses équipes épinglent une copie Docker auto-hébergée pour tout ce qui est important.
Puis-je utiliser httpbin pour tester des webhooks ? Pas vraiment. httpbin renvoie en écho les requêtes que vous lui envoyez, mais il ne recevra pas un événement d'un tiers et ne le transmettra pas à votre machine locale. Pour cela, utilisez un service de tunneling ou d'inspection dédié ; consultez ce guide sur le test des API localhost et des webhooks et cette introduction sur le fonctionnement des webhooks.
Quelle est la différence entre httpbin et Postman Echo ? Ils font presque la même chose : renvoyer votre requête HTTP sous forme de JSON. httpbin est le service open-source Python et Flask original ; Postman Echo est un service hébergé par Postman. Choisissez celui qui est disponible et accessible.
Puis-je tester la gestion des erreurs avec httpbin ? Oui. Utilisez /status/{code} pour forcer n'importe quel code de statut, comme /status/500 ou /status/429, et /delay/{n} pour simuler des réponses lentes. C'est la manière la plus propre d'exercer la logique de nouvelle tentative et de délai d'attente de votre client.
Conclusion
httpbin est un petit outil précis : dirigez un client HTTP vers lui et voyez votre requête renvoyée en miroir. Utilisez /get et /post pour confirmer ce que vous envoyez, /status et /delay pour forcer des chemins d'erreur, et l'image Docker pour exécuter une copie privée en CI. Lorsque vous avez besoin de plus qu'un écho, optez pour des maquettes réalistes, des suites de tests enregistrées et des assertions.
C'est là qu'une plateforme complète est rentable. Apidog vous offre un client API pour interroger httpbin, une maquette intelligente pour le remplacer, et des tests automatisés pour verrouiller le comportement que vous venez de vérifier. Téléchargez Apidog et transformez vos vérifications rapides avec httpbin en tests reproductibles.
