我有一个简单的node应用程序,旨在记录来自客户端的指标。
客户端使用Python的zlib模块将指标以json格式压缩发送,我正在尝试添加中间件,在express bodyParse之前解压请求帖子。
我的中间件仅仅是由express默认提供的。
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
});
我尝试添加一个简单的中间件来获取数据,然后解压它:
app.use(function(req, res, next) {
var data = '';
req.addListener("data", function(chunk) {
data += chunk;
});
req.addListener("end", function() {
zlib.inflate(data, function(err, buffer) {
if (!err) {
req.body = buffer;
next();
} else {
next(err);
}
});
});
});
问题出在zlib.inflate上,我遇到了这个错误:
Error: incorrect header check
数据已经使用Python的zlib模块进行压缩:
zlib.compress(jsonString)
但似乎无论是解压缩、解缩还是解压缩gzip文件都不起作用。
next(err)
。我建议您放弃使用bodyParser
中间件,直接使用req.body = JSON.parse(buffer)
。 - Linus Thiel