在node.js中压缩JSON

bq9c1y66  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(268)

我在nodejs中有一个使用Connect编写的服务器。我将一些数据作为JSON。我必须在发送之前压缩数据。我在Connect中使用了压缩函数,但我不知道如何检查数据是否被压缩。下面是我的代码:

var connect = require('connect')
 , http = require('http');

var app = connect()

 .use(connect.compress(console.log("I have compressed data")))

.use(function(req, res){
res.setHeader('Content-Type', 'application/json');
//res.end("store_id: 'S3000981'");

res.end('{"store_id": "S3000990"}');
});
http.createServer(app).listen(3000);

任何关于这一点的想法都将是非常有帮助的。

up9lanfz

up9lanfz1#

运行你的服务器,试试这个:

curl -H 'Accept-Encoding: gzip' -v localhost:3000

如果出现以下内容,则响应被压缩:

< Content-Encoding: gzip

此外,这并不像你想象的那样,可能会有副作用:

.use(connect.compress(console.log("I have compressed data")))

如果您希望在压缩响应数据时记录来自服务器的消息,请尝试以下操作:

.use(connect.compress())
.use(function(req, res, next) {
  res.on('header', function() {
    var encoding = res.getHeader('Content-Encoding') || '';
    if (encoding.indexOf('gzip') != -1 || encoding.indexOf('deflate') != -1)
    {
      console.log("I have compressed data");
    }
  });
  next();
})

相关问题