Mẫu API Blog NestJS MongoDB – Hệ thống Backend REST đầy đủ tính năng dành cho Blog

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/register

  • POST /auth/login

  • POST /auth/refresh

  • POST /auth/logout

  • GET /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 /users

  • GET /users/:id

  • PATCH /users/:id

  • DELETE /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 /posts

  • GET /posts/featured

  • GET /posts/:slug

  • POST /posts

  • PATCH /posts/:id

  • DELETE /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 /categories

  • GET /categories/:slug

  • POST /categories

  • PATCH /categories/:id

  • DELETE /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 /tags

  • GET /tags/:slug

  • POST /tags

  • PATCH /tags/:id

  • DELETE /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/:postId

  • GET /comments/:id/replies

  • POST /comments

  • PATCH /comments/:id

  • DELETE /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ò E-mail
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