- TypeScript
- Nodejs
- Midway
- Mysql
- Redis
- 面向对象的开发体验;
- 增删改查及基类封装;
- 数据库操作;
- 缓存操作;
- 用户安全认证及访问安全控制;
- JWT访问凭证;
- 分布式访问状态管理;
- 密码加解密;
- 统一返回结果封装;
- 统一异常管理;
- Snowflake主键生成;
- Swagger集成及支持访问认证;
- 环境变量的使用;
- Docker镜像构建;
- Serverless发布;
├─doc # 相关文档
├─src # 源码目录
│ ├─api # api接口定义及输入输出定义
│ ├─common # 通用类
│ ├─config # 配置
│ ├─controller # 控制器
│ ├─entity # 数据对象模型
│ ├─filter # 过滤器
│ ├─middleware # 中间件
│ ├─service # 服务类
│ ├─utils # 工具类
│ ├─configurations.ts # 服务生命周期管理及配置
│ └─interface.ts # 接口定义
├─test # 测试类目录
├─.env # 环境变量
├─app.js # 支持发布Serverless
├─bootstrap.js # 启动入口
├─Dockerfile # Docker构建文件
├─f.yml # Serverless标准化spec配置文件
API接口需要认证,先使用login接口获取accessToken(账号:zhangsan/123456),然后复制,点击Swagger页面中的Authorize按钮,输入这个accessToken,就可以测试其他接口了。
- 登陆接口
- 设置访问凭证
- 验证接口
- NodeJS v12+
- Npm 8+
- MySQL5+
- Redis
>git clone https://github.com/bestaone/midway-boot.git
在mysql中创建名称为 midway-boot 的 schema
MYSQL_HOST=devserver # 你的mysql数据库IP 或者 域名
MYSQL_USERNAME=dev # 你的mysql数据库用户名(需要有建表权限)
MYSQL_PASSWORD=123456 # 你的mysql数据库密码
MYSQL_PORT=3306 # 你的mysql数据库端口
REDIS_HOST=devserver # 你的redis IP 或者 域名
REDIS_PORT=6379 # 你的redis端口
src/config/config.default.ts -> orm.synchronize=true,可控制程序启动时自动创建、更新表结构,但是需要先把数据库schema建好
# 按顺序执行
>cd midway-boot
>npm install # 安装依赖
>npm run test # 运行单元测试,这过程会检查mysql、redis是否配置正确
>npm run dev # 启动服务
程序启动时会自动生成表结构,不需要手动创建表结构(但是需要先把数据库schema建好) 如果测试通不过,检查下数据库有没有自动生成测试账号(user.test.ts中会创建测试账号)
以IntelliJ IDEA为例:
- 导入项目代码;
- 终端中运行 “npm install” 安装依赖;
- 运行/调试配置;
>cd midway-boot
>docker build -t midway-boot:v1.0 .
>docker run -d --name midway-boot -p 17001:7001 --env-file /opt/.env midway-boot:v1.0
-
开通阿里云函数服务并设置,参考: http://www.midwayjs.org/docs/serverless/serverless_dev
-
调整配置(f.yml)
# domainName 改为 auto,也可以使用自己配置的域名
custom:
customDomain:
domainName: auto
- 发布
# 首次发布,需要使用 npx midway-bin deploy --resetConfig 命令配置客户端
# 发布到 阿里云 Serverless, 时间较长,需要等待,大概5分钟
> npm run deploy
- 测试
使用阿里云自动分配的域名访问Swagger进行验证
本项目执行 MIT 协议
如果群二维码失效了,请先添加我的微信,然后我拉你入群。