前言
该项目是自己为了学习慢慢修改编写,主要为了提高全栈能力。在我的构思中,项目应该分为后端api接口,前端管理系统,前端页三个项目组成。项目大家可以一直跟着写,我也是一边写项目一边写文章。中间遇到什么问题大家可以评论留言。文档我用的markdown语法写的,排版啥的请大家见谅。我以前看别人的教程最大的难点在于验证和排错。排错我没办法,验证我会在每个阶段写上验证方法。暂时就这些功能,以后有机会在慢慢改进吧
后端博客api项目信息
node框架express 数据库mongoDB
项目结构
blog-express-mongodb-api/
├── bin/
│ └── www # 应用入口文件
├── config/
│ └── db.js # 数据库配置
├── controllers/
│ ├── authController.js # 认证控制器
│ ├── postController.js # 文章控制器
│ └── userController.js # 用户控制器
├── middleware/
│ ├── auth.js # 认证中间件
│ └── errorHandler.js # 错误处理中间件
├── models/
│ ├── Post.js # 文章模型
│ └── User.js # 用户模型
├── routes/
│ ├── auth.js # 认证路由
│ ├── posts.js # 文章路由
│ └── users.js # 用户路由
├── .env # 环境变量
├── .gitignore
├── app.js # Express 应用配置
└── package.json
主要功能模块
1.用户管理
用户注册
用户登录
用户信息更新
用户权限管理
2.文章管理
创建文章
编辑文章
删除文章
文章列表
文章详情
文章分类
文章标签
3.评论系统
发表评论
回复评论
评论管理
数据库设计
user 用户
{
username: String,
email: String,
password: String,
role: String,
createdAt: Date,
updatedAt: Date
}
Post 文章
{
title: String,
content: String,
author: { type: ObjectId, ref: 'User' },
tags: [String],
category: String,
status: String,
createdAt: Date,
updatedAt: Date
}
Comment 评论
{
content: String,
post: { type: ObjectId, ref: 'Post' },
author: { type: ObjectId, ref: 'User' },
// 其他字段大家应该都看的懂。这个字段稍微解释下
// parentComment这个字段用来实现嵌套回复功能
// 当用户直接评论文章时,parentComment 为 null
// 当用户回复其他评论时,parentComment 指向被回复的评论的 ID
parentComment: { type: ObjectId, ref: 'Comment' },
createdAt: Date,
updatedAt: Date
}
API路由设计
认证相关:
POST /api/auth/register - 用户注册
POST /api/auth/login - 用户登录
GET /api/auth/me - 获取当前用户信息
文章相关:
GET /api/posts - 获取文章列表
POST /api/posts - 创建文章
GET /api/posts/:id - 获取文章详情
PUT /api/posts/:id - 更新文章
DELETE /api/posts/:id - 删除文章
评论相关:
GET /api/posts/:id/comments - 获取文章评论
POST /api/posts/:id/comments - 发表评论
DELETE /api/comments/:id - 删除评论
简历里的加分项
安全考虑
使用 JWT 进行身份认证
密码加密存储
请求速率限制
输入验证和清理
CORS 配置
环境变量管理
必备软件安装
node下载
mongoDB下载
两个软件全部点下一步。安装好了打开cmd输入node -v 有返回node安装成功。数据库你看桌面上多了个MongoDBCompass没有,有的话数据库也成功了。
项目搭建
手脚架安装
在自己的项目中执行
express --no-view .
命令:
在当前目录(.)创建 Express 应用
–no-view 参数表示不使用任何模板引擎
生成基本的项目结构和文件
npm i
命令:安装依赖
npm install mongoose dotenv bcryptjs jsonwebtoken cors
mongoose (npm install mongoose)
MongoDB 的 ODM(对象文档映射)库
用于在 Node.js 中操作 MongoDB 数据库
提供了 Schema 定义、数据验证、中间件等功能
dotenv (npm install dotenv)
用于加载环境变量
可以创建 .env 文件来存储敏感信息(如数据库连接字符串、JWT密钥等)
帮助管理不同环境(开发、测试、生产)的配置
bcryptjs (npm install bcryptjs)
用于密码加密
提供密码哈希和验证功能
确保用户密码安全存储
jsonwebtoken (npm install jsonwebtoken)
用于生成和验证 JWT(JSON Web Token)
实现用户认证和授权
用于保护 API 路由
cors (npm install cors)
处理跨域资源共享(CORS)
允许不同域名的前端应用访问你的 API
可以配置允许的域名、请求方法等
命令:开发用到的主要依赖。以后有更新在加
npm install --save-dev nodemon
nodemon (npm install --save-dev nodemon)
开发工具,用于自动重启 Node.js 应用
当代码发生变化时自动重启服务器
提高开发效率
在 package.json 中添加开发脚本:
{
"scripts": {
"dev": "nodemon ./bin/www"
}
}
最后运行
npm run dev
当你看到下列提示,那么恭喜你,你的项目整体搭建完毕了
> blog-express-mongodb-api@0.0.0 dev
> nodemon ./bin/www
[nodemon] 3.1.10
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node ./bin/www`