Skip to content

rapid development of API based on node and mysql (if useful for you, please give me a star)

License

Notifications You must be signed in to change notification settings

PLQin/node-mysql-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nodejs-mysql-api

# 基础知识

# package.json

  • debug 启动 node 服务后, 监听bug并输出在控制台

  • express nodejs服务

  • express-validation nodejs 服务验证, 配合 joi 使用更好

  • joi 参数校验

  • jsonwebtoken 生成 token 的库

  • 考虑使用 sequelize Sequelize是一款基于Nodejs功能强大的异步ORM框架。 同时支持PostgreSQL, MySQL, SQLite and MSSQL多种数据库,很适合作为Nodejs后端数据库的存储接口,为快速开发Nodejs应用奠定扎实、安全的基础。 相关文档:

  • 考虑使用 cookie-parser

# 微信

# 接口

Main function

  • ✔ 注册与登录接口
  • ✔ 支持JWT验证
  • ✔ Joi参数校验
  • ✔ 支持mysql的orm框架sequelize
  • ✔ apidoc接口文档自动生成
  • ✔ 全局参数配置
  • ✔ 自动重启
  • ❓ redis支持
  • ❓ 自动化测试

Folder Structure

  ├── README.md  // 说明文档
  ├── app.js  // express实例化文件
  ├── bin 
  │   └── www // 主入口文件
  ├── config
  │   ├── config.js // 数据库配置
  │   └── index.js // 全局参数配置
  ├── control // Controller层目录
  │   └── userControl.js
  ├── helper // 自定义API Error拋出错误信息
  │   └── AppError.js
  ├── joi-rule // Joi 参数验证规则
  │   └── user-validation.js
  ├── models // sequelize需要的数据库models
  │   ├── index.js // 处理当前目录的所有model
  │   └── user.js // user表的model
  ├── package-lock.json
  ├── package.json
  ├── public
  │   └── apidoc // 自动生成的apidoc文档
  ├── routes // 路由目录
  │   └── user.js
  ├── service // service层目录
  │   └── user.js
  └── until // jwt认证
      └── token.js

更详细的apidoc文档配置可以参考https://www.jianshu.com/p/9353d5cc1ef8官网

Joi参数校验规则。 中文设置 : hapijs/joi#598

相关工具介绍

  • sequelize

    Sequelize是一款基于Nodejs功能强大的异步ORM框架。

    同时支持PostgreSQL, MySQL, SQLite and MSSQL多种数据库,很适合作为Nodejs后端数据库的存储接口,为快速开发Nodejs应用奠定扎实、安全的基础。

    相关文档:

  • apidoc

    apidoc是一款可以由源代码中的注释直接自动生成api接口文档的工具,它几乎支持目前主流的所有风格的注释。

    例如:Javadoc风格注释(可以在C#, Go, Dart, Java, JavaScript, PHP, TypeScript等语言中使用)

    相关文档:

  • JOI joi就好比是一个验证器,你可以自己规范schema来限制资料格式,有点像是正规表示法,这边来举个例子好了,利如PORT只允许输入数字若输入字串就会被阻挡PORT: Joi.number(),这样有好处万一有使用者不按照规范输入数值他会在middleware抛出一个错误告诉你这边有问题要你马上修正。

    相关文档:

  • JWT

    JWT是JSON Web Token的缩写,通常用来解决身份认证的问题,JWT是一个很长的base64字串在这个字串中分为三个部分别用点号来分隔,第一个部分为Header,里面分别储存型态和加密方法,通常系统是预设HS256杂凑演算法来加密,官方也提供许多演算法加密也可以手动更改加密的演算法,第二部分为有效载荷,它和会话一样,可以把一些自的定义数据存储在Payload里例如像是用户资料,第三个部分为Signature,做为检查码是为了预防前两部分被中间人伪照修改或利用的机制。

    Header(标头):用来指定哈希算法(预设为HMAC SHA256) Payload(内容):可以放一些自己要传递的资料 Signature(签名):为签名检查码用,会有一个serect string来做一个字串签署 把上面三个用「。」接起来就是一个完整的JWT了!

    使用流程: 使用者登入-> 产生API Token -> 进行API 路径存取时先JWT 验证-> 验证成功才允许访问该API

    相关文档:

鸣谢

联系我

如果你有好的idea,欢迎联系我

About

rapid development of API based on node and mysql (if useful for you, please give me a star)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published