我写了Express中间件从请求中检索原始主体,并在body-parser中间件之前设置它。编写express 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