[Nom de la Route]
Type de ressource : Route Astro (Page SSG / Page SSR / Endpoint API)
Fichier source :src/pages/[chemin].astroousrc/pages/api/[endpoint].ts
Statut : [Actif / Déprécié / En développement]
Slice : [Numéro de la tranche verticale]
Version : 1.0
1. Vue dâensemble (DOC)
Section titled â1. Vue dâensemble (DOC)â1.1. Description
Section titled â1.1. Descriptionâ[Description concise du rĂŽle de cette route dans lâarchitecture du site]
1.2. Objectif
Section titled â1.2. Objectifâ- [Objectif principal : ex. afficher la liste des articles de blog]
- [BĂ©nĂ©fice pour lâutilisateur final]
1.3. Caractéristiques
Section titled â1.3. CaractĂ©ristiquesâ| PropriĂ©tĂ© | Valeur |
|---|---|
| URL publique | /[chemin] |
| Mode de rendu | [SSG / SSR / Hybride] |
| Type | [Page HTML / Endpoint JSON / Redirect] |
| Méthode HTTP | [GET / POST / Les deux] |
| Authentification requise | [Oui / Non / Preview uniquement] |
| Cache | [Voir §6] |
2. Architecture et flux (DOC)
Section titled â2. Architecture et flux (DOC)â2.1. Diagramme de flux
Section titled â2.1. Diagramme de fluxâ[RequĂȘte utilisateur] â âŒ[Cloudflare Pages / Edge] â âą Middleware global (CSP, cookies) â âą Routage vers Astro âŒ[Astro Route] â âą getStaticPaths (si SSG dynamique) â âą RĂ©cupĂ©ration des donnĂ©es (Sanity / local) â âą Rendu du composant âŒ[RĂ©ponse HTML / JSON]2.2. Composants impliquĂ©s
Section titled â2.2. Composants impliquĂ©sâ| Composant | RĂŽle | Couche |
|---|---|---|
Fichier .astro ou .ts |
Définition de la route | L2 (Astro) |
getSanityClient() |
Récupération des données CMS | L2 (Astro) |
| Composants UI | Rendu visuel | L2 (Astro) |
| Layout | Structure HTML globale | L2 (Astro) |
| Middleware Cloudflare | Sécurité + Preview cookie | L3 (Cloudflare) |
3. Implémentation (CODE)
Section titled â3. ImplĂ©mentation (CODE)â3.1. Code de la route
Section titled â3.1. Code de la routeâ---import BaseLayout from '../layouts/BaseLayout.astro';import { getSanityClient } from '../lib/sanity';import type { [TypeName] } from '../types/sanity';
// Configuration du renduexport const prerender = true; // ou false pour SSR
// Génération des chemins statiques (si SSG dynamique)export async function getStaticPaths() { const client = getSanityClient(/* ... */); const items = await client.fetch(`*[_type == "[type]" && status == "published"]{ slug }`);
return items.map(item => ({ params: { slug: item.slug.current }, }));}
// Récupération des donnéesconst { slug } = Astro.params;const client = getSanityClient(Astro);const data = await client.fetch<[TypeName]>(`*[_type == "[type]" && slug.current == $slug][0]{ ..., author->{name, image}, categories[]->{title, slug}}`, { slug });
// Gestion du 404if (!data) { return Astro.redirect('/404');}---
<BaseLayout title={data.title} description={data.seo?.metaDescription}> <!-- Contenu de la page --></BaseLayout>3.2. RequĂȘtes GROQ (si applicable)
Section titled â3.2. RequĂȘtes GROQ (si applicable)â*[_type == "[type]" && slug.current == $slug][0]{ ..., author->{name, image}, categories[]->{title, slug}}4. Contrats dâEntrĂ©e/Sortie (SPEC)
Section titled â4. Contrats dâEntrĂ©e/Sortie (SPEC)â4.1. Inputs (URL / Query / Body)
Section titled â4.1. Inputs (URL / Query / Body)â| ParamĂštre | Type | Source | Validation |
|---|---|---|---|
slug |
string |
URL params | Format valide |
query |
string |
Query string | Validation Zod |
4.2. Outputs (HTML / JSON)
Section titled â4.2. Outputs (HTML / JSON)â| ĂlĂ©ment | Type | Description |
|---|---|---|
title |
string |
Titre de la page |
description |
string |
Meta description |
content |
object |
Données du contenu |
4.3. Codes de réponse
Section titled â4.3. Codes de rĂ©ponseâ| Code | Condition | Description |
|---|---|---|
| 200 | SuccĂšs | Page rendue correctement |
| 404 | Non trouvé | Redirection vers /404 |
| 500 | Erreur serveur | Erreur interne |
5. Tests attendus (TEST)
Section titled â5. Tests attendus (TEST)â5.1. Tests unitaires
Section titled â5.1. Tests unitairesâ| ScĂ©nario | Description | RĂ©sultat attendu |
|---|---|---|
| getStaticPaths | Génération des chemins | Liste de params valide |
| RĂ©cupĂ©ration donnĂ©es | RequĂȘte GROQ | DonnĂ©es typĂ©es correctement |
| Gestion 404 | Données manquantes | Redirection vers 404 |
5.2. Tests dâintĂ©gration
Section titled â5.2. Tests dâintĂ©grationâ| ScĂ©nario | DĂ©pendances | Description | RĂ©sultat attendu |
|---|---|---|---|
| Flux SSG | Sanity + Astro | Build complet | Pages générées |
| Mode preview | Middleware + Cookie | Draft affiché | Contenu draft visible |
5.3. Tests E2E
Section titled â5.3. Tests E2Eâ| ScĂ©nario | Parcours utilisateur | Description | RĂ©sultat attendu |
|---|---|---|---|
| Navigation | Utilisateur â Route | AccĂšs Ă la page | Page affichĂ©e correctement |
6. IntĂ©gration (INTĂG)
Section titled â6. IntĂ©gration (INTĂG)â6.1. IntĂ©gration avec les composants
Section titled â6.1. IntĂ©gration avec les composantsâ| Composant | Type | RĂŽle | MĂ©thode dâintĂ©gration |
|---|---|---|---|
| Layout | L2 | Structure HTML | Import et wrapper |
| Composants UI | L2 | Rendu visuel | Import et utilisation |
| getSanityClient | L2 | Données CMS | Import et appel |
| Middleware | L3 | Sécurité | Cookie/header |
6.2. Points dâattention
Section titled â6.2. Points dâattentionâ- Le mode de rendu (SSG/SSR) doit ĂȘtre configurĂ© correctement
- Les requĂȘtes GROQ doivent utiliser les projections explicites
- Le 404 doit ĂȘtre gĂ©rĂ© correctement
6.3. Vérification de cohérence
Section titled â6.3. VĂ©rification de cohĂ©renceâ- La route fonctionne en dĂ©veloppement et production
- Les données sont récupérées correctement
- Le mode preview fonctionne (si applicable)
- Les tests E2E passent
7. Sécurité
Section titled â7. SĂ©curitĂ©â7.1. MĂ©canismes de sĂ©curitĂ©
Section titled â7.1. MĂ©canismes de sĂ©curitĂ©â- â Middleware Cloudflare applique les CSP
- â Validation des paramĂštres dâURL
- â Protection contre les injections XSS
7.2. RÚgles de sécurité
Section titled â7.2. RĂšgles de sĂ©curitĂ©â- â Ne jamais exposer de donnĂ©es sensibles dans le HTML
- â Valider tous les paramĂštres dâentrĂ©e
- â Utiliser les en-tĂȘtes de sĂ©curitĂ© appropriĂ©s
8. Performance et limites
Section titled â8. Performance et limitesâ8.1. StratĂ©gie de cache
Section titled â8.1. StratĂ©gie de cacheâ| Mode | Cache | Description |
|---|---|---|
| SSG | Statique | Généré au build, servi par CDN |
| SSR | Edge | Mis en cache par Cloudflare Edge |
| Preview | Désactivé | Contenu draft non caché |
8.2. Limitations
Section titled â8.2. Limitationsâ- â SSG : rĂ©gĂ©nĂ©ration requise pour mise Ă jour
- â SSR : plus lent que SSG
9. Débogage et troubleshooting
Section titled â9. DĂ©bogage et troubleshootingâ9.1. ProblĂšmes courants
Section titled â9.1. ProblĂšmes courantsâ| SymptĂŽme | Cause probable | Solution |
|---|---|---|
| Page blanche | Erreur de rĂ©cupĂ©ration des donnĂ©es | VĂ©rifier les logs et la requĂȘte GROQ |
| 404 en production | getStaticPaths incorrect | Vérifier la génération des chemins |
| Contenu draft non visible | Cookie preview absent | Vérifier le middleware |
9.2. Commandes de debug
Section titled â9.2. Commandes de debugâ# Build localnpm run build
# Preview du buildnpm run preview10. Bonnes pratiques
Section titled â10. Bonnes pratiquesâ10.1. Architecture
Section titled â10.1. Architectureâ- â Utiliser des layouts pour la cohĂ©rence
- â SĂ©parer la logique de donnĂ©es du rendu
- â Typer toutes les donnĂ©es avec TypeScript
10.2. Code
Section titled â10.2. Codeâ- â GĂ©rer les erreurs avec try/catch
- â Utiliser des composants rĂ©utilisables
- â Optimiser les images et les assets
10.3. Maintenance
Section titled â10.3. Maintenanceâ- â Documenter les changements dans ce fichier
- â Tester les modifications en local avant dĂ©ploiement
11. Ăvolutions et roadmap
Section titled â11. Ăvolutions et roadmapâ11.1. AmĂ©liorations planifiĂ©es
Section titled â11.1. AmĂ©liorations planifiĂ©esâ- [Ăvolution 1]
- [Ăvolution 2]
11.2. Limitations connues
Section titled â11.2. Limitations connuesâ- â [Limitation 1]
- â [Limitation 2]
12. Ressources liées
Section titled â12. Ressources liĂ©esâ- Documentation Astro : Routing
- DAT L2 : §5 - Architecture et Structure du Projet
- Layouts concernés : [Liste]
- Composants utilisés : [Liste]
13. Historique des modifications
Section titled â13. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| YYYY-MM-DD | 1.0 | Création initiale | [Nom] |