# SERVER端介绍
Vue3-Antd-Plus (opens new window)的服务端
基于 Node.js、Express.js 和 MongoDB 通过Mongoose驱动进行 REST API 开发的轻量级样板。 集成了Swagger UI、JWT、sessionMiddleware、发送邮箱验证、日志管理、统一的预定义状态码响应格式等,对于为前端平台构建纯净的Web API非常有用。
采用 MVC 模式搭建项目结构
# 特点
- 轻量级Node.js项目提供Restful API
- 数据库采用 Mongodb, 通过Mongoose驱动。
- CRUD操作示例
- 跨域处理
- 日志管理
- 具有恰当的状态代码的预定义响应结构
- 全局错误处理
- 增加express-validator请求参数校验
- jwt验证 用户权限中间件分离
- 基本身份验证(采用bcrypt单向Hash加密算法加密密码进行注册/登录)
- Token生成和校验请求头的authorization
- 集成swagger-ui
- 增加邮件验证码通知
- sessionMiddleware 验证码校验
- 采用jest 接口单元测试
- 集成定时任务
# 目录说明
.
├── config # 公共配置文件夹
│ ├── db.config.js # 数据库连接信息
│ ├── swagger.config.js # 接口文档配置文件
├── controllers # 控制器文件夹 具体接口逻辑实现
├── db # mongodb数据库连接池文件夹
├── logs # 日志文件夹
├── middlewares # 中间件文件夹
│ ├── actionLogMiddleware.js # 记录操作日志中间件
│ ├── authMiddleware.js # 权限相关中间件
│ ├── sessionMiddleware.js # session中间件 验证码存储
│ ├── tokenAuthentication.js # token校验中间件
│ ├── uploadMiddleware.js # 文件上传中间件
├── models # 数据库模型文件夹 数据表配置
├── routes # 路由文件夹 具体接口地址配置信息
├── scheduler # 定时器文件夹
├── sql # 数据库文件sql
├── templates # 代码生成器文件模板
├── uploads # 文件上传后存放文件夹
├── utils # 工具类文件夹
├── .env.development # 开发环境配置文件
├── .env.production # 生产环境配置文件
├── alias.js # 路径别名配置文件
├── app.js # 项目主入口文件
└──package.json # 项目依赖文件配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 运行项目前准备:
首先确保您系统中安装了Mongodb (opens new window),和Nodejs (opens new window),一起准备完善之后。按照如下操作。 有的同学启动会报错可能是依赖包的版本问题需要注意 我的环境配置供参考
- Node.js 14.18.1+
- MongoDB 5.1+
# 启动项目
- 安装依赖 (如果已经安装可以直接进行下一步) 切换值SERVER端根目录下输入启动命令
npm i
1
创建数据库ZHOUYI_DB-导入sql文件-生成数据表
回到项目修改数据库配置信息
// .env.development文件中修改
# 数据库主机及相关配置
DB_URL=localhost
DB_PORT=27017
DB_NAME=ZHOUYI_DB //你创建的数据库名称 默认无用户密码
1
2
3
4
5
6
7
2
3
4
5
6
7
- 启动项目
npm run dev
1
- 启动项目成功示例
项目启动成功: http://localhost:3089/v1
接口文档地址: http://localhost:3089/swagger
连接开发环境数据库成功:ZHOUYI_DB
1
2
3
2
3
# 如何增加新的model 数据表
只需在 /models/v1/mapping/
中创建一个新文件,
然后在控制器/controllers/v1/
中创建一个对应新模型的新控制器的并使用。
# 如何增加新的路由router 接口
只需在 /routes/v1/
中创建一个新文件,并且引入它对应的controllers进行使用,routes下面的文件 将被 mount-routes
插件自动解析并以文件名作为api根路径,
开发环境下会打印在终端上:
******************************************************
MoaJS Apis Dump
******************************************************
┌───────────────────────────────────────┬────────┬───────────────────────────────────────────┐
│ File │ Method │ Path │
├───────────────────────────────────────┼────────┼───────────────────────────────────────────┤
│ ./routes/v1/blog/anouncements.js │ post │ /v1/blog/anouncements/list │
├───────────────────────────────────────┼────────┼───────────────────────────────────────────┤
│ ./routes/v1/blog/anouncements.js │ post │ /v1/blog/anouncements/client/list │
├───────────────────────────────────────┼────────┼───────────────────────────────────────────┤
│ ./routes/v1/blog/anouncements.js │ post │ /v1/blog/anouncements/client/home/list │
├───────────────────────────────────────┼────────┼───────────────────────────────────────────┤
│ ./routes/v1/sys/visitors.js │ get │ /v1/sys/visitors/count │
├───────────────────────────────────────┼────────┼───────────────────────────────────────────┤
│ ./routes/v1/sys/visitors.js │ get │ /v1/sys/visitors/onlineCount │
├───────────────────────────────────────┼────────┼───────────────────────────────────────────┤
│ ./routes/v1/sys/visitors.js │ get │ /v1/sys/visitors/ranking │
└───────────────────────────────────────┴────────┴───────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 如何增加新的控制器
只需在 /controllers/v1/
中创建一个新文件即可,并且引入相关模型进行使用
# 部署上线
部署上线云服务器整个项目 (收费 200人名币)
- 需要可以联系我v 15186817850 (备注事由)
- 不接受请勿添加哈