node.js – GZip编码时Resolidy中的访问体

我将HTTP请求正文中的数据发送到具有gzip内容编码的Restify实例.唯一的问题是我无法访问带有gzip压缩数据的正文.

这是我用来确定它的我的JS代码,但是req.body是未定义的:

server.use(function(req, res, next) {
if(req.headers['content-encoding'] == 'gzip')
{
    console.log(req);

    // We have a gzipped body here
    var zlib = require("zlib");
    var gunzip = zlib.createGunzip();

    console.log("Body: "+ req.body)
    console.log("Length: " + req.body.length);
}
else
{
    apiKey = req.query['apiKey'];

    authenticateAndRoute(apiKey, req, res, next)
}
})

有人知道如何访问这里的req.body或同等的?

最佳答案 最新版本的restify通过bodyParser插件支持开箱即用.你只需要像这样初始化它:

server.use(restify.bodyParser({
  bodyReader: true
}));

具有值gzip set的content-encoding头的请求将被自动解压缩,并且将根据指示的内容类型头解析req.body.

点赞