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/catch pour 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