Node.js Express 获取request原始数据

app.use(bodyParser.json());
客户端请求接口时如果指名请求头类型 为Content-Type=application/json
bodyParser 会自动将 body 里的 json 格式数据正确解析,

// bodyParser 依赖 raw-body 库,raw-body库里面有这样一段代码

function cleanup() {

   received = buffer = null

   stream.removeListener('data', onData)

   stream.removeListener('end', onEnd)

   stream.removeListener('error', onEnd)

   stream.removeListener('close', cleanup)

}

  


这样导致在express里面req监听on, end事件是不会执行的.要想在express里面拿到request的原始数据

可以再注册bodyPaser之前先把原始数据保存起来.代码如下:

app.use(function(req, res, next){

    var reqData = [];

    var size = 0;

    req.on('data', function (data) {

        console.log('>>>req on');

       reqData.push(data);

        size += data.length;

    });

    req.on('end', function () {

        req.reqData = Buffer.concat(reqData, size);

    });

    next();

});



app.use(bodyParser.json());

app.use(bodyParser.urlencoded());

  

 

你可能感兴趣的:(node.js)