Я написал промежуточное программное обеспечение Express для извлечения необработанного тела из запроса, и я установил его перед промежуточным программным обеспечением body-parser.Написание экспресс-промежуточного программного обеспечения для получения необработанного тела запроса перед телом-парсером
Моего заказ промежуточный слой звонит req.setEncoding('utf8')
, но это вызывает следующую ошибку тела парсера:
Error: stream encoding should not be set
at readStream (/node_modules/body-parser/node_modules/raw-body/index.js:211:17) at getRawBody (/node_modules/body-parser/node_modules/raw-body/index.js:106:12) at read (/node_modules/body-parser/lib/read.js:76:3) at jsonParser (/node_modules/body-parser/lib/types/json.js:127:5)
Вот мой код:
var express = require('express');
var bodyParser = require('body-parser')
function myMiddleware() {
return function(req, res, next) {
req.rawBody = '';
req.setEncoding('utf8');
req.on('data', function(chunk) {
req.rawBody += chunk;
});
req.on('end', function() {
next();
});
}
}
var app = express();
app.use(myMiddleware());
app.use(bodyParser.json());
var listener = app.listen(3000, function() {
});
app.get('/webhook/', function (req, res) {
res.sendStatus(200);
});
Есть ли способ снят с, кодирующим ? Есть ли другой способ отсрочить сырое тело, но по-прежнему использовать тело-парсер после него?
Используйте промежуточное программное обеспечение после bodyParser? – nicovank
У вас есть опечатка в 'res.sendStatu (200);' также. – doublesharp
Вы уверены, что вам нужно установить кодировку? – doublesharp