Xây dựng một hệ thống quản trị blog có khả năng mở rộng đòi hỏi một kiến trúc được cấu trúc tốt, hệ thống xác thực và API được tài liệu hóa đầy đủ. NestJS MongoDB Blog API là một mẫu hệ thống quản trị sẵn sàng cho môi trường sản xuất, được thiết kế để giúp các nhà phát triển nhanh chóng xây dựng các nền tảng blog hiện đại bằng cách sử dụng NestJS, MongoDB JWT authenticationvà tài liệu Swagger .
Dự án này cung cấp một API RESTful hoàn chỉnh bao gồm các module dành cho người dùng, bài viết, danh mục, thẻ, bình luận, xác thực và kiểm soát truy cập dựa trên vai trò .
Kho lưu trữ: https://github.com/bfotool/nestjs-mongodb-blog-base
Blog về NestJS MongoDB API
API Blog NestJS MongoDB là một mẫu giao diện quản trị mã nguồn mở được xây dựng bằng NestJS 11 và MongoDB, cung cấp API REST cho blog với đầy đủ chức năng.
Nó được thiết kế để làm nền tảng cho việc xây dựng:
Nền tảng blog
Hệ thống CMS không giao diện người dùng
API xuất bản nội dung
Trang web tài liệu
Blog giới thiệu portfolio của nhà phát triển
Dự án tuân theo kiến trúc mô-đun được NestJS khuyến nghị, đảm bảo khả năng mở rộng và bảo trì.
Kho lưu trữ: https://github.com/bfotool/nestjs-mongodb-blog-base
Các tính năng chính
Xác thực và Ủy quyền
API này bao gồm một hệ thống xác thực an toàn sử dụng mã thông báo JWT.
Các tính năng xác thực chính bao gồm:
Mã truy cập và mã làm mới JWT
Kiểm soát truy cập dựa trên vai trò(RBAC)
Mã hóa mật khẩu bằng bcrypt
Các tuyến API được bảo vệ bằng Guards
Cơ chế làm mới mã thông báo
Hệ thống hỗ trợ ba vai trò người dùng mặc định:
Quản trị viên
Tác giả
Người đọc
Điều này giúp dễ dàng quản lý quyền truy cập trên các điểm cuối API khác nhau.
Các mô-đun blog đầy đủ
Dự án này bao gồm một số mô-đun đã được triển khai đầy đủ, bao quát tất cả các chức năng cốt lõi của blog.
Mô-đun xác thực
Xử lý xác thực và phiên người dùng.
Các điểm cuối bao gồm:
POST /auth/registerPOST /auth/loginPOST /auth/refreshPOST /auth/logoutGET /auth/profile
Mô-đun người dùng
Quản lý tài khoản và hồ sơ người dùng.
Điểm cuối:
GET /usersGET /users/:idPATCH /users/:idDELETE /users/:id
Các thao tác ghi yêu cầu quyền quản trị .
Mô-đun bài đăng
Mô-đun bài viết quản lý nội dung blog.
Các tính năng bao gồm:
Đánh số trang
Lọc theo danh mục, thẻ hoặc tác giả
Sắp xếp
Tìm kiếm toàn văn
Bài viết nổi bật
Điểm cuối:
GET /postsGET /posts/featuredGET /posts/:slugPOST /postsPATCH /posts/:idDELETE /posts/:id
Mô-đun Danh mục
Sắp xếp các bài đăng trên blog thành các danh mục.
Điểm cuối:
GET /categoriesGET /categories/:slugPOST /categoriesPATCH /categories/:idDELETE /categories/:id
Mô-đun thẻ
Cho phép gắn thẻ linh hoạt cho các bài đăng trên blog.
Điểm cuối:
GET /tagsGET /tags/:slugPOST /tagsPATCH /tags/:idDELETE /tags/:id
Mô-đun bình luận
Hỗ trợ các chuỗi bình luận và phản hồi lồng nhau.
Điểm cuối:
GET /comments/post/:postIdGET /comments/:id/repliesPOST /commentsPATCH /comments/:idDELETE /comments/:id
Khả năng của API
Đánh số trang
Tất cả các điểm cuối danh sách đều hỗ trợ phân trang.
Ví dụ:
GET /posts?page=1&limit=6
Lọc
Bạn có thể lọc bài viết theo danh mục, thẻ hoặc tác giả.
Ví dụ:
GET /posts?category=web-development
Tìm kiếm toàn văn
Chức năng tìm kiếm đã được tích hợp trên các bài đăng.
Ví dụ:
GET /posts?search=nestjs+mongodb
Sắp xếp
Phản hồi API có thể được sắp xếp theo nhiều trường khác nhau.
Ví dụ:
GET /posts?sortBy=createdAt&sortOrder=desc
Tạo sên tự động
Khi tạo bài viết, hệ thống tự động tạo một đường dẫn URL thân thiện từ tiêu đề bằng cách sử dụng slugify .
Ví dụ:
Building REST APIs with NestJS
→ building-rest-apis-with-nestjs
Tính toán thời gian đọc
API tự động tính toán thời gian đọc ước tính dựa trên độ dài nội dung của bài viết.
Định dạng phản hồi API nhất quán
Tất cả các câu trả lời đều tuân theo một cấu trúc chuẩn:
{
"success": true,
"data": {},
"timestamp": "2026-01-01T10:00:00Z"
}
Điều này giúp cải thiện khả năng tích hợp và gỡ lỗi ở phía giao diện người dùng.
Ngăn xếp công nghệ
Hệ thống máy chủ được xây dựng bằng công nghệ Node.js hiện đại.
| Lớp | Công nghệ |
|---|---|
| Khung | NestJS 11 |
| Ngôn ngữ | TypeScript 5.7 |
| Cơ sở dữ liệu | MongoDB 8 |
| ODM | Cầy mangut 8 |
| Xác thực | Passport.js + JWT |
| Xác thực | trình xác thực lớp |
| Tài liệu API | Swagger OpenAPI |
| Bảo mật mật khẩu | bcrypt |
| Máy tạo sên | slugify |
| Kiểm tra | Đùa thôi |
Cấu trúc dự án
Dự án này tuân theo kiến trúc mô-đun.
src/
├── auth/
├── users/
├── posts/
├── categories/
├── tags/
├── comments/
├── common/
└── seed/
Các thành phần quan trọng bao gồm:
Xác thực DTO
lược đồ Mongoose
Bộ lọc ngoại lệ toàn cầu
Bộ chặn phản hồi
JWT bảo vệ
Người trang trí vai trò
Cấu trúc này giúp mã nguồn được tổ chức gọn gàng và có khả năng mở rộng.
Hướng dẫn cài đặt và chạy dự án
Điều kiện tiên quyết
Trước khi cài đặt, hãy đảm bảo bạn đã chuẩn bị đầy đủ:
Node.js 18.17 trở lên
MongoDB 6+
npm, yarn, hoặc pnpm
Sao chép kho lưu trữ
git clone https://github.com/bfotool/nestjs-mongodb-blog-base
cd nestjs-mongodb-blog-base
Cài đặt các phần phụ thuộc
npm install
Cấu hình biến môi trường
Sao chép tệp môi trường ví dụ:
cp .env.example .env
Cập nhật các giá trị sau:
MONGODB_URI=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=
Khởi tạo cơ sở dữ liệu
Điền dữ liệu mẫu vào cơ sở dữ liệu:
npm run seed
Để thiết lập lại và gieo hạt giống:
npm run seed:refresh
Khởi động máy chủ phát triển
npm run start:dev
URL cơ sở của API:
http://localhost:3000/api/v1
Tài liệu hướng dẫn về Swagger:
http://localhost:3000/api/docs
Dữ liệu mặc định được gieo hạt
Tập lệnh hạt giống tạo ra dữ liệu mẫu để thử nghiệm.
| Thực thể | Đếm |
|---|---|
| Người dùng | 5 |
| Thể loại | 5 |
| Thẻ | 28 |
| Bài đăng | 10 |
| Bình luận | 6 |
Thông tin đăng nhập mặc định
Mật khẩu cho tất cả người dùng được cấp hạt giống:
admin123
Tài khoản:
| Vai trò | |
|---|---|
| Quản trị viên | [email protected] |
| Tác giả | [email protected] |
| Tác giả | [email protected] |
| Tác giả | [email protected] |
| Người đọc | [email protected] |
Tài liệu API Swagger
Tài liệu API tương tác có sẵn tại:
http://localhost:3000/api/docs
Swagger cung cấp:
Kiểm thử điểm cuối tương tác
JWT authenticationủng hộ
Tài liệu về lược đồ yêu cầu và phản hồi
Tại sao nên sử dụng kho lưu trữ này?
API Blog của NestJS MongoDB là một điểm khởi đầu mạnh mẽ cho các nhà phát triển xây dựng hệ thống quản trị blog hiện đại.
Ưu điểm bao gồm:
Kiến trúc mô-đun NestJS sạch sẽ
Xác thực và RBAC tích hợp sẵn
Tài liệu API Swagger sẵn sàng sử dụng
Tích hợp MongoDB bằng Mongoose
Hệ thống gieo hạt cơ sở dữ liệu
Cấu trúc dự án sẵn sàng cho sản xuất
Kho lưu trữ: https://github.com/bfotool/nestjs-mongodb-blog-base



