我想将压缩的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"
})
);
根据此数据进行压缩的方法是什么,它有意义吗?
提前感谢!
我已经使用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