Strapi est aujourd’hui l’un des CMS headless open source les plus populaires de l’écosystème JavaScript. Conçu pour les développeurs, il permet de créer rapidement des APIs robustes, sécurisées et extensibles, tout en conservant une grande liberté côté frontend. Contrairement aux CMS traditionnels, Strapi ne dicte pas la manière dont le contenu est affiché : il se concentre uniquement sur la gestion et la distribution des données via des APIs REST ou GraphQL.
Dans ce tutoriel complet, nous allons voir comment installer Strapi, configurer un projet, créer des types de contenu, sécuriser l’API et consommer les données depuis une application frontend. L’objectif est de te donner une vision claire et pratique de Strapi, utilisable en production.
1. Qu’est-ce que Strapi ?
Strapi est un CMS headless basé sur Node.js. Il fournit :
- Une interface d’administration moderne et personnalisable
- Une API REST et GraphQL générée automatiquement
- Un système de rôles et permissions avancé
- Une architecture extensible via des plugins
- Une compatibilité avec plusieurs bases de données (SQLite, PostgreSQL, MySQL, MariaDB)
Strapi est particulièrement adapté aux projets modernes : applications web (React, Vue, Angular), applications mobiles, sites statiques (Next.js, Nuxt), et architectures microservices.
2. Prérequis techniques
Avant de commencer, assure-toi d’avoir :
- Node.js (version LTS recommandée)
- npm ou yarn
- Une base de données (SQLite suffit pour le développement)
- Des bases en JavaScript et en APIs REST
3. Installation de Strapi
La manière la plus simple d’installer Strapi est d’utiliser la commande suivante :
npx create-strapi-app my-project
Tu peux ensuite choisir :
- Le type de base de données
- Le mode (quickstart ou custom)
En mode quickstart, Strapi installe automatiquement SQLite et lance le serveur.
Une fois l’installation terminée :
cd my-project
npm run develop
L’interface d’administration est accessible par défaut sur :
http://localhost:1337/admin
4. Découverte de l’interface d’administration
L’admin Strapi est le cœur du CMS. On y trouve :
- Content-Type Builder
- Content Manager
- Media Library
- Users & Permissions
- Settings
Cette interface permet de gérer tout le cycle de vie du contenu sans écrire une seule ligne de code.
5. Création d’un type de contenu
Prenons un exemple simple : un type de contenu Article.
Dans Content-Type Builder :
- Clique sur “Create new collection type”
- Nom : Article
- Champs :
- title (Text)
- slug (UID basé sur title)
- content (Rich Text)
- publishedAt (Date)
Enregistre et redémarre le serveur si nécessaire.
Strapi génère automatiquement :
- Les tables en base de données
- Les routes API
- Les contrôleurs et services
6. Gestion du contenu
Dans Content Manager :
- Crée un nouvel article
- Remplis les champs
- Publie l’entrée
Par défaut, les contenus publiés sont accessibles via l’API publique, sous réserve des permissions.
7. Comprendre l’API REST de Strapi
Pour récupérer les articles :
GET http://localhost:1337/api/articles
Réponse typique :
- data : liste des entrées
- meta : pagination
Strapi supporte nativement :
- Pagination
- Filtres
- Tri
- Relations
Exemple avec filtres :
/api/articles?filters[title][$contains]=strapi
8. Sécuriser l’API avec les rôles et permissions
Par défaut, l’API publique est très restrictive.
Dans Users & Permissions :
- Rôle : Public
- Autorise : find, findOne sur Article
Pour des usages avancés, tu peux :
- Créer des rôles personnalisés
- Restreindre champ par champ
- Gérer l’authentification JWT
Strapi fournit également un système d’authentification prêt à l’emploi.
9. Upload de fichiers et Media Library
Strapi intègre une Media Library :
- Upload d’images, vidéos, documents
- Association aux contenus
Tu peux également connecter Strapi à des services externes (S3, Cloudinary).
10. Personnalisation avec les contrôleurs et services
Strapi permet d’étendre la logique métier via :
- Controllers
- Services
- Policies
Exemple : créer un contrôleur personnalisé pour filtrer des articles selon une logique métier spécifique.
Cette approche permet de conserver une architecture claire et maintenable.
11. Utilisation de GraphQL (optionnel)
Strapi propose un plugin GraphQL officiel.
Avantages :
- Requêtes précises
- Moins de sur-fetching
- Idéal pour les frontends modernes
Une fois activé, une interface GraphQL est disponible pour tester les requêtes.
12. Consommer l’API Strapi depuis un frontend
Exemple avec fetch :
fetch('http://localhost:1337/api/articles')
.then(res => res.json())
.then(data => console.log(data));
Strapi fonctionne parfaitement avec :
- React / Next.js
- Vue / Nuxt
- Angular
- Applications mobiles
13. Déploiement en production
Pour la production :
- Utilise PostgreSQL ou MySQL
- Configure les variables d’environnement
- Active HTTPS
- Lance Strapi en mode production
npm run build
npm run start
Strapi peut être déployé sur un VPS, Docker ou une plateforme cloud.
Conclusion
Strapi est une solution puissante pour construire des APIs headless modernes, rapides à mettre en place et faciles à maintenir. Grâce à son approche orientée développeur, son extensibilité et son interface intuitive, il s’impose comme un choix stratégique pour les projets web et mobiles.
Que ce soit pour un blog, une application SaaS ou une plateforme e-commerce, Strapi offre une base solide, évolutive et prête pour la production.
Mot-clés : Strapi, CMS headless, API REST, GraphQL, Node.js, backend JavaScript
