NestJS MongoDB 博客 API 模板 – 功能齐全的博客 REST 后端

构建可扩展的博客后端需要结构良好的架构、身份验证系统和完善的 API 文档。NestJS MongoDB 博客 API是一个可用于生产环境的后端模板,旨在帮助开发者使用NestJS、MongoDBJWT authentication和 Swagger 文档快速构建现代化的博客平台。

该项目提供了一个完整的 RESTful API,包括用户、帖子、类别、标签、评论、身份验证和基于角色的访问控制模块。

仓库地址:https://github.com/bfotool/nestjs-mongodb-blog-base

什么是 NestJS MongoDB 博客 API

NestJS MongoDB Blog API是一个使用NestJS 11 和 MongoDB构建的开源后端模板,它提供了一个功能齐全的博客 REST API。

它旨在作为以下建筑的基础:

  • 博客平台

  • 无头CMS系统

  • 内容发布 API

  • 文档网站

  • 开发者作品集博客

该项目遵循NestJS 推荐的模块化架构,确保可扩展性和可维护性。

仓库地址:https://github.com/bfotool/nestjs-mongodb-blog-base

主要特点

身份验证和授权

该 API 包含一个使用 JWT 令牌的安全身份验证系统。

主要身份验证功能包括:

  • JWT访问令牌和刷新令牌

  • 基于角色的访问控制(RBAC)

  • 使用 bcrypt 进行密码哈希处理

  • 使用守卫保护 API 路由

  • 令牌刷新机制

支持三种默认用户角色:

  • 行政

  • 作者

  • 读者

这样就可以轻松管理不同 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

自动蛞蝓生成

创建帖子时,系统会自动使用slugify从标题生成 URL 友好的 slug 。

例子:

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

阅读时间计算

API会根据文章内容长度自动计算预计阅读时间。

一致的 API 响应格式

所有回复均遵循标准格式:

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

这有助于提高前端集成和调试效率。

技术栈

后端采用现代Node.js技术栈构建。

技术
框架 NestJS 11
语言 TypeScript 5.7
数据库 MongoDB 8
ODM 猫鼬8
验证 Passport.js + JWT
验证 类验证器
API 文档 Swagger OpenAPI
密码安全 bcrypt
弹丸生成器 slugify
测试 笑话

项目结构

该项目采用模块化架构。

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

重要组成部分包括:

  • DTO验证

  • Mongoose模式

  • 全局异常过滤器

  • 响应拦截器

  • JWT保安

  • 角色装饰者

这种结构使代码库保持条理清晰且易于扩展。

如何安装和运行项目

先决条件

安装前,请确保您已具备以下条件:

  • Node.js 18.17+

  • MongoDB 6+

  • npm、yarn 或 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

API 基本 URL:

http://localhost:3000/api/v1

Swagger 文档:

http://localhost:3000/api/docs

默认种子数据

种子脚本会生成用于测试的样本数据。

实体 数数
用户 5
类别 5
标签 28
帖子 10
评论 6

默认登录凭据

所有初始用户的密码:

admin123

账户:

角色 电子邮件
行政 [email protected]
作者 [email protected]
作者 [email protected]
作者 [email protected]
读者 [email protected]

Swagger API 文档

交互式 API 文档可在以下网址获取:

http://localhost:3000/api/docs

Swagger 提供:

  • 交互式终点测试

  • JWT authentication支持

  • 请求和响应模式文档

为什么要使用此存储库

NestJS MongoDB Blog API是开发人员构建现代博客后端的强大起点。

优势包括:

  • 简洁的NestJS 模块化架构

  • 内置身份验证和基于角色的访问控制

  • 即用型Swagger API 文档

  • 使用Mongoose集成 MongoDB

  • 数据库种子系统

  • 生产就绪的项目结构

仓库地址:https://github.com/bfotool/nestjs-mongodb-blog-base