Séance 7 : Nuxt & API
🎯 Objectifs
Consommer des données dans Nuxt.
Gérer l’authentification avec middleware.
📖 Partie théorique
Data fetching
Source : https://nuxt.com/docs/4.x/getting-started/data-fetching
Nuxt propose plusieurs helpers pour récupérer des données de façon déclarative et compatible SSR/SSG : useFetch et useAsyncData sont les plus courants. Ils sont auto‑importés et s'intègrent au cycle de rendu (server ou client) de Nuxt.
Principes clés :
Les appels faits pendant la phase serveur sont exécutés avant l'envoi du HTML (meilleur SEO et fast first paint).
Les helpers gèrent automatiquement l'état
pending/erroret la réhydratation côté client.Les résultats peuvent être mis en cache et revalidés (revalidation) selon la configuration.
useFetch
https://nuxt.com/docs/4.x/getting-started/data-fetching#usefetch
Exemple :
useAsyncData
https://nuxt.com/docs/4.x/getting-started/data-fetching#useasyncdata
Exemple :
Quand utiliser l'un ou l'autre
useFetch: très pratique pour des appels simples dans le setup d'un composant/page.useAsyncData: préférable si vous voulez contrôler la clé de cache, le transform ou la revalidation.
Autres utilitaires liés :
useState(): stocke un état réactif côté serveur/client (idéal pour partager une valeur entre pages sans Pinia). Exemple :
useNuxtApp().$fetchou$fetch: utilitaires pour faire des requêtes internes ou externes.
Server API (endpoints)
Nuxt offre un dossier server/api/ pour créer des endpoints server‑side. Exemple :
Puis côté client :
Bonnes pratiques et pièges courants :
Préférer
$fetch/useFetchpour les appels internes aux endpoints Nuxt (optimisations internes).Faire attention aux appels indésirables côté client (watch, effets) — utiliser
lazy: truesi nécessaire.Gérer les erreurs et l'état de chargement pour afficher des loaders ou des messages clairs.
Pour des pages statiques (SSG), vérifier si le contenu doit être revalidé (ISR-like) et configurer la revalidation via
useAsyncDataou des hooks de build.
Middleware de route
source : https://nuxt.com/docs/4.x/getting-started/routing#route-middleware
Nuxt permet de définir des middlewares pour protéger des routes (authentification, autorisation).
Ecrire le middleware dans middleware/auth.js (par exemple) :
Appliquer le middleware globalement dans
nuxt.config.tsou localement dans une page avecdefinePageMeta.
Il est aussi possible d'utiliser des modules (https://nuxt.com/modules?category=Security&sortBy=stars) pour gérer l'authentification plus facilement ou de manière plus complète, en intégrant des providers OAuth, JWT, etc.
Appel API avec un token JWT
en VueJs avec fetch
en NuxtJs avec useFetch
📝 Travaux pratiques
Reconnectér les appels API de l’application Vue 3 précédente en Nuxt.
Créer page
/login.Stocker token JWT dans Pinia/localStorage.
Protéger l'ajout d'une tâche avec middleware.
Last updated