Πρότυπο API ιστολογίου NestJS MongoDB – Πλήρες REST Backend για ιστολόγια

Η δημιουργία ενός επεκτάσιμου backend ιστολογίου απαιτεί μια καλά δομημένη αρχιτεκτονική, σύστημα ελέγχου ταυτότητας και σωστά τεκμηριωμένα API. Το NestJS MongoDB Blog API είναι ένα πρότυπο backend έτοιμο για παραγωγή, σχεδιασμένο για να βοηθά τους προγραμματιστές να δημιουργούν γρήγορα σύγχρονες πλατφόρμες ιστολογίου χρησιμοποιώντας την τεκμηρίωση NestJS, MongoDB JWT authenticationκαι Swagger .

Αυτό το έργο παρέχει ένα πλήρες RESTful API που περιλαμβάνει ενότητες για χρήστες, αναρτήσεις, κατηγορίες, ετικέτες, σχόλια, έλεγχο ταυτότητας και έλεγχο πρόσβασης βάσει ρόλων .

Αποθετήριο: https://github.com/bfotool/nestjs-mongodb-blog-base

Τι είναι το NestJS MongoDB Blog API;

Το NestJS MongoDB Blog API είναι ένα πρότυπο backend ανοιχτού κώδικα που έχει κατασκευαστεί με NestJS 11 και MongoDB και παρέχει ένα πλήρως λειτουργικό REST API ιστολογίου.

Έχει σχεδιαστεί για να χρησιμεύσει ως θεμέλιο για την κατασκευή:

  • Πλατφόρμες ιστολογίου

  • Συστήματα CMS χωρίς κεφαλή

  • API δημοσίευσης περιεχομένου

  • Ιστότοποι τεκμηρίωσης

  • Ιστολόγια χαρτοφυλακίου προγραμματιστών

Το έργο ακολουθεί την αρθρωτή αρχιτεκτονική που προτείνει το NestJS, εξασφαλίζοντας επεκτασιμότητα και συντηρησιμότητα.

Αποθετήριο: https://github.com/bfotool/nestjs-mongodb-blog-base

Βασικά χαρακτηριστικά

Έλεγχος ταυτότητας και εξουσιοδότηση

Το API περιλαμβάνει ένα ασφαλές σύστημα ελέγχου ταυτότητας που χρησιμοποιεί διακριτικά JWT.

Τα κύρια χαρακτηριστικά ελέγχου ταυτότητας περιλαμβάνουν:

  • Διακριτικά πρόσβασης και ανανέωσης JWT

  • Έλεγχος πρόσβασης βάσει ρόλων(RBAC)

  • Κατακερματισμός κωδικού πρόσβασης με bcrypt

  • Προστατευμένες διαδρομές API χρησιμοποιώντας Guards

  • Μηχανισμός ανανέωσης διακριτικών

Υποστηρίζονται τρεις προεπιλεγμένοι ρόλοι χρήστη:

  • Διαχειριστής

  • Συγγραφέας

  • Αναγνώστης

Αυτό διευκολύνει τη διαχείριση δικαιωμάτων σε διαφορετικά τελικά σημεία API.

Πλήρεις ενότητες ιστολογίου

Το έργο περιλαμβάνει αρκετές πλήρως υλοποιημένες ενότητες που καλύπτουν όλες τις βασικές λειτουργίες του ιστολογίου.

Μονάδα Εξουσιοδότησης

Χειρίζεται τον έλεγχο ταυτότητας και τις συνεδρίες χρηστών.

Τα τελικά σημεία περιλαμβάνουν:

  • POST /auth/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /auth/profile

Ενότητα χρηστών

Διαχειρίζεται λογαριασμούς και προφίλ χρηστών.

Τελικά σημεία:

  • GET /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /users/:id

Οι λειτουργίες εγγραφής απαιτούν δικαιώματα διαχειριστή .

Ενότητα Δημοσιεύσεων

Η ενότητα αναρτήσεων διαχειρίζεται το περιεχόμενο του ιστολογίου.

Τα χαρακτηριστικά περιλαμβάνουν:

  • Σελιδοποίηση

  • Φιλτράρισμα κατά κατηγορία, ετικέτα ή συγγραφέα

  • Ταξινόμηση

  • Αναζήτηση πλήρους κειμένου

  • Προτεινόμενες αναρτήσεις

Τελικά σημεία:

  • GET /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /posts/:id

Κατηγορίες Ενότητα

Οργανώνει τις αναρτήσεις ιστολογίου σε κατηγορίες.

Τελικά σημεία:

  • GET /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /categories/:id

Ενότητα ετικετών

Επιτρέπει την ευέλικτη προσθήκη ετικετών για αναρτήσεις ιστολογίου.

Τελικά σημεία:

  • GET /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /tags/:id

Ενότητα σχολίων

Υποστηρίζει νήματα σχολίων και ένθετες απαντήσεις.

Τελικά σημεία:

  • GET /comments/post/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /comments/:id

Δυνατότητες API

Σελιδοποίηση

Όλα τα τελικά σημεία λίστας υποστηρίζουν σελιδοποίηση.

Παράδειγμα:

GET /posts?page=1&limit=6

Φιλτράρισμα

Οι αναρτήσεις μπορούν να φιλτραριστούν ανά κατηγορία, ετικέτα ή συγγραφέα.

Παράδειγμα:

GET /posts?category=web-development

Αναζήτηση πλήρους κειμένου

Η λειτουργία αναζήτησης εφαρμόζεται στις αναρτήσεις.

Παράδειγμα:

GET /posts?search=nestjs+mongodb

Ταξινόμηση

Οι απαντήσεις API μπορούν να ταξινομηθούν κατά διαφορετικά πεδία.

Παράδειγμα:

GET /posts?sortBy=createdAt&sortOrder=desc

Αυτόματη δημιουργία σαλιγκαριών

Κατά τη δημιουργία αναρτήσεων, το σύστημα δημιουργεί αυτόματα ένα slug φιλικό προς τις διευθύνσεις URL από τον τίτλο χρησιμοποιώντας το slugify .

Παράδειγμα:

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

Υπολογισμός χρόνου ανάγνωσης

Το API υπολογίζει αυτόματα τον εκτιμώμενο χρόνο ανάγνωσης με βάση το μήκος του περιεχομένου των αναρτήσεων.

Συνεπής μορφή απόκρισης API

Όλες οι απαντήσεις ακολουθούν μια τυποποιημένη δομή:

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

Αυτό βελτιώνει την ενσωμάτωση και τον εντοπισμό σφαλμάτων στο frontend.

Στοίβα Τεχνολογίας

Το backend κατασκευάζεται χρησιμοποιώντας μια σύγχρονη στοίβα Node.js.

Στρώμα Τεχνολογία
Σκελετός NestJS 11
Γλώσσα TypeScript 5.7
Βάση δεδομένων MongoDB 8
ODM Μανγκούστα 8
Πιστοποίηση Passport.js + JWT
Νομιμοποίηση επικυρωτής κλάσης
Τεκμηρίωση API Swagger OpenAPI
Ασφάλεια κωδικού πρόσβασης μυστική κρυπτογραφία
Γεννήτρια σαλιγκαριών slugify
Δοκιμές Αστείο

Δομή Έργου

Το έργο ακολουθεί μια αρθρωτή αρχιτεκτονική.

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

Σημαντικά στοιχεία περιλαμβάνουν:

  • Επικύρωση DTO

  • Σχήματα μαγκούστας

  • Φίλτρα καθολικών εξαιρέσεων

  • Αναχαιτιστές απόκρισης

  • Φρουροί JWT

  • Διακοσμητές ρόλων

Αυτή η δομή διατηρεί τον κώδικα οργανωμένο και επεκτάσιμο.

Πώς να εγκαταστήσετε και να εκτελέσετε το έργο

Προαπαιτούμενα

Πριν από την εγκατάσταση, βεβαιωθείτε ότι έχετε:

  • Node.js 18.17+

  • MongoDB 6+

  • npm, νήμα ή pnpm

Κλωνοποίηση του Αποθετηρίου

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

Εγκατάσταση εξαρτήσεων

npm install

Ρύθμιση παραμέτρων μεταβλητών περιβάλλοντος

Αντιγράψτε το αρχείο περιβάλλοντος παραδείγματος:

cp .env.example .env

Ενημερώστε τις ακόλουθες τιμές:

MONGODB_URI= 
JWT_ACCESS_SECRET= 
JWT_REFRESH_SECRET= 

Σπόρος της βάσης δεδομένων

Συμπληρώστε τη βάση δεδομένων με δείγματα δεδομένων:

npm run seed

Για επαναφορά και επανατοποθέτηση:

npm run seed:refresh

Έναρξη του διακομιστή ανάπτυξης

npm run start:dev

URL βάσης API:

http://localhost:3000/api/v1

Τεκμηρίωση Swagger:

http://localhost:3000/api/docs

Προεπιλεγμένα δεδομένα σποράς

Το σενάριο seed δημιουργεί δείγματα δεδομένων για δοκιμή.

Οντότητα Κόμης
Χρήστες 5
Κατηγορίες 5
Ετικέτες 28
Δημοσιεύσεις 10
Σχόλια 6

Προεπιλεγμένα διαπιστευτήρια σύνδεσης

Κωδικός πρόσβασης για όλους τους seeded χρήστες:

admin123

Λογαριασμοί:

Ρόλος E-mail
Διαχειριστής [email protected]
Συγγραφέας [email protected]
Συγγραφέας [email protected]
Συγγραφέας [email protected]
Αναγνώστης [email protected]

Τεκμηρίωση API Swagger

Η τεκμηρίωση του διαδραστικού API είναι διαθέσιμη στη διεύθυνση:

http://localhost:3000/api/docs

Η Swagger παρέχει:

  • Διαδραστικός έλεγχος τελικού σημείου

  • JWT authenticationυποστήριξη

  • Τεκμηρίωση σχήματος αιτήματος και απόκρισης

Γιατί να χρησιμοποιήσετε αυτό το αποθετήριο

Το NestJS MongoDB Blog API είναι ένα ισχυρό σημείο εκκίνησης για τους προγραμματιστές που δημιουργούν ένα σύγχρονο backend ιστολογίου.

Τα πλεονεκτήματα περιλαμβάνουν:

  • Καθαρή αρθρωτή αρχιτεκτονική NestJS

  • Ενσωματωμένος έλεγχος ταυτότητας και RBAC

  • Έτοιμη προς χρήση τεκμηρίωση Swagger API

  • Ενσωμάτωση MongoDB χρησιμοποιώντας Mongoose

  • Σύστημα σποράς βάσεων δεδομένων

  • Δομή έργου έτοιμη για παραγωγή

Αποθετήριο: https://github.com/bfotool/nestjs-mongodb-blog-base