Construirea unui backend scalabil pentru blog necesită o arhitectură bine structurată, un sistem de autentificare și API-uri documentate corespunzător. API-ul NestJS MongoDB Blog este un șablon de backend pregătit pentru producție, conceput pentru a ajuta dezvoltatorii să construiască rapid platforme de blog moderne folosind documentația NestJS, MongoDB JWT authenticationși Swagger .
Acest proiect oferă o API RESTful completă, inclusiv module pentru utilizatori, postări, categorii, etichete, comentarii, autentificare și control al accesului bazat pe roluri .
Repozitoriu: https://github.com/bfotool/nestjs-mongodb-blog-base
Ce este API-ul NestJS MongoDB pentru blog?
API -ul NestJS MongoDB Blog este un șablon backend open-source construit cu NestJS 11 și MongoDB, care oferă un API REST complet funcțional pentru bloguri.
Este conceput să servească drept fundație pentru construirea:
Platforme de bloguri
Sisteme CMS fără fir
API-uri pentru publicarea de conținut
Site-uri web de documentație
Bloguri din portofoliul dezvoltatorilor
Proiectul urmează arhitectura modulară recomandată de NestJS, asigurând scalabilitate și mentenabilitate.
Repozitoriu: https://github.com/bfotool/nestjs-mongodb-blog-base
Caracteristici cheie
Autentificare și autorizare
API-ul include un sistem de autentificare securizat care folosește token-uri JWT.
Principalele caracteristici de autentificare includ:
Token-uri de acces și actualizare JWT
Controlul accesului bazat pe roluri(RBAC)
Hashing-ul parolei cu bcrypt
Rute API protejate folosind Guards
Mecanismul de reîmprospătare a jetoanelor
Sunt acceptate trei roluri de utilizator implicite:
Administrator
Autor
Cititor
Acest lucru facilitează gestionarea permisiunilor pe diferite endpoint-uri API.
Module complete de blog
Proiectul include mai multe module complet implementate care acoperă toate funcționalitățile de bază ale blogului.
Modul de autentificare
Gestionează autentificarea și sesiunile utilizatorilor.
Punctele finale includ:
POST /auth/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Modulul Utilizatori
Gestionează conturile și profilurile utilizatorilor.
Puncte finale:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
Operațiunile de scriere necesită permisiuni de administrator .
Modulul Postări
Modulul de postări gestionează conținutul blogului.
Caracteristicile includ:
Paginare
Filtrarea după categorie, etichetă sau autor
Triere
Căutare text complet
Postări recomandate
Puncte finale:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Modulul Categorii
Organizează articolele de blog în categorii.
Puncte finale:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Modulul Etichete
Permite etichetarea flexibilă a postărilor de blog.
Puncte finale:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Modulul de comentarii
Acceptă fire de comentarii și răspunsuri imbricate.
Puncte finale:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /comments/:id
Capacități API
Paginare
Toate punctele finale ale listei acceptă paginarea.
Exemplu:
GET /posts?page=1&limit=6
Filtrare
Postările pot fi filtrate după categorie, etichetă sau autor.
Exemplu:
GET /posts?category=web-development
Căutare text complet
Funcționalitatea de căutare este implementată în postări.
Exemplu:
GET /posts?search=nestjs+mongodb
Triere
Răspunsurile API pot fi sortate după diferite câmpuri.
Exemplu:
GET /posts?sortBy=createdAt&sortOrder=desc
Generare automată de slug-uri
La crearea de postări, sistemul generează automat un slug prietenos cu URL-ul din titlu folosind slugify .
Exemplu:
Building REST APIs with NestJS
→ building-rest-apis-with-nestjs
Calculul timpului de citire
API-ul calculează automat timpul estimat de citire pe baza lungimii conținutului postărilor.
Format de răspuns API consistent
Toate răspunsurile respectă o structură standard:
{
"success": true,
"data": {},
"timestamp": "2026-01-01T10:00:00Z"
}
Acest lucru îmbunătățește integrarea și depanarea frontend-ului.
Stiva tehnologică
Backend-ul este construit folosind o stivă Node.js modernă.
| Strat | Tehnologie |
|---|---|
| Cadru | NestJS 11 |
| Limbă | TypeScript 5.7 |
| Bază de date | MongoDB 8 |
| ODM | Mangusta 8 |
| Autentificare | Passport.js + JWT |
| Validare | validator de clasă |
| Documentație API | Swagger OpenAPI |
| Securitatea parolei | bcrypt |
| Generator de melci | slugify |
| Testare | Glumă |
Structura proiectului
Proiectul urmează o arhitectură modulară.
src/
├── auth/
├── users/
├── posts/
├── categories/
├── tags/
├── comments/
├── common/
└── seed/
Componentele importante includ:
Validare DTO
Scheme de mangustă
Filtre globale de excepții
Interceptoare de răspuns
Garda JWT
Decoratori de roluri
Această structură menține baza de cod organizată și scalabilă.
Cum se instalează și se execută proiectul
Cerințe preliminare
Înainte de instalare, asigurați-vă că aveți:
Node.js 18.17+
MongoDB 6+
npm, fire sau pnpm
Clonează Repozitoriul
git clone https://github.com/bfotool/nestjs-mongodb-blog-base
cd nestjs-mongodb-blog-base
Instalați dependențe
npm install
Configurați variabilele de mediu
Copiați fișierul de mediu exemplu:
cp .env.example .env
Actualizați următoarele valori:
MONGODB_URI=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=
Seminează baza de date
Populați baza de date cu date eșantion:
npm run seed
Pentru a reseta și a reînsămânța:
npm run seed:refresh
Porniți serverul de dezvoltare
npm run start:dev
URL-ul de bază al API-ului:
http://localhost:3000/api/v1
Documentația Swagger:
http://localhost:3000/api/docs
Date implicite inițiale
Scriptul seed generează date eșantion pentru testare.
| Entitate | Conta |
|---|---|
| Utilizatori | 5 |
| Categorii | 5 |
| Etichete | 28 de ani |
| Postări | 10 |
| Comentarii | 6 |
Acreditări de conectare implicite
Parolă pentru toți utilizatorii setați:
admin123
Conturi:
| Rol | |
|---|---|
| Administrator | [email protected] |
| Autor | [email protected] |
| Autor | [email protected] |
| Autor | [email protected] |
| Cititor | [email protected] |
Documentația API-ului Swagger
Documentația API interactivă este disponibilă la:
http://localhost:3000/api/docs
Swagger oferă:
Testarea interactivă a punctelor finale
JWT authenticationsprijin
Documentația schemei de solicitare și răspuns
De ce să folosiți acest depozit
API -ul NestJS MongoDB Blog este un punct de plecare puternic pentru dezvoltatorii care construiesc un backend modern pentru bloguri.
Avantajele includ:
Arhitectură modulară NestJS curată
Autentificare încorporată și RBAC
Documentație API Swagger gata de utilizare
Integrare MongoDB folosind Mongoose
Sistem de însămânțare a bazelor de date
Structura proiectului pregătită pentru producție
Repozitoriu: https://github.com/bfotool/nestjs-mongodb-blog-base



