Как распаковать сжатые данные запроса в Koa.js на стороне сервера?

Я разрабатываю приложение на основе REST, управляемое HTTP, где потребность в проекте такова, что мне нужно получать сжатые сжатые данные JSON на стороне сервера. Есть несколько доступных модулей, которые демонстрируют сжатие ответа и его отправку обратно, но я не нашел ничего, что показывает, как распаковать данные запроса, полученные на сервере.

1 ответ

Решение

Похоже, это может работать из коробки с koa-bodyparser, Под капотомkoa-bodyparserиспользованияco-bodyпроанализировать тело запроса и co-body использует inflate пакет для раздувания тела запроса перед анализом.

Следующий код:

const koa = require('koa');
const app = new koa();
const bodyParser = require('koa-bodyparser');

app.use(bodyParser());

app.use(function(ctx) {
  ctx.body = ctx.request.body.test;
})

app.listen(3000);

и следующий запрос

curl \
  -H 'content-type: application/json' \
  -H 'Content-Encoding: gzip' \
  -XPOST \
  --data-binary @data.json.gz \
  localhost:3000

с data.json, который был распакован (raw выглядит как ниже):

{
  "test": "data"
}

Все заработало как положено.

Другие вопросы по тегам