# midway-boot
**Repository Path**: bestaone/midway-boot
## Basic Information
- **Project Name**: midway-boot
- **Description**: midway-boot是基于阿里巴巴后端框架Midway构建的一套快速启动的Nodejs服务端项目模板,这里提供了常用功能的最佳实践,帮助你快速启动一个基于Nodejs的服务端项目。
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: http://midway-boot.hiauth.cn/swagger-ui/index.html
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 3
- **Created**: 2022-07-11
- **Last Updated**: 2025-07-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
midway-boot
midway-boot是基于阿里巴巴后端框架Midway构建的一套快速启动的Nodejs服务端项目模板,这里提供了常用功能的最佳实践,帮助你快速启动一个基于Nodejs的服务端项目。
[](https://github.com/bestaone/midway-boot/stargazers)
[](https://github.com/bestaone/midway-boot/network/members)
[](https://github.com/bestaone/midway-boot)
[](https://github.com/bestaone/midway-boot/blob/main/LICENSE)
[](https://github.com/bestaone)
### 技术栈
- 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配置文件
```
### LIVE DEMO
- http://midway-boot.hiauth.cn/swagger-ui/index.html
> API接口需要认证,先使用login接口获取accessToken(账号:zhangsan/123456),然后复制,点击Swagger页面中的Authorize按钮,输入这个accessToken,就可以测试其他接口了。
- 登陆接口
- 设置访问凭证
- 验证接口
## 快速启动
### 环境要求
- NodeJS v12+
- Npm 8+
- MySQL5+
- Redis
### 下载源码
```bash
>git clone https://github.com/bestaone/midway-boot.git
```
### 调整配置
#### 创建数据库schema
在mysql中创建名称为 midway-boot 的 schema
#### 调整配置文件 .env 内容
```bash
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建好
#### 构建、启动
```bash
# 按顺序执行
>cd midway-boot
>npm install # 安装依赖
>npm run test # 运行单元测试,这过程会检查mysql、redis是否配置正确
>npm run dev # 启动服务
```
> 程序启动时会自动生成表结构,不需要手动创建表结构(但是需要先把数据库schema建好)
> 如果测试通不过,检查下数据库有没有自动生成测试账号(user.test.ts中会创建测试账号)
#### 测试、验证
- 访问Swagger:http://127.0.0.1:7001/swagger-ui/index.html
## 开发调试
以IntelliJ IDEA为例:
- 导入项目代码;
- 终端中运行 “npm install” 安装依赖;
- 运行/调试配置;
## 部署
### Docker
```bash
>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
```
### Serverless
- 开通阿里云函数服务并设置,参考:
http://www.midwayjs.org/docs/serverless/serverless_dev
- 调整配置(f.yml)
```
# domainName 改为 auto,也可以使用自己配置的域名
custom:
customDomain:
domainName: auto
```
- 发布
```bash
# 首次发布,需要使用 npx midway-bin deploy --resetConfig 命令配置客户端
# 发布到 阿里云 Serverless, 时间较长,需要等待,大概5分钟
> npm run deploy
```
- 测试
使用阿里云自动分配的域名访问Swagger进行验证
## 授权协议
本项目执行 [MIT](https://github.com/bestaone/midway-boot/blob/main/LICENSE) 协议
## 社区与作者
>如果群二维码失效了,请先添加我的微信,然后我拉你入群。