Skip to content

Type de ressource : Route Astro (Page SSG / Page SSR / Endpoint API)
Fichier source : src/pages/[chemin].astro ou src/pages/api/[endpoint].ts
Statut : [Actif / Déprécié / En développement]
Slice : [Numéro de la tranche verticale]
Version : 1.0


[Description concise du rîle de cette route dans l’architecture du site]

  • [Objectif principal : ex. afficher la liste des articles de blog]
  • [BĂ©nĂ©fice pour l’utilisateur final]
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]

[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]
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)

src/pages/[chemin].astro
---
import BaseLayout from '../layouts/BaseLayout.astro';
import { getSanityClient } from '../lib/sanity';
import type { [TypeName] } from '../types/sanity';
// Configuration du rendu
export 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ées
const { 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 404
if (!data) {
return Astro.redirect('/404');
}
---
<BaseLayout title={data.title} description={data.seo?.metaDescription}>
<!-- Contenu de la page -->
</BaseLayout>
*[_type == "[type]" && slug.current == $slug][0]{
...,
author->{name, image},
categories[]->{title, slug}
}

ParamĂštre Type Source Validation
slug string URL params Format valide
query string Query string Validation Zod
ÉlĂ©ment Type Description
title string Titre de la page
description string Meta description
content object Données du contenu
Code Condition Description
200 SuccĂšs Page rendue correctement
404 Non trouvé Redirection vers /404
500 Erreur serveur Erreur interne

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
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
Scénario Parcours utilisateur Description Résultat attendu
Navigation Utilisateur → Route AccĂšs Ă  la page Page affichĂ©e correctement

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
  • 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
  • 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

  • ✅ Middleware Cloudflare applique les CSP
  • ✅ Validation des paramĂštres d’URL
  • ✅ Protection contre les injections XSS
  • ✅ 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

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é
  • ❌ SSG : rĂ©gĂ©nĂ©ration requise pour mise Ă  jour
  • ❌ SSR : plus lent que SSG

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
Terminal window
# Build local
npm run build
# Preview du build
npm run preview

  • ✅ Utiliser des layouts pour la cohĂ©rence
  • ✅ SĂ©parer la logique de donnĂ©es du rendu
  • ✅ Typer toutes les donnĂ©es avec TypeScript
  • ✅ GĂ©rer les erreurs avec try/catch
  • ✅ Utiliser des composants rĂ©utilisables
  • ✅ Optimiser les images et les assets
  • ✅ Documenter les changements dans ce fichier
  • ✅ Tester les modifications en local avant dĂ©ploiement

  • [Évolution 1]
  • [Évolution 2]
  • ❌ [Limitation 1]
  • ❌ [Limitation 2]

  • Documentation Astro : Routing
  • DAT L2 : §5 - Architecture et Structure du Projet
  • Layouts concernĂ©s : [Liste]
  • Composants utilisĂ©s : [Liste]

Date Version Description Auteur
YYYY-MM-DD 1.0 Création initiale [Nom]
Edit page

Last updated: