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
```javascriptconst Router = require('koa-router')// 配置 user routerconst 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中使用脚本```javascriptconst routing = require('./routes')routing(app)
2.添加controller控制器
- 创建controller ```javascript class HomeCtl { index(ctx) { ctx.body = ‘home page’ } }
module.exports = new HomeCtl()
2. 在路由中使用```javascriptconst 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.statusCodectx.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信息```javascriptapp.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 默认为 truename: { type: 'string', required: true },age: { type: 'number', required: false }})
