美文网首页SH的全栈笔记
Koa中更方便简单发送响应的方式

Koa中更方便简单发送响应的方式

作者: SH的全栈笔记 | 来源:发表于2018-07-23 09:47 被阅读0次

    Github传送门 koa2-response

    背景

    最近做了很多node的后台项目,写了很多接口,但是发现随着接口的慢慢增多,需要写越来越来越多类似于下面这种代码。

    ctx.body = {
        data: {
            name: 'test'
        },
        status: {
            code: 0,
            message: success
        }
    }
    

    写成这样还好,至少做到了所有接口返回的格式统一,如果没有在这方面做规范,那么后台的接口返回不统一,将会给前端带来很多的问题。

    而且每个接口都要写这么一大堆的代码。感觉是个特别麻烦的事。

    所以koa2-response就这么诞生了。其实在写这篇文章之前,我已经在我的项目里面用了一段时间了,方便了我们的操作。

    安装

    npm install koa2-response
    

    用法

    const koa = require('koa');
    const router = require('koa-router')();
    const app = new koa();
    const response = require('koa2-response');
    
    const code = {
      UNKNOWN_ERROR: [1, 'Sorry, you seem to have encountered some unknown errors.']
    }
    
    router
      .get('/', (ctx, next) => {
        response.success(ctx, {
          name: 'test'
        })
      })
      .get('/error_test', (ctx, next) => {
        response.error(ctx, code.UNKNOWN_ERROR);
      })
    
    app.use(router.routes());
    app.use(router.allowedMethods());
    
    app.listen(3000);
    

    就这样很简单的就可以统一后端的返回数据,这个方法让我在项目中节约了很多时间。这个中间件还是在持续更新中,现在已经有的方法是response.success和response.error。我打算继续更新一个方法叫response.throw,这可以让后台自定义返回的http状态码以及错误信息。例如,用户没有权限,http的状态码就应该是401,而不应该是我们自定义的code了。

    写在后面

    大家如果有更好的解决方案,希望不吝赐教。

    相关文章

      网友评论

        本文标题:Koa中更方便简单发送响应的方式

        本文链接:https://www.haomeiwen.com/subject/wmedmftx.html