Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用node express解压缩POST主体大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的节点应用程序,应该从客户端编写指标.
客户端使用 python的zlib模块压缩json格式的度量标准,我正在尝试添加一个中间件,以便快速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)

但似乎没有解压缩,膨胀,枪口工作.

解决方法

我自己找到了解决方案,问题在于这段代码

req.addListener("data",function(chunk) {
    data += chunk;
});

似乎连接请求数据不正确,所以我把我的中间件切换到这个:

app.use(function(req,next) {
    var data = [];
    req.addListener("data",function(chunk) {
        data.push(new Buffer(chunk));
    });
    req.addListener("end",function() {
        buffer = Buffer.concat(data);
        zlib.inflate(buffer,result) {
            if (!err) {
                req.body = result.toString();
                next();
            } else {
                next(err);
            }
        });
    });
});

连接缓冲区工作得很好,我现在能够解压缩请求体.

大佬总结

以上是大佬教程为你收集整理的node.js – 使用node express解压缩POST主体全部内容,希望文章能够帮你解决node.js – 使用node express解压缩POST主体所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。