Koa中更方便簡單傳送響應的方式

detectiveHLH發表於2019-02-16

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了。

寫在後面

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

歡迎光臨 個人部落格

相關文章