gzip された POST データを Express で受け入れることができるサーバーを構築しようとしています。リクエスト ストリームを zlib.createGunzip() ストリームにパイプする独自のミドルウェアを作成するだけでよいと思います。問題は、その後、express.bodyParser() ミドルウェアがガンジップされた POST データを解析できるようにするにはどうすればよいかということです。
元のリクエスト ストリーム メソッドを zlib ストリームのメソッドに置き換えようとしましたが、bodyParser が「Bad Request」エラーを返すようになりました。
var express = require('express');
var app = express();
function gUnzip(req, res, next) {
var newReq;
if (req.headers['content-encoding'] === 'gzip') {
console.log("received gzipped body");
newReq = req.pipe(zlib.createGunzip());
Object.getOwnPropertyNames(newReq).forEach(function (p) {
req[p] = newReq[p];
});
}
next();
}
app.use(gUnzip);
app.use(express.bodyParser());
app.listen(8080);
自分のミドルウェア内で bodyParser() ミドルウェアを書き直さずにこれを機能させる方法はありますか?
編集: これは同じ質問です: POST 本文を node + express で解凍します。しかし、答えでは、彼は自分のミドルウェアで、express.bodyParser() がすべきことを行うだけです。これは私が避けたいことです。http://www.senchalabs.org/connect/json . html .