2024-07-11 12:13:33 +08:00

35 lines
1020 B
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const responseHandler = async (ctx, next) => {
// 统一成功响应
ctx.res.success = ({ status, data, msg = 'success' } = {}) => {
ctx.status = status || 200 // 没传默认200
ctx.body = {
status: ctx.status, // 响应成功默认 200
data,
msg
}
}
// 统一错误响应
ctx.res.fail = ({ status, msg = 'fail', data = {} } = {}) => {
ctx.status = status || 400 // 响应失败默认 400
ctx.body = {
status, // 失败默认 400
data,
msg
}
}
// 错误响应捕获
try {
await next() // 每个中间件都需等待next完成调用不然会返回404给前端!!!
} catch (err) {
console.dir(err)
consola.error('中间件错误:', err)
if (err.status)
ctx.res.fail({ status: err.status, msg: err.message }) // 自己主动抛出的错误 throwError
else
ctx.app.emit('error', err, ctx) // 程序运行时的错误 main.js中监听
}
}
module.exports = responseHandler