En résumé
Utilisez MQTT pour les appareils IoT à batterie limitée, les réseaux peu fiables ou les modèles de messagerie pub-sub. Utilisez HTTP pour les API web/mobiles standard. MQTT utilise des en-têtes de 2 octets contre plus de 100 octets pour HTTP, ce qui le rend idéal pour les appareils contraints. Modern PetstoreAPI implémente MQTT pour les colliers de suivi d'animaux et les mangeoires intelligentes.
Introduction
Votre collier de suivi pour animaux de compagnie doit envoyer des mises à jour de localisation toutes les 5 minutes. Il fonctionne avec une pile bouton qui devrait durer 6 mois. En utilisant HTTP, la pile meurt en 2 semaines. En utilisant MQTT, elle dure les 6 mois complets.
HTTP est standard pour les API, mais il est conçu pour les navigateurs web, pas pour les appareils IoT. MQTT (Message Queuing Telemetry Transport) a été conçu pour les appareils contraints avec une bande passante limitée et des réseaux peu fiables.
Modern PetstoreAPI utilise HTTP pour les applications web et mobiles, mais MQTT pour les appareils IoT : colliers de suivi d'animaux, mangeoires intelligentes et moniteurs de santé.
Dans ce guide, vous apprendrez quand MQTT l'emporte sur HTTP, verrez des exemples réels de Modern PetstoreAPI et découvrirez comment choisir le bon protocole pour votre cas d'utilisation.
Qu'est-ce que MQTT ?
MQTT est un protocole de messagerie pub-sub léger conçu pour l'IoT.
Comment fonctionne MQTT
Les appareils publient des messages sur des sujets (topics). D'autres appareils s'abonnent à ces sujets :
Publisher (Pet Collar):
Topic: pets/019b4132/location
Payload: {"lat":37.7749,"lng":-122.4194,"battery":85}
Subscriber (Mobile App):
Subscribe to: pets/019b4132/location
Receives: {"lat":37.7749,"lng":-122.4194,"battery":85}
Le Broker MQTT se situe au milieu, acheminant les messages des éditeurs aux abonnés.
Fonctionnalités clés de MQTT
1. Petits en-têtes - MQTT : 2 octets, HTTP : 100-500 octets
2. Connexions persistantes - MQTT maintient les connexions ouvertes
3. Qualité de service (QoS) - QoS 0/1/2 pour les garanties de livraison
4. Dernier Testament (Last Will) - Message envoyé si l'appareil se déconnecte de manière inattendue
5. Messages retenus - Le Broker stocke le dernier message pour les nouveaux abonnés
Comparaison MQTT vs HTTP
| Caractéristique | MQTT | HTTP |
|---|---|---|
| Taille de l'en-tête | 2 octets | 100-500 octets |
| Modèle | Pub-Sub | Requête-Réponse |
| Connexion | Persistante | Par requête |
| Bande passante | Très faible | Plus élevée |
| Impact sur la batterie | Minimal | Important |
| Support Navigateur | Via WebSocket | Natif |
Exemple de bande passante
1000 mises à jour de localisation par jour :
- HTTP : 420 Ko par jour, 12,6 Mo par mois
- MQTT : 52 Ko par jour, 1,56 Mo par mois
MQTT utilise 8 fois moins de bande passante.
Quand MQTT l'emporte
1. Appareils IoT avec batterie limitée
Collier de suivi pour animaux :
- MQTT : 6 mois d'autonomie
- HTTP : 2 semaines d'autonomie
Pourquoi : Connexion persistante, petits en-têtes, moins de temps radio.
2. Réseaux peu fiables
Appareils IoT cellulaires avec couverture inégale :
- QoS pour une livraison garantie
- Reconnexion automatique
- Persistance de session
3. Communication de plusieurs à plusieurs
Scénario de mangeoire intelligente pour animaux :
Feeder 1 → pets/019b4132/feeding
Feeder 2 → pets/019b4127/feeding
App 1 → s'abonne à pets/+/feeding (tous les animaux)
App 2 → s'abonne à pets/019b4132/feeding (un animal)
4. Données de capteurs en temps réel
Moniteur de santé pour animaux envoyant des mises à jour chaque seconde :
- Connexion persistante (sans surcoût)
- Latence minimale
- Efficace pour les mises à jour à haute fréquence
Quand HTTP l'emporte
1. Applications web/mobiles standard
HTTP est universel :
- Chaque langage dispose de bibliothèques HTTP
- Les navigateurs le prennent en charge nativement
- Les proxies et les pare-feu l'autorisent
2. Modèles Requête-Réponse
Obtention des détails de l'animal :
GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}
HTTP est plus simple pour les requêtes-réponses.
3. Exigences de mise en cache
La mise en cache HTTP fonctionne nativement :
- Mise en cache du navigateur
- Mise en cache CDN
- Mise en cache du proxy
MQTT n'a pas de mise en cache.
4. API RESTful
Codes de statut HTTP, méthodes et sémantique :
- 200 OK, 404 Not Found, 201 Created
- GET, POST, PUT, DELETE
- Gestion standard des erreurs
Comment Modern PetstoreAPI utilise MQTT
Modern PetstoreAPI implémente MQTT pour les appareils IoT.
Colliers de suivi pour animaux
Le collier publie la localisation :
Topic: pets/019b4132/location
QoS: 1 (at least once)
Payload: {
"lat": 37.7749,
"lng": -122.4194,
"battery": 85,
"timestamp": "2026-03-13T10:30:00Z"
}
L'application mobile s'abonne :
const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');
client.subscribe('pets/019b4132/location');
client.on('message', (topic, message) => {
const location = JSON.parse(message);
updateMap(location.lat, location.lng);
});
Mangeoires intelligentes
La mangeoire s'abonne au programme :
Topic: pets/019b4132/feeding-schedule
Retained: true
Payload: {
"times": ["08:00", "18:00"],
"amount": 100
}
La mangeoire publie les événements d'alimentation :
Topic: pets/019b4132/feeding-events
Payload: {
"timestamp": "2026-03-13T08:00:15Z",
"amount": 100,
"dispensed": true
}
Moniteurs de santé
Le moniteur publie les signes vitaux :
Topic: pets/019b4132/health
QoS: 0 (fire and forget, high frequency)
Payload: {
"heartRate": 120,
"temperature": 38.5,
"activity": "resting"
}
Tester MQTT avec Apidog
Apidog prend en charge les tests MQTT en parallèle de HTTP et d'autres protocoles.
Tester MQTT Pub-Sub
- Se connecter au broker MQTT
- S'abonner aux sujets
- Publier des messages de test
- Valider le format des messages
- Tester les niveaux de QoS
Simuler des pannes de réseau
- Tester la logique de reconnexion
- Vérifier la livraison QoS 1/2
- Vérifier les messages de Dernier Testament (Last Will)
- Valider la persistance de session
Comparer avec HTTP
Tester la même fonctionnalité avec les deux protocoles :
- Mesurer l'utilisation de la bande passante
- Comparer la latence
- Vérifier la cohérence des données
Conclusion
MQTT et HTTP répondent à des objectifs différents. Utilisez MQTT pour les appareils IoT avec des ressources limitées. Utilisez HTTP pour les API web/mobiles standard.
Modern PetstoreAPI montre comment utiliser les deux : HTTP pour les API destinées aux utilisateurs, MQTT pour les appareils IoT. Le bon protocole dépend de vos contraintes, et non de celui qui est le "meilleur".
Testez les deux protocoles avec Apidog pour trouver la meilleure solution pour votre cas d'utilisation.
FAQ
MQTT peut-il fonctionner sur HTTP ?
MQTT peut fonctionner sur WebSocket, qui lui-même fonctionne sur HTTP. Cela facilite le contournement des pare-feu mais fait perdre certains avantages d'efficacité de MQTT.
Quels sont les niveaux de QoS MQTT ?
- QoS 0 : Au plus une fois (pas d'accusé de réception)
- QoS 1 : Au moins une fois (accusé de réception, peut dupliquer)
- QoS 2 : Exactement une fois (garanti, sans doublons)
MQTT est-il sécurisé ?
Oui, MQTT prend en charge le chiffrement TLS (MQTTS) et l'authentification par nom d'utilisateur/mot de passe. Modern PetstoreAPI utilise MQTTS pour tous les appareils IoT.
Les navigateurs peuvent-ils utiliser MQTT ?
Les navigateurs peuvent utiliser MQTT sur WebSocket. Des bibliothèques comme MQTT.js prennent en charge les environnements de navigateur.
Comment MQTT se compare-t-il à WebSocket ?
MQTT est un protocole qui peut fonctionner sur WebSocket. WebSocket est une couche de transport. MQTT ajoute des fonctionnalités pub-sub, QoS et spécifiques à l'IoT par-dessus WebSocket.
