Séance 3 : Communication avec API
🎯 Objectifs
Appeler une API externe.
Gérer erreurs, loaders et services dédiés.
📖 Partie théorique
Architecture client/serveur
Vue/Nuxt côté client, API côté serveur.
Communication via HTTP (REST, JSON, voire GraphQL).
Fetch API vs Axios
Fetch
fetch: natif, simple, mais moins de fonctionnalités.
Exemple :
fetch('http://localhost:3001/tasks')
.then(response => response.json())
.then(data => {
console.log(data);
});Axios
axios: plus complet, gestion des interceptors, requêtes simplifiées.
Exemple :
Gestion des erreurs
Utilisation de
try/catchpour capturer les erreurs réseau ou API.
Exemple avec Fetch :
Dans cet exemple, si la requête échoue (problème réseau, serveur indisponible, etc.), le bloc catch permet d’afficher un message d’erreur à l’utilisateur.
Exemple simple en Vue.js :
Cet exemple affiche un message d’erreur à l’utilisateur si la récupération des tâches échoue.
Loaders
Pour afficher un loader pendant l'appel à l'API, il suffit d'ajouter une variable d'état isLoading et de l'utiliser dans le template :
Ici, le loader s'affiche tant que la requête est en cours (isLoading à true), puis disparaît dès que la réponse est reçue ou qu'une erreur survient.
Services dédiés
Création d'un service API pour centraliser les appels HTTP.
📝 Travaux pratiques
Étape 1 : Installation de JSON Server
JSON Server permet de créer une API REST complète à partir d'un simple fichier JSON.
Installation :
Étape 2 : Création du fichier de données
Créer db.json à la racine du projet :
Étape 3 : Configuration et démarrage de JSON Server
Ajouter les scripts dans package.json :
Pour exécuter simultanément Vue et l'API :
Étape 4 : URLs disponibles
Une fois JSON Server démarré sur le port 3001, les endpoints suivants sont disponibles :
Endpoints automatiques :
Paramètres de requête supportés :
Étape 5 : Appels API dans Vue
Utilisez ces API pour lier vos tâches dans votre application Vue.
Gérez les états de chargement et d'erreur avec des loaders et des messages.
Créez des services dédiés pour organiser vos appels API.
Last updated