如何压缩json以使其通过`bodyParser.json`

问题描述 投票:0回答:1

我想将压缩的json发送到我的服务器。

我更喜欢在浏览器中压缩数据。[explainer)并将其发送到bodyParser.json中间件。

我在react.js中的请求:

return fetch(url, {
    headers: {
      'Content-Type':'application/json',
      'content-encoding': 'gzip'
    },
    method: 'POST',
    body: bodyContent
  }).then(res => res.blob())

node.js:

app.use(
  bodyParser.json({
    limit: "10mb"
  })
);

根据此数据进行压缩的方法是什么,它有意义吗?

提前感谢!

node.js json reactjs compression
1个回答
0
投票

我已经使用zlib完成了此操作,但没有使用GZIP。

首先,我具有此客户端功能。...

function compressBody(body) {

    return new Promise( function( resolve, reject ) {

        zlib.deflate(body, (err, buffer) => {
            if(err){
                console.log("Error Zipping");
                reject(err);
            }
            console.log("Zipped");

            resolve(buffer);
        });
     });

}

要调用功能。...

let compressedBody = await compressBody(JSON.stringify(body));

然后我可以将这个compressedBody var分配给webervice调用...

 var promise = fetch(ServiceUrl, {method: 'POST', headers:headers, body:compressedBody}).then((result) => result.json() );

然后您将需要更改服务器端代码以接受压缩主体。我使用Express并执行以下操作...

var BodyParser = require('body-parser');
require('body-parser-zlib')(BodyParser);

var app = express();

// Other code....
app.use(BodyParser.zlib()); // support json encoded bodies
app.use(BodyParser.json({"inflate": true})); // support json encoded bodies
© www.soinside.com 2019 - 2024. All rights reserved.