错误处理
- 运行时错误, 返回500
- 逻辑错误, 如找不到(404)、先决条件失败(412)。。。
为什么使用错误处理
了解Koa 自带的错误处理
- 制造404、412、500三种错误
- 404 请求一个没有地址,koa会返回
Not Found
- 412 先决条件失败, 需要手动
ctx.throw(412)
- 500 代码写错。返回
Internal Server Er
- 了解Koa自带的错误处理做了什么
自己编写错误处理中间件
app.use(async (ctx, next) => {
try {
await next();
} catch (error) {
ctx.status = error.status || error.statusCode || 500;
ctx.body = {
msg: error.message
}
}
});
-->
{
"msg": "Precondition Failed"
}
-->
{
"msg": "a is not defined"
}
使用Koa-json-error 中间件处理错误
const jsonError = require('koa-json-error');
app.use(jsonError({
postFormat(e, {stack, ...rest}) {
return process.env.NODE_ENV === 'production' ? rest : {stack, ...rest}
}
}));
使用koa-parameter参数校验
const parameter = require('koa-parameter');
app.use(parameter(app));
....
create(ctx) {
let user = ctx.request.body;
ctx.verifyParams({
name: {type: 'string', required: true},
age: {type: 'number', required: false}
});
db.push(user);
ctx.body = user;
}