„NestJS MongoDB“ tinklaraščio API šablonas – pilnai funkcionali REST posistemė tinklaraščiams

Keičiamo dydžio tinklaraščio serverio kūrimui reikalinga gerai struktūrizuota architektūra, autentifikavimo sistema ir tinkamai dokumentuotos API. „NestJS MongoDB“ tinklaraščio API yra gamybai paruoštas serverio šablonas, skirtas padėti kūrėjams greitai kurti modernias tinklaraščių platformas naudojant „NestJS“, „MongoDB“ JWT authenticationir „Swagger“ dokumentaciją .

Šis projektas teikia išsamią RESTful API sąsają, įskaitant modulius vartotojams, įrašams, kategorijoms, žymoms, komentarams, autentifikavimui ir vaidmenimis pagrįstai prieigos kontrolei .

Saugykla: https://github.com/bfotool/nestjs-mongodb-blog-base

Kas yra „NestJS MongoDB“ tinklaraščio API?

„ NestJS MongoDB“ tinklaraščio API yra atvirojo kodo šablonas, sukurtas naudojant „NestJS 11“ ir „MongoDB“, teikiantis pilnai veikiančią tinklaraščio REST API.

Jis skirtas naudoti kaip pamatas statybai:

  • Tinklaraščių platformos

  • Begalvės TVS sistemos

  • Turinio publikavimo API

  • Dokumentacijos svetainės

  • Kūrėjų portfelio tinklaraščiai

Projektas atitinka „NestJS“ rekomenduojamą modulinę architektūrą, užtikrinančią mastelio keitimą ir priežiūrą.

Saugykla: https://github.com/bfotool/nestjs-mongodb-blog-base

Pagrindinės savybės

Autentifikavimas ir autorizacija

API apima saugią autentifikavimo sistemą, naudojant JWT žetonus.

Pagrindinės autentifikavimo funkcijos apima:

  • JWT prieigos ir atnaujinimo žetonai

  • Vaidmenimis pagrįsta prieigos kontrolė(RBAC)

  • Slaptažodžių maišymas naudojant „bcrypt“

  • Apsaugoti API maršrutai naudojant apsaugas

  • Žetonų atnaujinimo mechanizmas

Palaikomi trys numatytieji naudotojų vaidmenys:

  • Administratorius

  • Autorius

  • Skaitytojas

Tai leidžia lengvai valdyti leidimus skirtinguose API galiniuose taškuose.

Pilni tinklaraščio moduliai

Projekte yra keli pilnai įdiegti moduliai, apimantys visas pagrindines tinklaraščio funkcijas.

Autentifikavimo modulis

Tvarko autentifikavimą ir vartotojų sesijas.

Galutiniai taškai apima:

  • POST /auth/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /auth/profile

Vartotojų modulis

Tvarko vartotojų paskyras ir profilius.

Galutiniai taškai:

  • GET /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /users/:id

Rašymo operacijoms reikalingi administratoriaus leidimai .

Įrašų modulis

Įrašų modulis tvarko tinklaraščio turinį.

Funkcijos apima:

  • Puslapavimas

  • Filtravimas pagal kategoriją, žymą arba autorių

  • Rūšiavimas

  • Visatekstė paieška

  • Rekomenduojami įrašai

Galutiniai taškai:

  • GET /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /posts/:id

Kategorijų modulis

Tinklaraščio įrašus suskirsto į kategorijas.

Galutiniai taškai:

  • GET /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /categories/:id

Žymų modulis

Leidžia lanksčiai žymėti tinklaraščio įrašus.

Galutiniai taškai:

  • GET /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /tags/:id

Komentarų modulis

Palaiko komentarų gijas ir įdėtuosius atsakymus.

Galutiniai taškai:

  • GET /comments/post/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /comments/:id

API galimybės

Puslapavimas

Visi sąrašo galiniai taškai palaiko puslapiavimą.

Pavyzdys:

GET /posts?page=1&limit=6

Filtravimas

Įrašus galima filtruoti pagal kategoriją, žymą arba autorių.

Pavyzdys:

GET /posts?category=web-development

Visatekstė paieška

Įrašuose įdiegta paieškos funkcija.

Pavyzdys:

GET /posts?search=nestjs+mongodb

Rūšiavimas

API atsakymus galima rūšiuoti pagal skirtingus laukus.

Pavyzdys:

GET /posts?sortBy=createdAt&sortOrder=desc

Automatinis šliužų generavimas

Kuriant įrašus, sistema automatiškai sugeneruoja URL adresais pagrįstą šliuzą iš pavadinimo, naudodama „slugify“ .

Pavyzdys:

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

Skaitymo laiko skaičiavimas

API automatiškai apskaičiuoja numatomą skaitymo laiką pagal įrašų turinio ilgį.

Nuoseklus API atsakymo formatas

Visi atsakymai atitinka standartinę struktūrą:

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

Tai pagerina front-end integraciją ir derinimą.

Technologijų rinkinys

Užpakalinė dalis sukurta naudojant modernų „Node.js“ steko.

Sluoksnis Technologijos
Sistema NestJS 11
Kalba „TypeScript 5.7“
Duomenų bazė MongoDB 8
ODM Mangustas 8
Autentifikavimas Passport.js + JWT
Patvirtinimas klasės validatorius
API dokumentacija „Swagger“ atviroji API
Slaptažodžio apsauga bcrypt
Šliužų generatorius slugdyti
Testavimas Pokštas

Projekto struktūra

Projektas vykdomas pagal modulinę architektūrą.

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

Svarbūs komponentai:

  • DTO patvirtinimas

  • Mangustų schemos

  • Visuotiniai išimčių filtrai

  • Atsako perėmėjai

  • JWT apsaugos

  • Vaidmenų dekoratoriai

Ši struktūra užtikrina kodo bazės tvarką ir mastelio keitimą.

Kaip įdiegti ir paleisti projektą

Būtinos sąlygos

Prieš diegdami įsitikinkite, kad turite:

  • Node.js 18.17+

  • „MongoDB 6+“

  • npm, siūlai arba pnpm

Klonuoti saugyklą

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

Įdiegti priklausomybes

npm install

Konfigūruoti aplinkos kintamuosius

Nukopijuokite pavyzdinį aplinkos failą:

cp .env.example .env

Atnaujinkite šias reikšmes:

MONGODB_URI= 
JWT_ACCESS_SECRET= 
JWT_REFRESH_SECRET= 

Sėklos duomenų bazė

Užpildykite duomenų bazę pavyzdiniais duomenimis:

npm run seed

Norėdami nustatyti iš naujo ir iš naujo nustatyti:

npm run seed:refresh

Paleiskite kūrimo serverį

npm run start:dev

API bazinis URL:

http://localhost:3000/api/v1

„Swagger“ dokumentacija:

http://localhost:3000/api/docs

Numatytieji sėti duomenys

Sėklų scenarijus generuoja pavyzdinius duomenis testavimui.

Subjektas Grafas
Vartotojai 5
Kategorijos 5
Žymos 28
Įrašai 10
Komentarai 6

Numatytieji prisijungimo duomenys

Visų sėjamųjų vartotojų slaptažodis:

admin123

Sąskaitos:

Vaidmuo El. paštas
Administratorius [email protected]
Autorius [email protected]
Autorius [email protected]
Autorius [email protected]
Skaitytojas [email protected]

„Swagger“ API dokumentacija

Interaktyvios API dokumentacija pasiekiama adresu:

http://localhost:3000/api/docs

„Swagger“ teikia:

  • Interaktyvus galinių taškų testavimas

  • JWT authenticationparama

  • Užklausų ir atsakymų schemos dokumentacija

Kodėl verta naudoti šią saugyklą

„ NestJS MongoDB“ tinklaraščio API yra galingas atspirties taškas kūrėjams, kuriantiems modernią tinklaraščio posistemę.

Privalumai:

  • Švari NestJS modulinė architektūra

  • Integruotas autentifikavimas ir RBAC

  • Paruošta naudoti „Swagger“ API dokumentacija

  • MongoDB integracija naudojant Mongoose

  • Duomenų bazės sėjimo sistema

  • Gamybai paruošto projekto struktūra

Saugykla: https://github.com/bfotool/nestjs-mongodb-blog-base