学习koa开发API(五)

时间:2021-09-19 22:20:30

最近看了日漫《强风吹拂》,啊啊啊看的我开心,好久没好好看日漫了,找到了一种失去好久的的那种“中二”拼劲!!

KOA自带的错误处理

当我们输入一个不存在的接口路径时status是404;

当我们手动抛出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);

当返回的接口status是412时,返回的内容是:

{ "message": "我是错误信息", "name": "PreconditionFailedError", "stack": "PreconditionFailedError: 我是错误信息\n at Object.throw (E:\\code\\project\\node\\...)..." "status": 412 }

当调用了未定义a的接口的时候,返回的内容是:

{ "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 }

stack中的内容有助于我们在开发阶段改BUG,当上线后将stack的内容暴露给用户并不好,于是我们修改一下:

app.use(error({ // e 是koa原生返回的error postFormat:( e, {stack,...rest})=>process.env.NODE_ENV === 'production' ? rest : {stack,...rest} }));

windows环境安装

cnpm i cross-env --save-dev

修改package.json

"start": "cross-env NODE_ENV=production nodemon app/index.js", "dev": "nodemon app/index.js"

执行npm start即生产环境,返回的结果不会返回stack的内容,而npm run dev就会返回。

使用koa-parameter 校验参数

在调用某些api的时候我们需要传递一些参数,我们需要对这些参数进行校验。

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 = '<h1>获得一本图书</h1>'; } } module.exports = new BookCtl();

学习koa开发API(五)--- 对异常和参数的处理

标签:

原文地址:https://www.cnblogs.com/armouy/p/12253171.html