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/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Vartotojų modulis
Tvarko vartotojų paskyras ir profilius.
Galutiniai taškai:
GET /usersGET /users/:idPATCH /users/:idDELETE /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 /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Kategorijų modulis
Tinklaraščio įrašus suskirsto į kategorijas.
Galutiniai taškai:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Žymų modulis
Leidžia lanksčiai žymėti tinklaraščio įrašus.
Galutiniai taškai:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Komentarų modulis
Palaiko komentarų gijas ir įdėtuosius atsakymus.
Galutiniai taškai:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /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



