学习koa开发API(五)--- 对异常和参数的处理
2021-01-14 17:13
标签:校验 修改 npm app ports nod lis 结果 for 最近看了日漫《强风吹拂》,啊啊啊看的我开心,好久没好好看日漫了,找到了一种失去好久的的那种“中二”拼劲!! 当返回的接口status是412时,返回的内容是: 当调用了未定义a的接口的时候,返回的内容是: 当访问不存的接口的时候: stack中的内容有助于我们在开发阶段改BUG,当上线后将stack的内容暴露给用户并不好,于是我们修改一下: windows环境安装 修改package.json 执行 在调用某些api的时候我们需要传递一些参数,我们需要对这些参数进行校验。 学习koa开发API(五)--- 对异常和参数的处理 标签:校验 修改 npm app ports nod lis 结果 for 原文地址:https://www.cnblogs.com/armouy/p/12253171.htmlKOA自带的错误处理
ctx.throw(412)
时,status是412,且显示的是Precondition Failed
,可以在抛出的时候写上异常信息ctx.throw(412,‘我是错误信息‘);
;console.log(a.b)
这一行代码由于a变量未定义,导致status是500。认识koa-json-error
cnpm i koa-json-error --save
const Koa = require('koa');
const app = new Koa();
const error = require("koa-json-error");
const routing = require('./routes');
app.use(error());
// router注册到app
routing(app);
app.listen(3000);
{
"message": "我是错误信息",
"name": "PreconditionFailedError",
"stack": "PreconditionFailedError: 我是错误信息\n at Object.throw (E:\\code\\project\\node\\...)..."
"status": 412
}
{
"name": "ReferenceError",
"message": "a is not defined",
"stack": "ReferenceError: a is not defined\n at get (E:\\code\\project\\node\\...",
"status": 500
}
{
"message": "Not Found",
"name": "NotFoundError",
"stack": "NotFoundError: Not Found\n at Object.throw (E:\\code\\project\\node\\...",
"status": 404
}
app.use(error({
// e 是koa原生返回的error
postFormat:( e,
{stack,...rest})=>process.env.NODE_ENV === 'production'
? rest : {stack,...rest}
}));
cnpm i cross-env --save-dev
"start": "cross-env NODE_ENV=production nodemon app/index.js",
"dev": "nodemon app/index.js"
npm start
即生产环境,返回的结果不会返回stack的内容,而npm run dev
就会返回。使用koa-parameter 校验参数
cnpm i koa-parameter --save
// index.js
const parameter = require("koa-parameter");
app.use(parameter(app));
// controllers/book.js
class BookCtl {
get(ctx){
ctx.verifyParams({
id:{type:'string',required:true}
})
ctx.body = '
获得一本图书
';
}
}
module.exports = new BookCtl();
文章标题:学习koa开发API(五)--- 对异常和参数的处理
文章链接:http://soscw.com/index.php/essay/41872.html