Strapi & Astro
Strapi est un CMS Headless open-source et personnalisable.
Intégration avec Astro
Ce guide va construire une fonction wrapper pour connecter Strapi avec Astro.
Prérequis
Pour commencer, vous devez disposer des éléments suivants :
- Un projet Astro - Si vous n’avez pas encore de projet Astro, notre Guide d’installation vous permettra d’être opérationnel en un rien de temps.
- Un serveur CMS Strapi - Vous pouvez configurer un serveur Strapi dans un environnement local.
Ajouter l’URL de Strapi dans .env
Pour ajouter votre URL Strapi à Astro, créez un fichier .env
à la racine de votre projet (s’il n’existe pas déjà) et ajoutez la variable suivante :
Vous pouvez maintenant utiliser cette variable d’environnement dans votre projet Astro.
Si vous voulez avoir IntelliSense pour votre variable d’environnement, vous pouvez créer un fichier env.d.ts
dans le répertoire src/
et configurer ImportMetaEnv
comme ceci :
Votre répertoire racine devrait maintenant contenir le(s) nouveau(x) fichier(s) :
Répertoiresrc/
- …
- env.d.ts
- .env
- astro.config.mjs
- package.json
Création de l’API wrapper
Créez un nouveau fichier lib/strapi.ts
et ajoutez la fonction wrapper suivante pour interagir avec l’API Strapi :
Cette fonction nécessite un objet ayant les propriétés suivantes :
endpoint
- Le point d’accès que vous récupérez.query
- Les paramètres de requête à ajouter à la fin de l’URLwrappedByKey
- La clédata
dans l’objet qui enveloppe votreResponse
.wrappedByList
- Un paramètre pour “déballer” la liste retournée par Strapi, et ne retourner que le premier élément.
Facultatif : Création de l’interface Article
Si vous utilisez TypeScript, créez l’interface Article suivante pour correspondre aux types de contenu Strapi dans src/interfaces/article.ts
:
Vous pouvez modifier cette interface, ou en créer plusieurs, pour qu’elle corresponde à vos propres données de projet.
Répertoiresrc/
- …
Répertoireinterfaces/
- …
- article.ts
Répertoirelib/
- …
- strapi.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
Affichage d’une liste d’articles
-
Mettez à jour votre page d’accueil
src/pages/index.astro
pour afficher une liste d’articles de blog, chacun avec une description et un lien vers sa propre page. -
Importez la fonction wrapper et l’interface. Ajoutez l’appel API suivant pour récupérer vos articles et renvoyer une liste :
L’appel API demande des données à http://localhost:1337/api/articles
et renvoie articles
: un tableau d’objets json représentant vos données :
- En utilisant les données du tableau
articles
renvoyé par l’API, affichez les articles de votre blog Strapi dans une liste. Ces articles seront liés à leur propre page individuelle, que vous allez créer à l’étape suivante.
Générer des pages d’articles
Créez le fichier src/pages/blog/[slug].astro
pour générer dynamiquement une page pour chaque article.
Répertoiresrc/
- …
Répertoireinterfaces/
- …
- article.ts
Répertoirelib/
- …
- strapi.ts
Répertoirepages/
- …
- index.astro
Répertoireblog/
- …
- [slug].astro
- env.d.ts
- .env
- astro.config.mjs
- package.json
Génération du site statique
Dans le mode statique par défaut d’Astro (SSG), utilisez getStaticPaths()
(EN) pour récupérer votre liste d’articles à partir de Strapi.
Créer le modèle pour chaque page en utilisant les propriétés de chaque objet post.
Veillez à choisir le bon rendu pour votre contenu. Pour le markdown, consultez notre guide du markdown. Si vous effectuez un rendu html, reportez-vous à ce guide pour plus de sécurité.
Rendu côté serveur
Si vous avez opté pour le mode SSR (EN) avec output : server
ou output : hybrid
, générez vos routes dynamiques en utilisant le code suivant :
Créez le fichier src/pages/blog/[slug].astro
:
Ce fichier va récupérer et rendre les données de la page de Strapi qui correspondent au paramètre dynamique slug
.
Puisque vous utilisez une redirection vers /404
, créez une page 404 dans src/pages
:
Si l’article n’est pas trouvé, l’utilisateur sera redirigé vers cette page 404 et sera accueilli par un adorable chat.
Publier votre site
Pour déployer votre site, consultez nos guides de déploiement et suivez les instructions de votre hébergeur préféré.
Reconstruction en cas de modifications
Si votre projet utilise le mode statique par défaut d’Astro, vous devrez configurer un webhook pour déclencher une nouvelle construction lorsque votre contenu change. Si vous utilisez Netlify ou Vercel comme hébergeur, vous pouvez utiliser sa fonctionnalité de webhook pour déclencher une nouvelle compilation à partir de Strapi.
Netlify
Pour configurer un webhook dans Netlify :
-
Allez dans le tableau de bord de votre site et cliquez sur Build & deploy.
-
Sous l’onglet Continuous Deployment, trouvez la section Build hooks et cliquez sur Add build hook.
-
Donnez un nom à votre webhook et sélectionnez la branche sur laquelle vous souhaitez déclencher la construction. Cliquez sur Save et copiez l’URL générée.
Vercel
Pour configurer un webhook dans Vercel :
-
Allez sur le tableau de bord de votre projet et cliquez sur Settings.
-
Sous l’onglet Git, trouvez la section Deploy Hooks.
-
Donnez un nom à votre webhook et indiquez la branche sur laquelle vous souhaitez déclencher la construction. Cliquez sur Add et copiez l’URL générée.
Ajouter un webhook à Strapi
Suivez le guide Strapi webhooks pour créer un webhook dans votre panneau d’administration Strapi.
Ressources officielles
- Strapi Blog Guide For React par Strapi