我将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或等效吗?
答案 0 :(得分:2)
最新版本的restify通过bodyParser
插件支持此功能。你只需要像这样初始化它:
server.use(restify.bodyParser({
bodyReader: true
}));
设置content-encoding
标头且值为gzip
的请求将自动解压缩,req.body
将根据指示的content-type
标头进行解析。