koa 错误处理中间件 koa-json-error

在写接口时,返回json格式且易读的错误提示是有必要的,koa-json-error中间件帮我们做到了

安装使用koa-json-error

npm i koa-json-error -S
const error = require('koa-json-error')`
app.use(error({
	postFormat: (e, { stack, ...rest }) => process.env.NODE_ENV === 'production' ? rest : { stack, ...rest }
}))

错误会默认抛出堆栈信息,在生产环境中,没必要返回给用户,在开发环境显示即可

412错误 先决条件出错
// code 
ctx.throw(412, '先决条件失败:id大于数据长度')

返回错误信息

{
    "message":"先决条件失败:id大于数据长度",
    "name":"PreconditionFailedError",
    "status":412
}
500 错误

模拟出错代码

a.b
{
    "name": "ReferenceError",
    "message": "a is not defined",
    "status": 500
}
404错误

请求无响应的url
堆栈示例

{
    "stack":"NotFoundError: Not Found
				at Object.throw (/Users/zj/code/koa-restful/node_modules/koa/lib/context.js:97:11)
				at next.then (/Users/zj/code/koa-restful/node_modules/koa-json-error/lib/middleware.js:52:58)
				at process._tickCallback (internal/process/next_tick.js:68:7)",
    "message":"Not Found",
    "name":"NotFoundError",
    "status":404
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
koa-body中间件是一个解析HTTP请求body的中间件,用于获取POST请求或PUT请求提交的数据。它可以解析多种格式的数据,如JSON、表单以及多部分数据等。 koa-body中间件使用了co-body来解析HTTP请求body。co-body是一个用于对HTTP请求body进行解析的库,它支持多种格式的数据解析,包括JSON、URL-encoded表单、多部分form-data等。 使用koa-body中间件非常简单,只需要在应用程序中引入并挂载它即可: ``` const Koa = require('koa'); const koaBody = require('koa-body'); const app = new Koa(); app.use(koaBody()); ``` 这样,koa-body中间件就被挂载到了应用程序中,并且在每个HTTP请求到达时自动处理请求的body数据。 koa-body中间件的常用配置选项包括: - `patchNode`:指定在解析JSON对象时是否使用Object.assign()函数进行patch操作,缺省为true。 - `jsonLimit`:指定解析JSON数据的最大字节数,默认为1MB。 - `formLimit`:指定解析表单数据的最大字节数,默认为56KB。 - `textLimit`:指定解析纯文本数据的最大字节数,默认为1MB。 - `encoding`:指定请求体编码,默认为utf-8。 - `multipart`:指定是否解析multipart请求体,默认为false。 - `urlencoded`:指定是否解析URL-encoded表单请求体,默认为true。 - `formidable`:指定是否启用formidable解析multipart请求体,默认为true。 举例: ``` app.use(koaBody({ jsonLimit: '1mb', multipart: true, formidable:{ keepExtensions: true, // 保留扩展名 maxFieldsSize: 2 * 1024 * 1024, // 文件上传大小 } })) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值