5

开发轻量级REST API样板 基于Node.js、MongoDB 通过Mongoose驱动 - 书中枫叶

 1 year ago
source link: https://www.cnblogs.com/zy-mg/p/17293391.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ZY.Node.Mongodb


  • 基于 Node.js、Express.js 和 MongoDB 通过Mongoose驱动进行 REST API 开发的轻量级样板。
    集成了Swagger UI、JWT、session、发送邮箱验证、日志管理、统一的预定义状态码响应格式等,对于为前端平台构建纯净的Web API非常有用。

  • 该项目我尝试做出轻松维护代码结构的项目样板,因为任何初学者也可以采用该流程并开始构建API。

  • 项目开放,可以提出建议、错误的issues。


  • 轻量级Node.js项目提供Restful API
  • 数据库采用 Mongodb, 通过Mongoose驱动。
  • CRUD操作示例
  • 具有恰当的状态代码的预定义响应结构
  • 全局错误处理
  • 增加express-validator请求参数校验
  • jwt验证 用户权限中间件分离
  • 基本身份验证(采用bcrypt单向Hash加密算法加密密码进行注册/登录)
  • Token生成和校验请求头的authorization
  • 集成swagger-ui
  • 增加邮件验证码通知
  • session 验证码校验
  • 采用jest 接口单元测试

如何获得并运行项目:


首先确保您系统中安装了Mongodb,和Nodejs,一起准备完善之后。按照如下操作。
有的同学启动会报错可能是依赖包的版本问题需要注意
我的环境配置供参考

  • Node.js 14.18.1+
  • MongoDB 5.1+

1,clone代码

git clone https://gitee.com/Z568_568/node.mongodb.git

2,安装依赖

npm install

3,启动程序

开发环境:npm run dev 基于 nodemon 热更新
生产环境:npm run start

4,启动成功示例

项目启动成功

如何增加新的model


只需在 /models/v1/mapping/ 中创建一个新文件,
然后在控制器/controllers/v1/中创建一个对应新模型的新控制器的并使用。

如何增加新的路由router


只需在 /routes/v1/ 中创建一个新文件,并且引入它对应的controllers进行使用,routes下面的文件 将被 mount-routes插件自动解析并以文件名作为api根路径,
开发环境下会打印在终端上:

路由列表

如何增加新的控制器


只需在 /controllers/v1/ 中创建一个新文件即可,并且引入相关模型进行使用

如何理解内置的登录注册逻辑

/** TODO: 注册登录大概逻辑:* 1.用户注册 - 用户信息入库 - 发送验证码 - 校验验证码* |* 验证码发送失败、验证码失效或者校验失败 - 重新发送或输入验证码 - 校验验证码* ** 2.用户登录 -(账号、密码、验证状态都校验通过)- 发Token* |* 验证状态不通过 - 重新校验验证码/重发验证码 - 校验验证码 - 发Token* */
.├── app.js //入口文件├── package.json //依赖配置文件├── .env.development //开发环境配置├── .env.production //生产环境配置├── config //项目配置│ ├── db.config.js│ ├── swagger.config.js│ └── ...├── controllers //控制模块(业务处理)│ └── v1│ ├── UserController.js│ └── ...├── models //模型模块(建表)│ └── v1│ ├── user.test.js /模型统一导出│ └── mapping│ ├──UserModel.js│ └── ...├── routes //路由(配置实际API地址路径)│ └── v1│ ├── user.test.js│ ├── user.js│ └── ...├── db //mongodb数据库连接│ ├── user.test.js │ └── ...├── middlewares //中间件│ ├── jwt.js│ ├── permissions.js│ ├── session.js│ └── ...├── logs //日志│ ├── info.log│ ├── error.log│ └── ...└── utils //辅助工具 ├── utils.apiResponse.js ├── utils.mailer.js.js └── ...

创建和维护由


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK