koa2异常处理_koa2统一接口返回格式导致接口异常的问题记录

背景

最近在使用vue+koa2+mysql搭建博客,在后台搭建的时候为了想让以后接口返回有一个统一的格式,所以自己写了一个中间件来统一一下,具体代码如下:

/**

* responseBody.js

* @description 统一接口返回格式

* @param {*} option

*/

const reponseBody = (option = {}) => {

return (ctx, next) => {

ctx.success = (data, type) => {

ctx.type = type || option.type || 'json'

ctx.body = {

code: option.successCode || '000000',

msg: option.successMsg || '调用成功',

data

}

}

ctx.fail = (msg, code) => {

ctx.type = option.type || 'json'

ctx.body = {

code: option.failCode || code || '000001',

msg: msg || option.failMsg || '调用失败'

}

}

next()

}

}

module.exports = reponseBody

复制代码/**

* app.js

*/

const Koa = require('koa')

const app = new Koa()

const reponseBody = require('./middleware/reponseBody')

// 使用中间件处理404

app.use(async(ctx, next) => {

// 调用next执行下一个中间件

await next()

if (ctx.status === 404) {

ctx.response.type = 'html'

ctx.body = '404'

}

})

// 统一接口返回格式中间件

app.use(reponseBody())

复制代码

然后我写了一个图片上传的接口

// 上传图片

router.post('/upload', uploaded.single('file'), async(ctx, next) => {

const file = ctx.req.file

ctx.success({

imgSrc: `${file.destination}/${file.filename}`

})

console.log('ctx.body', ctx.body)

})

复制代码

上面打印的地方能够打印出body数据来

但是,在浏览器上的表现如下

接口可以调通,并且code码为200,但是preview中查看返回内容时并没有像后台打印中一样的数据,而是

404,看情况是被上一个处理404的中间件给劫持并且返回了这个内容了

。。。

。。。

。。。

这个地方折腾了好久,感觉自己的逻辑是没有问题的最后发现在中间件中调用next()前面都需要加上await,包含await的方法需要加上async,而我上面写的responseBody两个都没有,所以导致出现了这个问题,加上后就没有问题了

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[koa2统一接口返回格式导致接口异常的问题记录]http://www.zyiz.net/tech/detail-119785.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值