[Nom de la Pages Function]
Type de ressource : Cloudflare Pages Function (Endpoint SSR Astro / API Route)
Fichier source :src/pages/api/[endpoint].tsoufunctions/[path].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 Pages Function dans lâarchitecture SSR du site]
1.2. Objectif
Section titled â1.2. Objectifâ- [Objectif principal : ex. fournir un endpoint SSR pour le mode Preview Sanity]
- [BĂ©nĂ©fice pour lâarchitecture : ex. exĂ©cution Edge sans infrastructure serveur dĂ©diĂ©e]
1.3. Caractéristiques
Section titled â1.3. CaractĂ©ristiquesâ| PropriĂ©tĂ© | Valeur |
|---|---|
| Type | [Endpoint API / Route SSR / Middleware] |
| Méthode HTTP | [GET / POST / PUT / DELETE / Les deux] |
| Route publique | /api/[endpoint] ou /[path] |
| Mode de rendu | SSR (Server-Side Rendering) |
| Cache | [Voir §7] |
| Authentification | [Aucune / Cookie / Token / Les deux] |
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 client] â âŒ[Cloudflare Pages] â âą Routage vers la Pages Function â âą Injection des bindings (Env) âŒ[Pages Function] â âą Validation des entrĂ©es â âą Logique mĂ©tier â âą Interaction avec les bindings (KV, R2, Queue) âŒ[Services tiers / Storage] â âą Sanity API / CRM / R2 / KV âŒ[RĂ©ponse HTTP]2.2. Composants impliquĂ©s
Section titled â2.2. Composants impliquĂ©sâ| Composant | RĂŽle | Type |
|---|---|---|
| Pages Function | Endpoint SSR | Cloudflare Pages |
| Middleware Global | Sécurité + Preview cookie | Worker L3 |
| Bindings Cloudflare | KV / R2 / Queue | Services Cloudflare |
| Astro SSR | Rendu des pages dynamiques | Framework |
3. Configuration (CODE)
Section titled â3. Configuration (CODE)â3.1. Emplacement des fichiers
Section titled â3.1. Emplacement des fichiersâ# Option 1 : Routes API Astro (recommandĂ©)src/pages/âââ api/â âââ preview.tsâ âââ exit-preview.tsâ âââ contact.ts
# Option 2 : Functions directoryfunctions/âââ api/â âââ webhook.tsâ âââ [autre-endpoint].ts3.2. Variables dâenvironnement
Section titled â3.2. Variables dâenvironnementâ| Variable | Description | Obligatoire | Valeur par dĂ©faut |
|---|---|---|---|
| [Variable] | [Description] | [â /â] | [Valeur] |
4. Implémentation (CODE)
Section titled â4. ImplĂ©mentation (CODE)â4.1. Endpoint API (TypeScript)
Section titled â4.1. Endpoint API (TypeScript)âimport type { APIRoute } from 'astro';
export const prerender = false; // SSR
export const POST: APIRoute = async ({ request }) => { const data = await request.json();
// Validation if (!data.field) { return new Response('Missing field', { status: 400 }); }
// Logique métier const result = await processSomething(data);
return new Response(JSON.stringify(result), { headers: { 'Content-Type': 'application/json' }, });};4.2. Route SSR (Astro)
Section titled â4.2. Route SSR (Astro)â---export const prerender = false; // SSR
const data = await fetchData();---
<html> <!-- Rendu SSR --></html>5. Contrats dâEntrĂ©e/Sortie (SPEC)
Section titled â5. Contrats dâEntrĂ©e/Sortie (SPEC)â5.1. Inputs (RequĂȘte HTTP)
Section titled â5.1. Inputs (RequĂȘte HTTP)â| ParamĂštre | Type | Source | Validation |
|---|---|---|---|
body |
object |
Request body | Validation Zod |
headers |
Headers |
Request headers | Validation des en-tĂȘtes |
5.2. Outputs (Réponse HTTP)
Section titled â5.2. Outputs (RĂ©ponse HTTP)â| Code HTTP | Condition | Description |
|---|---|---|
| 200 | SuccÚs | Opération réussie |
| 400 | Erreur client | RequĂȘte invalide |
| 500 | Erreur serveur | Erreur interne |
6. Tests attendus (TEST)
Section titled â6. Tests attendus (TEST)â6.1. Tests unitaires
Section titled â6.1. Tests unitairesâ| ScĂ©nario | Description | RĂ©sultat attendu |
|---|---|---|
| Endpoint valide | RequĂȘte valide | RĂ©ponse 200 |
| Validation | RequĂȘte invalide | Erreur 400 |
6.2. Tests dâintĂ©gration
Section titled â6.2. Tests dâintĂ©grationâ| ScĂ©nario | DĂ©pendances | Description | RĂ©sultat attendu |
|---|---|---|---|
| Flux complet | Bindings + Services | Opération end-to-end | SuccÚs |
7. IntĂ©gration (INTĂG)
Section titled â7. IntĂ©gration (INTĂG)â7.1. IntĂ©gration avec les composants
Section titled â7.1. IntĂ©gration avec les composantsâ| Composant | Type | RĂŽle | MĂ©thode dâintĂ©gration |
|---|---|---|---|
| Astro | L2 | Rendu SSR | Route Astro |
| Middleware | L3 | Sécurité | Cookie/header |
7.2. Points dâattention
Section titled â7.2. Points dâattentionâ- Le mode SSR doit ĂȘtre explicitement configurĂ©
- Les bindings doivent ĂȘtre accessibles
- Le cache doit ĂȘtre configurĂ© correctement
7.3. Vérification de cohérence
Section titled â7.3. VĂ©rification de cohĂ©renceâ- La fonction se dĂ©ploie correctement
- Les bindings sont accessibles
- Les tests passent
8. Sécurité
Section titled â8. SĂ©curitĂ©â8.1. MĂ©canismes de sĂ©curitĂ©
Section titled â8.1. MĂ©canismes de sĂ©curitĂ©â- â Validation des entrĂ©es
- â Middleware global
- â HTTPS forcĂ©
8.2. RÚgles de sécurité
Section titled â8.2. RĂšgles de sĂ©curitĂ©â- â Valider toutes les entrĂ©es
- â Ne jamais exposer de secrets
- â Utiliser les en-tĂȘtes de sĂ©curitĂ©
9. Performance et limites
Section titled â9. Performance et limitesâ9.1. StratĂ©gie de cache
Section titled â9.1. StratĂ©gie de cacheâ| Mode | Cache | Description |
|---|---|---|
| SSR | Edge | Mis en cache par Cloudflare |
9.2. Limitations
Section titled â9.2. Limitationsâ- â SSR plus lent que SSG
- â Limitations CPU/memory
10. Débogage et troubleshooting
Section titled â10. DĂ©bogage et troubleshootingâ10.1. ProblĂšmes courants
Section titled â10.1. ProblĂšmes courantsâ| SymptĂŽme | Cause probable | Solution |
|---|---|---|
| Fonction non appelée | Route incorrecte | Vérifier le chemin |
| Binding inaccessible | Configuration manquante | Vérifier wrangler.toml |
10.2. Commandes de debug
Section titled â10.2. Commandes de debugâ# Build localnpm run build
# Previewnpm run preview11. Bonnes pratiques
Section titled â11. Bonnes pratiquesâ11.1. Architecture
Section titled â11.1. Architectureâ- â SĂ©parer les endpoints par fonctionnalitĂ©
- â Valider toutes les entrĂ©es
- â GĂ©rer les erreurs
11.2. Code
Section titled â11.2. Codeâ- â TypeScript strict
- â Logs structurĂ©s
- â Documentation
12. Ăvolutions et roadmap
Section titled â12. Ăvolutions et roadmapâ12.1. AmĂ©liorations planifiĂ©es
Section titled â12.1. AmĂ©liorations planifiĂ©esâ- [Ăvolution 1]
- [Ăvolution 2]
12.2. Limitations connues
Section titled â12.2. Limitations connuesâ- â [Limitation 1]
- â [Limitation 2]
13. Ressources liées
Section titled â13. Ressources liĂ©esâ- Documentation Cloudflare : Pages Functions
14. Historique des modifications
Section titled â14. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| YYYY-MM-DD | 1.0 | Création initiale | [Nom] |