J'ai écrit un middleware Express pour récupérer le corps brut de la demande, et je l'ai mis avant le middleware body-parser.Écriture middleware express pour obtenir le corps de la requête brute avant body-parser
Mon middleware personnalisé appelle req.setEncoding('utf8')
, mais cela provoque l'erreur corps analyseur suivant:
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)
Voici mon code:
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);
});
est-il un moyen de unset l'encodage ? Y a-t-il une autre façon de retirer le corps brut, mais encore utiliser body-parser après?
Utilisez votre middleware après bodyParser? – nicovank
Vous avez également une faute de frappe dans 'res.sendStatu (200); – doublesharp
Etes-vous sûr de vouloir définir l'encodage? – doublesharp