#基于webpack构建的 Koa2 restful API 服务器脚手架
这是一个基于 Koa2 的轻量级 RESTful API Server 脚手架,支持 ES6, 支持使用TypeScript编写。
GIT地址:https://github.com/Allenzihan/koa2-mysql-framework.git
此脚手架只安装了一些配合koa2使用的必要插件,不仅提供RESTful API实现,同时也集成了对静态资源的处理,支持跨越,代理转发请求等基础功能。基本上您仅需要关注您的业务开发即可。
脚手架可以根据不同的环境配置不同的信息运行价值,支持开发,测试,生产环境的不同参数配置。
#数据库选型MySQL
当然你也可以根据需要配置其他的关系型数据库,可扩展 sequelize.js 作为 PostgreSQL, MySQL, MariaDB, SQLite, MSSQL 关系型数据库的 ORM,本框架使用MVC分成模式实现,事例上通过SQL去实现对数据库的增、删、查、改操作。
目录结构说明
├── README.md
├── .babelrc # Babel 配置文件
├── .gitignore # Git 忽略文件列表
├── package.json # 描述文件
├── process.config.js # pm2 部署示例文件
├── bin # bin入口目录
│ └── www # 启动文件入口
├── .vscode # VS CODE 调式目录
│ └── launch.json # 调试配置
├── config # 配置文件
│ ├── db.config.js # 数据库配置文件
│ ├── logger.config.js # 日志配置文件
│ ├── proxy.config.js # 代理配置文件
│ └── session.config.js # session配置文件
├── src # 源代码目录,编译后目标源代码位于 dist 目录
│ ├── app.js # 入口文件
│ ├── files # 存放文件目录
│ ├── middleware # 中间件目录
│ └── errorRouteCatch.js # 示例插件 - router异常处理
│ ├── utils # 工具类目录
│ ├── controllers # 控制器
│ └── usersController.js # 示例users控制器
│ ├── models # 模型层
│ ├── routes # 路由层
│ └── users.js # 示例users路由
│ └── services # 服务层
│ └── usersService.js # 示例users服务层
├── public # 静态资源目录
└── logs # 日志目录
开发使用说明
git clone https://github.com/Allenzihan/koa2-mysql-framework.git
cd mv koa2-mysql-framework
npm install
npm run dev
访问: http://127.0.0.1:3000/home
开发调试说明
支持VSCODE调试 Node.js功能,已经配置好, 启动VSCODE IDE 上的Debug按钮即可调试
开发环境
npm run dev
PM2 部署说明
提供了 PM2 部署 RESTful API Server 的示例配置,位于“process.config.js”文件中。
process.config.js 文件提供了两套环境的配置,分别是测试环境和生产环境的配置
启动测试环境:
npm run uat
如果启动失败,使用pm2 直接启动
pm2 start process.config.js --only uat
启动生产环境:
npm run prod
如果启动失败,使用pm2 直接启动
pm2 start process.config.js --only prod
以上使用pm2启动,需提前安装好pm2模块
PM2 配合 Docker 部署说明: http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/
关于 Token 使用的特别说明(JWT 身份认证)
app.use(jwt({
secret: publicKey.toString()
}).unless({
path: [
/^/users/login/,
/^/home/,
/^/assets/
]
}))
在 path 里面的开头路径则不进行身份认证,否则都将进行 鉴权。
前端处理方案:
import axios from 'axios'
import {
getToken } from './tool'
const DevBaseUrl