export const ResultHandler: MiddleWare = () => async (ctx, next) => { const r :ResultInfo= {code:0}; try { const data:any = await next(); r.code = 0; r.msg = 'success' r.data = data; } catch (err) { log.error(err); log.error('xxx'+err.statusCode); r.code = err.statusCode switch (err.statusCode) { case 102: r.msg = "用户不存在"; break; default: break; } } ctx.body = r; };
时间: 2023-06-12 20:06:08 浏览: 227
koa-acl-middleware:Koa node_acl中间件
这段代码是一个 Koa 中间件,用于统一处理 API 接口的返回结果。主要实现的流程为:先执行下一个中间件,等待其返回结果;如果返回结果正常,则将 data 数据存入 ResultInfo 结构体中,并返回给客户端;如果返回结果出现异常,则根据异常状态码设置对应的错误信息,并返回给客户端。
具体实现细节包括:
1. 定义了一个 ResultInfo 结构体,存储返回结果的 code、msg 和 data 信息;
2. 使用 async/await 等待下一个中间件执行完毕,获取其返回结果;
3. 如果返回结果正常,则将 code 置为 0,msg 置为 "success",并将 data 存入 ResultInfo 结构体中;
4. 如果返回结果出现异常,则根据异常状态码设置对应的错误信息,如当状态码为 102 时,设置 msg 为 "用户不存在";
5. 最后将 ResultInfo 结构体返回给客户端。
阅读全文