Modèle d'API de blog NestJS MongoDB – Backend REST complet pour blogs

La création d'un backend de blog évolutif nécessite une architecture bien structurée, un système d'authentification et des API correctement documentées. L' API de blog NestJS MongoDB est un modèle de backend prêt pour la production, conçu pour aider les développeurs à créer rapidement des plateformes de blog modernes à l'aide de NestJS, MongoDB JWT authenticationet de la documentation Swagger .

Ce projet fournit une API RESTful complète comprenant des module pour les utilisateurs, les publications, les catégories, les étiquettes, les commentaires, l'authentification et le contrôle d'accès basé sur les rôles .

Dépôt : https://github.com/bfotool/nestjs-mongodb-blog-base

Qu'est-ce que l'API NestJS MongoDB Blog ?

L' API de blog NestJS MongoDB est un modèle de backend open-source construit avec NestJS 11 et MongoDB qui fournit une API REST de blog entièrement fonctionnelle.

Il est conçu pour servir de base à la construction :

  • Plateformes de blogs

  • Systèmes de gestion de contenu sans interface graphique

  • API de publication de contenu

  • Sites Web de documentation

  • Blogs de portfolio de développeur

Le projet suit l' architecture modulaire recommandée par NestJS, garantissant ainsi l'évolutivité et la maintenabilité.

Dépôt : https://github.com/bfotool/nestjs-mongodb-blog-base

Caractéristiques principales

Authentification et autorisation

L'API inclut un système d'authentification sécurisé utilisant des jetons JWT.

Les principales fonctionnalités d'authentification comprennent :

  • Jetons d'accès et d'actualisation JWT

  • Contrôle d'accès basé sur les rôles(RBAC)

  • Hachage de mot de passe avec bcrypt

  • Routes API protégées à l'aide de gardes

  • mécanisme de rafraîchissement des jetons

Trois rôles d'utilisateur par défaut sont pris en charge :

  • Administrateur

  • Auteur

  • Lecteur

Cela facilite la gestion des autorisations sur différents points de terminaison d'API.

Module de blog complets

Le projet comprend plusieurs module entièrement implémentés qui couvrent toutes les fonctionnalités essentielles d'un blog.

Module d'authentification

Gère l'authentification et les sessions utilisateur.

Les points de terminaison comprennent :

  • POST /auth/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /auth/profile

Module Utilisateurs

Gère les comptes et profils des utilisateurs.

Points d'extrémité :

  • GET /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /users/:id

Les opérations d'écriture nécessitent des autorisations d'administrateur .

Module Articles

Le module « Articles » gère le contenu du blog.

Caractéristiques :

  • Pagination

  • Filtrage par catégorie, étiquette ou auteur

  • Tri

  • Recherche en texte intégral

  • Articles en vedette

Points d'extrémité :

  • GET /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /posts/:id

Module Catégories

Organise les articles de blog en catégories.

Points d'extrémité :

  • GET /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /categories/:id

Module d'étiquettes

Permet un système de balisage flexible pour les articles de blog.

Points d'extrémité :

  • GET /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /tags/:id

Module de commentaires

Prend en charge les fils de commentaires et les réponses imbriquées.

Points d'extrémité :

  • GET /comments/post/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /comments/:id

Capacités de l'API

Pagination

Tous les points de terminaison de liste prennent en charge la pagination.

Exemple:

GET /posts?page=1&limit=6

Filtration

Les articles peuvent être filtrés par catégorie, étiquette ou auteur.

Exemple:

GET /posts?category=web-development

Recherche en texte intégral

La fonctionnalité de recherche est implémentée sur les articles.

Exemple:

GET /posts?search=nestjs+mongodb

Tri

Les réponses de l'API peuvent être triées selon différents champs.

Exemple:

GET /posts?sortBy=createdAt&sortOrder=desc

Génération automatique de slugs

Lors de la création d'articles, le système génère automatiquement un slug compatible avec les URL à partir du titre grâce à slugify .

Exemple:

Building REST APIs with NestJS 
→ building-rest-apis-with-nestjs 

Calcul du temps de lecture

L'API calcule automatiquement le temps de lecture estimé en fonction de la longueur du contenu des articles.

Format de réponse API cohérent

Toutes les réponses suivent une structure standard :

{ 
  "success": true, 
  "data": {}, 
  "timestamp": "2026-01-01T10:00:00Z" 
} 

Cela améliore l'intégration et le débogage côté client.

Pile technologique

Le backend est construit à l'aide d'une pile Node.js moderne.

Couche Technologie
Cadre NestJS 11
Langue TypeScript 5.7
Base de données MongoDB 8
ODM Mangouste 8
Authentification Passport.js + JWT
Validation validateur de classe
Documentation de l'API Swagger OpenAPI
Sécurité des mots de passe bcrypt
Générateur de limaces slugifier
Essai Plaisanter

Structure du projet

Le projet suit une architecture modulaire.

src/ 
├── auth/ 
├── users/ 
├── posts/ 
├── categories/ 
├── tags/ 
├── comments/ 
├── common/ 
└── seed/ 

Les éléments importants comprennent :

  • Validation DTO

  • Schémas Mongoose

  • Filtres d'exception globaux

  • intercepteurs de réponse

  • Garde-fous JWT

  • décorateurs de rôle

Cette structure permet de maintenir le code source organisé et évolutif.

Comment installer et exécuter le projet

Prérequis

Avant l'installation, assurez-vous d'avoir :

  • Node.js 18.17+

  • MongoDB 6+

  • npm, yarn ou pnpm

Cloner le dépôt

git clone https://github.com/bfotool/nestjs-mongodb-blog-base 
cd nestjs-mongodb-blog-base 

Installer les dépendances

npm install

Configurer les variables d'environnement

Copiez le fichier d'environnement d'exemple :

cp .env.example .env

Mettez à jour les valeurs suivantes :

MONGODB_URI= 
JWT_ACCESS_SECRET= 
JWT_REFRESH_SECRET= 

Initialiser la base de données

Remplissez la base de données avec des exemples de données :

npm run seed

Pour réinitialiser et réensemencer :

npm run seed:refresh

Démarrer le serveur de développement

npm run start:dev

URL de base de l'API :

http://localhost:3000/api/v1

Documentation Swagger :

http://localhost:3000/api/docs

Données initiales par défaut

Le script d'amorçage génère des exemples de données pour les tests.

Entité Compter
Utilisateurs 5
Catégories 5
Étiquettes 28
Messages 10
Commentaires 6

Identifiants de connexion par défaut

Mot de passe pour tous les utilisateurs ayant reçu le mot de passe :

admin123

Comptes:

Rôle E-mail
Administrateur [email protected]
Auteur [email protected]
Auteur [email protected]
Auteur [email protected]
Lecteur [email protected]

Documentation de l'API Swagger

La documentation interactive de l'API est disponible à l'adresse suivante :

http://localhost:3000/api/docs

Swagger fournit :

  • Tests interactifs des points de terminaison

  • JWT authenticationsoutien

  • Documentation du schéma de requête et de réponse

Pourquoi utiliser ce dépôt

L' API NestJS MongoDB Blog est un point de départ puissant pour les développeurs qui créent un backend de blog moderne.

Les avantages comprennent :

  • Architecture modulaire propre de NestJS

  • Authentification et contrôle d'accès basé sur les rôles(RBAC) intégrés

  • Documentation de l'API Swagger prête à l'emploi

  • Intégration de MongoDB via Mongoose

  • système d'amorçage de base de données

  • Structure du projet prête pour la production

Dépôt : https://github.com/bfotool/nestjs-mongodb-blog-base