Я создал API с использованием io.js
и koa.js
.Доступ к необработанному телу запроса в koa.js
В качестве прокси-сервера для парсера я использую koa-body
, который, в свою очередь, использует co-body
.
На одной из моих конечных точек API я получаю запросы POST
, и мне нужен доступ к необработанному телу запроса, потому что мне нужно его закодировать, чтобы проверить, действительно ли запрос.
Есть ли способ получить доступ к необработанному телу запроса? Я пытался использовать промежуточное программное обеспечение raw-body
, но если я его использую до того, как позвоню koa-body
, то co-body
используется в koa-body
. Если я использую его после koa-body
, он не работает.
app.use(function*(next){
let rawRequestBody = yield rawBody(this.req);
this.rawRequestBody = rawRequestBody;
yield next;
});
EDIT:
Я думаю, что я нашел обходной путь, но я не знаю, если это лучшее решение. Я думаю, что ответ @greim может быть лучшим решением этой проблемы.
Я добавил следующий код, прежде чем я использую koa-body
:
app.use(function *(next) {
let url = this.req.url;
if(this.req.method == 'POST') {
let that = this;
this.req.rawBody = '';
this.req.on('data', function(chunk) {
that.req.rawBody += chunk;
});
}
yield next;
});
Мое исправление на сопутствующем теле: https://github.com/cojs/co-body/pull/59 – tangxinfa