GZip编码时访问正文

时间:2015-01-02 18:30:52

标签: node.js http http-headers restify

我将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或等效吗?

1 个答案:

答案 0 :(得分:2)

最新版本的restify通过bodyParser插件支持此功能。你只需要像这样初始化它:

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

设置content-encoding标头且值为gzip的请求将自动解压缩,req.body将根据指示的content-type标头进行解析。