Η δημιουργία ενός επεκτάσιμου 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/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Ενότητα χρηστών
Διαχειρίζεται λογαριασμούς και προφίλ χρηστών.
Τελικά σημεία:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
Οι λειτουργίες εγγραφής απαιτούν δικαιώματα διαχειριστή .
Ενότητα Δημοσιεύσεων
Η ενότητα αναρτήσεων διαχειρίζεται το περιεχόμενο του ιστολογίου.
Τα χαρακτηριστικά περιλαμβάνουν:
Σελιδοποίηση
Φιλτράρισμα κατά κατηγορία, ετικέτα ή συγγραφέα
Ταξινόμηση
Αναζήτηση πλήρους κειμένου
Προτεινόμενες αναρτήσεις
Τελικά σημεία:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Κατηγορίες Ενότητα
Οργανώνει τις αναρτήσεις ιστολογίου σε κατηγορίες.
Τελικά σημεία:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Ενότητα ετικετών
Επιτρέπει την ευέλικτη προσθήκη ετικετών για αναρτήσεις ιστολογίου.
Τελικά σημεία:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Ενότητα σχολίων
Υποστηρίζει νήματα σχολίων και ένθετες απαντήσεις.
Τελικά σημεία:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /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
Λογαριασμοί:
| Ρόλος | |
|---|---|
| Διαχειριστής | [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



