构建可扩展的博客后端需要结构良好的架构、身份验证系统和完善的 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/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
自动蛞蝓生成
创建帖子时,系统会自动使用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
数据库种子系统
生产就绪的项目结构



