翼度科技»论坛 编程开发 JavaScript 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
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/ 中创建一个新文件即可,并且引入相关模型进行使用
如何理解内置的登录注册逻辑
  1. /*
  2. * TODO: 注册登录大概逻辑:
  3. *       1.用户注册 - 用户信息入库 - 发送验证码 - 校验验证码
  4. *                                   |
  5. *                           验证码发送失败、验证码失效或者校验失败 - 重新发送或输入验证码 - 校验验证码
  6. *   *
  7. *       2.用户登录 -(账号、密码、验证状态都校验通过)- 发Token
  8. *                       |
  9. *                 验证状态不通过 - 重新校验验证码/重发验证码 - 校验验证码 - 发Token
  10. * */
复制代码
项目结构
  1. .
  2. ├── app.js                  //入口文件
  3. ├── package.json            //依赖配置文件
  4. ├── .env.development        //开发环境配置
  5. ├── .env.production         //生产环境配置
  6. ├── config                  //项目配置
  7. │   ├── db.config.js
  8. │   ├── swagger.config.js
  9. │   └── ...
  10. ├── controllers             //控制模块(业务处理)
  11. │   └── v1
  12. │       ├── UserController.js
  13. │       └── ...
  14. ├── models                  //模型模块(建表)
  15. │   └── v1
  16. │       ├── user.test.js        /模型统一导出
  17. │       └── mapping
  18. │           ├──UserModel.js
  19. │           └── ...
  20. ├── routes                  //路由(配置实际API地址路径)
  21. │     └── v1
  22. │         ├── user.test.js
  23. │         ├── user.js
  24. │         └── ...
  25. ├── db                      //mongodb数据库连接
  26. │   ├── user.test.js              
  27. │   └── ...
  28. ├── middlewares             //中间件
  29. │   ├── jwt.js
  30. │   ├── permissions.js
  31. │   ├── session.js
  32. │   └── ...
  33. ├── logs                    //日志
  34. │   ├── info.log
  35. │   ├── error.log
  36. │   └── ...
  37. └── utils                   //辅助工具
  38.     ├── utils.apiResponse.js
  39.     ├── utils.mailer.js.js
  40.     └── ...
复制代码
关于作者

创建和维护由

来源:https://www.cnblogs.com/zy-mg/p/17293391.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具