Skip to content

Type de ressource : Cloudflare Pages Function (Endpoint SSR Astro / API Route)
Fichier source : src/pages/api/[endpoint].ts ou functions/[path].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 Pages Function dans l’architecture SSR du site]

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

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

# Option 1 : Routes API Astro (recommandé)
src/pages/
├── api/
│ ├── preview.ts
│ ├── exit-preview.ts
│ └── contact.ts
# Option 2 : Functions directory
functions/
├── api/
│ ├── webhook.ts
│ └── [autre-endpoint].ts
Variable Description Obligatoire Valeur par défaut
[Variable] [Description] [✅/❌] [Valeur]

src/pages/api/[endpoint].ts
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' },
});
};
src/pages/[path].astro
---
export const prerender = false; // SSR
const data = await fetchData();
---
<html>
<!-- Rendu SSR -->
</html>

ParamĂštre Type Source Validation
body object Request body Validation Zod
headers Headers Request headers Validation des en-tĂȘtes
Code HTTP Condition Description
200 SuccÚs Opération réussie
400 Erreur client RequĂȘte invalide
500 Erreur serveur Erreur interne

Scénario Description Résultat attendu
Endpoint valide RequĂȘte valide RĂ©ponse 200
Validation RequĂȘte invalide Erreur 400
Scénario Dépendances Description Résultat attendu
Flux complet Bindings + Services Opération end-to-end SuccÚs

Composant Type RĂŽle MĂ©thode d’intĂ©gration
Astro L2 Rendu SSR Route Astro
Middleware L3 Sécurité Cookie/header
  • Le mode SSR doit ĂȘtre explicitement configurĂ©
  • Les bindings doivent ĂȘtre accessibles
  • Le cache doit ĂȘtre configurĂ© correctement
  • La fonction se dĂ©ploie correctement
  • Les bindings sont accessibles
  • Les tests passent

  • ✅ Validation des entrĂ©es
  • ✅ Middleware global
  • ✅ HTTPS forcĂ©
  • ✅ Valider toutes les entrĂ©es
  • ✅ Ne jamais exposer de secrets
  • ✅ Utiliser les en-tĂȘtes de sĂ©curitĂ©

Mode Cache Description
SSR Edge Mis en cache par Cloudflare
  • ❌ SSR plus lent que SSG
  • ❌ Limitations CPU/memory

SymptĂŽme Cause probable Solution
Fonction non appelée Route incorrecte Vérifier le chemin
Binding inaccessible Configuration manquante Vérifier wrangler.toml
Terminal window
# Build local
npm run build
# Preview
npm run preview

  • ✅ SĂ©parer les endpoints par fonctionnalitĂ©
  • ✅ Valider toutes les entrĂ©es
  • ✅ GĂ©rer les erreurs
  • ✅ TypeScript strict
  • ✅ Logs structurĂ©s
  • ✅ Documentation

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


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

Last updated: