1.修改路由
app
- index.js
- home.js
- user.js
- 创建 home.js, user.js 子路由文件 ```javascript const Router = require(‘koa-router’) const router = new Router()
router.get(‘/‘, ctx => { ctx.body = ‘这是主页’ })
module.exports = router
```javascript
const Router = require('koa-router')
// 配置 user router
const router = new Router({ prefix: '/users' })
router.get('/:id', ctx => {
ctx.body = 'user list'
})
...
module.exports = router
- 创建index.js 脚本实现路由动态注册 ```javascript const fs = require(‘fs’)
// 批量注册 route
module.exports = app => {
fs.readdirSync(__dirname).forEach(file => {
if (file === ‘index.js’) return
const route = require(./${file}
)
app.use(route.routes())
.use(route.allowedMethods())
})
}
3.在app/index.js中使用脚本
```javascript
const routing = require('./routes')
routing(app)
2.添加controller控制器
- 创建controller ```javascript class HomeCtl { index(ctx) { ctx.body = ‘home page’ } }
module.exports = new HomeCtl()
2. 在路由中使用
```javascript
const homeCtl = require('../controllers/home')
router.get('/', homeCtl.index)
3.错误处理
koa 自带,手动抛出
ctx.throw(412, 'id大于数组长度')
自定义错误中间件
app.use(async (ctx, next) => {
try {
await next()
} catch(err) {
// catch 会接住内部抛出的错误
ctx.status = err.status || err.statusCode
ctx.body = {
message: err.message
}
}
})
使用 koa-json-error
安装
npm i koa-json-error -S
使用 ```javascript const error = require(‘koa-json-error’) app.use(error())
// 抛出错误 ctx.throw(412, ‘错误’)
- 关闭stack信息
```javascript
app.use(error({
// 定制返回格式
postFormat: (err, { stack, ... rest }) => process.env.NODE_ENV === 'production' ? rest : { stack, ...rest }
}))
4.通过cross-env
插件手动修改环境变量
- 安装cross-env
npm i cross-env -D
修改package.json
"scripts": {
"start": "cross-env NODE_ENV=production node app", // 生产
"dev": "nodemon app" // 开发
},
5.使用koa-parameter 校验参数
安装
npm i koa-parameter -S
- 使用
const parameter = require('koa-parameter')
app.use(parameter(app))
- 校验
// 校验参数格式
ctx.verifyParams({
// required 默认为 true
name: { type: 'string', required: true },
age: { type: 'number', required: false }
})